Script simples de upstart para nodejs + forever no Ubuntu

4

Estou usando o Ubuntu Sever 12.04. Eu tenho um aplicativo nodejs que eu quero executar da seguinte forma:

NODE_ENV=production PORT=3001 APP_PATH=/var/www/myapp forever -a -l /var/www/myapp/forever.log -o /var/www/myapp/out.log -e /var/www/myapp/err.log /var/www/myapp/app.js

Eu quero executá-lo na inicialização do sistema e 'para sempre stopall' no desligamento do sistema. Eu li que a maneira preferida de fazer isso é usando scripts iniciantes. Foi o que tentei:

description "Upstart script"

start on startup
stop on shutdown

expect fork

env MYAPP_PATH="/var/www/myapp"

script

    NODE_ENV=production PORT=3001 APP_PATH=$MYAPP_PATH exec forever -a -l $MYAPP_PATH/forever.log -o $MYAPP_PATH/out.log -e $MYAPP_PATH/err.log  $MYAPP_PATH/app.js

end script

pre-stop script

    exec forever stop $MYAPP_PATH/app.js >> $LOG

end script

Ele trava quando eu o executo e depois diz que o trabalho já está em execução (quando na verdade não está).

Qualquer conselho de como fazer isso corretamente é apreciado. Obrigado!

    
por Svilen 12.05.2013 / 01:22

1 resposta

5

description "Upstart script"

start on filesystem and started networking

FYI: não use "iniciar na inicialização" .

stop on shutdown

expect fork

# Let's make sure we always have the right directory
chdir /var/www/myapp

env MYAPP_PATH="/var/www/myapp"
env NODE_ENV=production
env PORT=3001
# Is there a reason you didn't do this?
env APP_PATH=$MYAPP_PATH

script
  # Shell trick to re-direct this script's STDOUT/STDERR
  exec 2>> forever.log 1>> forever.log
  # You forgot the 'start' command. Without it, it doesn't fork.
  exec forever start -a -l forever.log -o out.log -e err.log app.js
end script

pre-stop script
  # Shell trick to re-direct this script's STDOUT/STDERR
  exec 2>> forever.log 1>> forever.log
  exec forever stop app.js
end script
    
por 18.05.2013 / 05:41