Ich versuche, eine Express-App starten, wenn meine ec2-Maschine startet. Ich habe einen Startup-Skript, das ist:EC2 Ubuntu starten Knoten Server beim Neustart funktioniert nicht
#!/bin/bash
echo "will reroute traffic" >> /home/ubuntu/log.logs
sudo iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
sudo iptables -A INPUT -p tcp -m tcp --sport 80 -j ACCEPT
sudo iptables -A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT
echo "will kill node" >> /home/ubuntu/log.logs
if pgrep node &> /dev/null ; then killall -KILL node ; fi
if pgrep nodejs &> /dev/null ; then killall -KILL nodejs ; fi
echo "will run node server" >> /home/ubuntu/log.logs
cd server && npm install && npm run build && npm run start </dev/null &>/dev/null &
echo "has run node server" >> /home/ubuntu/log.logs
Wenn ich es von der Konsole starten, beginnt die Server, Ausfahrten und der Server läuft gut.
es zu starten, habe ich diese Zeilen zu /etc/rc.local
hinzugefügt:
rm -f /home/ubuntu/log.logs
echo "will run" >> /home/ubuntu/log.logs
/bin/bash /home/ubuntu/startup.sh
echo "has run" >> /home/ubuntu/log.logs
Nach dem Neustart wird der Server nicht reagiert, und es sieht aus wie es noch nicht begonnen hat (die Server-Logs Ticks beim Laufen, die nicht dort)
die Ausgabe in log.logs
sieht gut aus:
will run
will will reroute traffic
will kill node
will run node server
has run node server
has run
so alles ausgeführt worden zu sein scheint, aber der Knoten App läuft nicht, was ich bestätigt habe, indem ich top | grep node
ausgeführt habe, die nichts zurückgibt.
Guter Rat auf Protokollierung. Es stellte sich heraus, dass root nichts über npm weiß, selbst wenn ich root geworden bin, führe ich das Skript als "ubuntu" aus: 'su -c ./startup.sh - ubuntu' löst den Fehler' npm: command not found' aus – Guig