Por que meu aplicativo nodejs não está sempre começando com o Upstart na instância do EC2?

1

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

    
por Renato Gama 03.04.2013 / 18:49

1 resposta

1

Como mostrado no init (5), a linha de exportação é inválida (a sintaxe Upstart não é shell). Você precisa especificar:

env HOME="..."
export HOME

Por favor, veja:

Além disso,

  • remova o respawn até que seu trabalho funcione como você espera
  • remover 'su'
  • remover o 'logger'

Finalmente,

Procure no arquivo /var/log/upstart/yourjob.log pela saída do trabalho.

    
por 04.04.2013 / 18:14