У меня есть удаленный сервер, на котором я обслуживаю веб-сервер, используя node (express) и nginx. у меня есть ./devops/deploy.sh
скрипт, который запускает веб-сервер и перезапускает nginx. Указанный скрипт работает правильно, если я вручную подключаюсь к экземпляру (ssh <пользователь>@<ip>
), а затем запустить
компакт-диск с моим репозиторием
git тянуть
./devops/deploy.sh
Однако я не могу настроить скрипт, который автоматизирует это. Я пробовал с этим скриптом
#!/бин/баш
установить -euo pipefail
Применение() {
кошка << EOF
Использование: ./devops/update-instance.sh <user@ip>
EOF
выход -1
}
CONNECTION_STRING=${1:-""}
если [-z $CONNECTION_STRING]; тогда
Применение
фи
ssh -t $CONNECTION_STRING << EOF
компакт-диск с моим репозиторием
git тянуть
./devops/deploy.sh
EOF
но это дает мне nohup: не удалось запустить команду «узел»: нет такого файла или каталога
. Это сценарий развертывания, который я запускаю локально со своей машины.
#!/бин/баш
установить -euo pipefail
lsof -ti:3000 && убить $(lsof -ti:3000)
эхо бар
эхо $(узел -v)
Nohup node runner.js &
NGINX_CONFIG_PATH=/etc/nginx/sites-enabled/my-repo
rm -rf $NGINX_CONFIG_PATH
cp devops/nginx-config $NGINX_CONFIG_PATH
нгинкс -т
nginx -s перезагрузить
узел runner.js
просто запускает экспресс-приложение, так что ничего странного.
То, чего я хочу достичь, очень похоже на этот другой пост https://askubuntu.com/questions/349262/run-a-nohup-command-over-ssh-then-disconnect но об этой ошибке nohup + node не упоминается.
Посмотрев на него, я понял, что, скорее всего, я делаю что-то не так в том, как я называю свой сценарий развертывания, но я действительно не понимаю, что это может быть. В сценарии обновления я пытался сделать nohup ./devops/deploy.sh &
а не просто ./devops/deploy.sh
но получил то же самое nohup: не удалось запустить команду «узел»: нет такого файла или каталога
ошибка.
Если я помещу содержимое ./devops/deploy.sh
сценарий внутри ssh ... << EOF <содержимое здесь> EOF
Я также получаю то же самое nohup: не удалось запустить команду «узел»: нет такого файла или каталога
ошибка
Переключил команду ssh на
экспортировать NVM_DIR="\$HOME/.nvm"
\. "\$NVM_DIR/nvm.sh"
\. "\$NVM_DIR/bash_completion"
компакт-диск с моим репозиторием
git тянуть
nohup ./devops/deploy.sh 1>api.stdout 2>api.stderr &