Estou tentando iniciar um aplicativo nodejs com forever
( forever
simplesmente reinicia o programa se ele falhar), mas o forever
em si não é iniciado automaticamente na inicialização. Então, estou usando o upstart para inicializar forever
.
Eu tentei centenas de maneiras de conseguir isso (muitas tentativas de tentativa e erro), mas nada realmente parece funcionar para mim. Então, meus cenários são:
- Estou executando uma instância do Amazon Linux
- O aplicativo funciona muito bem se estiver executando a partir da linha de comando (para sempre também está funcionando e é iniciado)
- Estou testando com
sudo start prv
Aqui está o script que eu tenho até agora (prv.conf, at /etc/init/prv.conf
):
author "Renato Gama"
description "PRV"
start on runlevel [235]
stop on shutdown
respawn
export HOME="/home/ec2-user/prv/app"
exec su -c "/usr/bin/forever start -l forever.log -o /home/ec2-user/prv/logs/out.log -e /home/ec2-user/prv/logs/err.log --append /home/ec2-user/prv/app.js" root | logger -t PRV
No FACT, na linha de comando, posso iniciar o aplicativo digitando o seguinte (e isso funciona como esperado):
cd /home/ec2-user/prv
sudo su -p (altough I am not using any specific env variable)
forever start -l f.log -o out.log -e err.log --append app.js
PS1.: Eu nem testei na inicialização real, pois nem funciona com sudo start prv
PS2.: Se eu visitar o log, ele não diz muito (saiu normalmente). Parte do log está em esta essência
PS3.: Depois de executar sudo start prv
, recebi este
[ec2-user@ip-10-252-146-14 ~]$ sudo start prv
prv start/running, process 11477
Mas quando tento verificar se o meu processo está sempre funcionando, ele diz:
[ec2-user@ip-10-252-146-14 ~]$ sudo forever list
info: No forever processes running
PS4 .: Meu aplicativo se vincula à porta 80
, por isso preciso de um usuário privilegiado para executar isso.
EDIT: Tenho quase certeza que o problema é que estou recebendo erro EACCESS na porta 80