2016-11-04 3 views
0

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.

Antwort

0

Ich habe festgestellt, dass die billigen (oder freien) AWS VMs CPU/Netzwerk gedrosselt haben, was dazu führte, dass npm-Installationen usw. fehlschlagen. Vielleicht verwenden Sie eine VPS, die ein besserer Wert ist oder versuchen Sie yarn. Mach es auch die npm-Sachen in eine Datei statt dev/null zu protokollieren.

+0

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

0

Es stellte sich heraus, dass ich npm und node durch nvm installiert ist, und dass NVM fügt ein Skript .bashrc, die diese Bibliotheken geladen werden. Um mein Skript beim Neustart zu starten, verwendete ich Cron, das nicht .bashrc beschafft. Darüber hinaus beginnt die Standardeinstellung .bashrc auf AWS EC2 ubuntu-Instanzen mit einer Prüfung, ob sie von einem Terminal aus ausgeführt wurde oder nicht, und entkommt ihr, sie wurde nicht von einem Terminal ausgeführt. Das Sourcing von Cron hat keine Wirkung.

Ich sah, dass sich seit dem Scheitern Linie

cd server && npm install && npm run build && npm run start 

nichts Anmeldung wurde

I ended manuell den Pfad zu npm Sourcing und node

Verwandte Themen