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.
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.
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.
Pour moi, je devais utiliser "Sudo pour toujours" pour que cela fonctionne.