ฉันมีเซิร์ฟเวอร์ระยะไกลที่ฉันให้บริการเว็บเซิร์ฟเวอร์โดยใช้โหนด (ด่วน) และ nginx ฉันมี ./devops/deploy.sh
สคริปต์ที่เริ่มต้นเว็บเซิร์ฟเวอร์และรีสตาร์ท nginx สคริปต์ดังกล่าวทำงานได้อย่างถูกต้องหากฉันเชื่อมต่อกับอินสแตนซ์ด้วยตนเอง (ssh <ผู้ใช้>@<ip>
) แล้วเรียกใช้
cd my-repo
คอมไพล์ดึง
./devops/deploy.sh
ฉันไม่สามารถตั้งค่าสคริปต์ที่ทำให้สิ่งนี้เป็นไปโดยอัตโนมัติได้ ฉันลองกับสคริปต์นี้
#!/bin/bash
ตั้ง -euo ไปป์ไลน์
การใช้งาน () {
แมว << EOF
การใช้งาน: ./devops/update-instance.sh <user@ip>
อฟ
ทางออก -1
}
CONNECTION_STRING=${1:-""}
ถ้า [ -z $CONNECTION_STRING ]; แล้ว
การใช้งาน
ไฟ
ssh -t $CONNECTION_STRING << EOF
cd my-repo
คอมไพล์ดึง
./devops/deploy.sh
อฟ
แต่มันทำให้ฉัน nohup: ไม่สามารถเรียกใช้คำสั่ง 'โหนด': ไม่มีไฟล์หรือไดเร็กทอรีดังกล่าว
. นี่คือสคริปต์การปรับใช้ที่ฉันเรียกใช้ในเครื่องจากเครื่องของฉัน
#!/bin/bash
ตั้ง -euo ไปป์ไลน์
lsof -ti:3000 && ฆ่า $(lsof -ti:3000)
แถบเสียงสะท้อน
เสียงสะท้อน $ (โหนด -v)
nohup โหนด 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 โหลดซ้ำ
โหนดรันเนอร์.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"
cd my-repo
คอมไพล์ดึง
nohup ./devops/deploy.sh 1>api.stdout 2>api.stderr &