Am un server la distanță în care servesc un server web folosind node (express) și nginx. Am un ./devops/deploy.sh
script care pornește serverul web și repornește nginx. Scriptul respectiv funcționează corect dacă mă conectez manual la instanță (ssh <utilizator>@<ip>
) și apoi alergați
cd my-repo
git pull
./devops/deploy.sh
Totuși, nu pot configura un script care automatizează acest lucru. Am incercat cu acest script
#!/bin/bash
set -euo pipefail
utilizare() {
pisica << EOF
Utilizare: ./devops/update-instance.sh <user@ip>
EOF
ieșire -1
}
CONNECTION_STRING=${1:-""}
dacă [ -z $CONNECTION_STRING ]; atunci
utilizare
fi
ssh -t $CONNECTION_STRING << EOF
cd my-repo
git pull
./devops/deploy.sh
EOF
dar îmi dă nohup: nu a reușit să ruleze comanda „node”: nu există un astfel de fișier sau director
. Acesta este scriptul de implementare pe care îl rulez local de pe mașina mea
#!/bin/bash
set -euo pipefail
lsof -ti:3000 && ucide $(lsof -ti:3000)
bara de ecou
echo $(nodul -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 -t
nginx -s reîncărcare
node runner.js
pur și simplu pornește o aplicație expres, așa că nimic ciudat acolo.
Ceea ce vreau să obțin este foarte asemănător cu această altă postare https://askubuntu.com/questions/349262/run-a-nohup-command-over-ssh-then-disconnect dar nu se menționează această eroare nohup + nod.
După ce l-am privit, mi-am dat seama că, cel mai probabil, fac ceva greșit în modul în care îmi numesc scriptul de implementare, dar nu înțeleg cu adevărat ce ar putea fi. În scriptul de actualizare am încercat să fac nohup ./devops/deploy.sh &
în loc de simplu ./devops/deploy.sh
dar a primit la fel nohup: nu a reușit să ruleze comanda „node”: nu există un astfel de fișier sau director
eroare.
Dacă pun conținutul ./devops/deploy.sh
script în interiorul ssh ... << EOF <conținut aici> EOF
Si eu primesc la fel nohup: nu a reușit să ruleze comanda „node”: nu există un astfel de fișier sau director
eroare
S-a comutat comanda ssh la
export NVM_DIR="\$HOME/.nvm"
\. „\$NVM_DIR/nvm.sh”
\. „\$NVM_DIR/bash_completion”
cd my-repo
git pull
nohup ./devops/deploy.sh 1>api.stdout 2>api.stderr &