Я пытаюсь развернуть сервер node js на удаленной машине с помощью перехватчика после фиксации, который вызовет скрипт на удаленной машине, который выполняет фактическое развертывание.
Проблема, с которой я сталкиваюсь, заключается в том, что если я запускаю удаленный скрипт на машине, он работает нормально, но когда я пытаюсь выполнить тот же скрипт с помощью команды ssh, сервер не запускается.
Вот как выглядит мой хук после фиксации:
#!/bin/bash
#Connect to AWS machine and run deploy script
ssh -i ~/Documents/aa-kp-inst1.pem ubuntu@<remote-ip> "sh /home/app/deploy.sh"
#Done
exit 0
Довольно просто. А вот так выглядит deploy.sh:
#!/bin/bash
#Navigate to server directory
cd /home/app/personal_website/server
#Stop currently running server(s)
forever stop -s 0 >> forever.log
#Pull latest code
unset GIT_DIR
git -C /home/app/personal_website/server pull --quiet
#Restart server
forever start -a -l forever.log -o out.log -e err.log server.js
#End
exit 0
Я вижу разницу в процессах, запускаемых при непосредственном запуске deploy.sh и при запуске через ssh.
Вот как выглядит ps-ef | grep node
, когда я запускаю deploy.sh непосредственно на удаленной машине:
ubuntu 14058 1 3 04:26 ? 00:00:00 /usr/bin/nodejs /usr/lib/node_modules/forever/bin/monitor server.js
ubuntu 14064 14058 2 04:26 ? 00:00:00 /usr/bin/nodejs /home/app/personal_website/server/server.js
ubuntu 14071 10791 0 04:27 pts/0 00:00:00 grep --color=auto node
И это то, что я получаю, когда я запускаю его из ssh:
ubuntu 13435 1 14 04:19 ? 00:00:00 /usr/bin/nodejs /usr/lib/node_modules/forever/bin/monitor server.js
ubuntu 13444 10791 0 04:19 pts/0 00:00:00 grep --color=auto node
Любая идея о том, что может быть причиной этого? Почему при запуске из ssh запускается только процесс монитора?
Как было сказано в комментарии: env
с машины напрямую:
XDG_SESSION_ID=31
TERM=xterm-256color
SHELL=/bin/bash
SSH_CLIENT=97.83.204.67 58752 22
SSH_TTY=/dev/pts/2
USER=ubuntu
MAIL=/var/mail/ubuntu
PATH=/usr/local/heroku/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
PWD=/home
LANG=en_US.UTF-8
NODE_PATH=/usr/lib/nodejs:/usr/lib/node_modules:/usr/share/javascript
SHLVL=1
HOME=/home/ubuntu
LOGNAME=ubuntu
SSH_CONNECTION=97.83.204.67 58752 172.31.7.96 22
LESSOPEN=| /usr/bin/lesspipe %s
XDG_RUNTIME_DIR=/run/user/1000
LESSCLOSE=/usr/bin/lesspipe %s %s
_=/usr/bin/printenv
OLDPWD=/home/exps
env
из ssh:
XDG_SESSION_ID=32
SHELL=/bin/bash
SSH_CLIENT=97.83.204.67 58966 22
USER=ubuntu
MAIL=/var/mail/ubuntu
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
PWD=/home/ubuntu
LANG=en_US.UTF-8
SHLVL=1
HOME=/home/ubuntu
LOGNAME=ubuntu
SSH_CONNECTION=97.83.204.67 58966 172.31.7.96 22
XDG_RUNTIME_DIR=/run/user/1000
_=/usr/bin/printenv