web-dev-qa-db-fra.com

Pourquoi mon processus d'application de nœud continue-t-il à être arrêté quand j'utilise pour toujours?

Sur une instance Amazon EC2 de niveau libre, j'ai configuré une simple application node.js Hello World s'exécutant sur express.

Si j'exécute npm start, mon application fonctionne correctement et je peux y accéder à partir de mon navigateur. La sortie suivante s'affiche:

> [email protected] start /home/ec2-user/app
> node ./bin/www

J'ai installé l'outil forever pour le monde entier. Quand je lance forever start app.js, je vois:

warn:    --minUptime not set. Defaulting to: 1000ms
warn:    --spinSleepTime not set. Your script will exit if it does not stay up for at least 1000ms
info:    Forever processing file: app/app.js

Cependant, lorsque je vérifie forever list, je constate que le processus est arrêté:

info:    Forever processes running
data:        uid  command             script forever pid  id logfile                          uptime  
data:    [0] 2v0J /usr/local/bin/node app.js 2455    2457    /home/ec2-user/.forever/2v0J.log STOPPED 

C'est le seul message du journal: error: Forever detected script was killed by signal: null

Je ne parviens pas à trouver d'autres informations de journal. Pourquoi s'arrête-t-il immédiatement?

EDIT: J'ai essayé de l'exécuter en tant que Nohup forever start app.js et j'ai le même problème. J'utilise le forever start et le forever list dans la même session ssh, l'un après l'autre. Le processus de l'application semble s'arrêter immédiatement.

13
Joel The Wizard

J'ai pu résoudre mon problème grâce à cette réponse à une question similaire: https://stackoverflow.com/a/24914916/1791634

Le processus continuait à fonctionner lorsque j'ai utilisé forever start ./bin/www au lieu de transmettre app.js

Il reste à voir si cela causera des problèmes plus tard.

4
Joel The Wizard

Je suppose que le processus s'arrête après que vous vous êtes déconnecté de ssh?

Essayez de courir pour toujours avec Nohup en premier.

Nohup forever start app.js

Lorsque vous vous déconnectez de ssh, le serveur tue tous les processus enfants de votre shell. Nohup déconnecte un processus de son Shell parent.

6
Daniel

Pour moi, je devais utiliser "Sudo pour toujours" pour que cela fonctionne.

1
Erik Villegas