在Ubuntu上永远是nodejs +的简单新贵脚本

我正在使用Ubuntu Sever 12.04。 我有一个nodejs应用程序,我想这样运行:

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 

我想在系统启动时运行它,并在系统closures时“永久停止”。 我读过,首选的方法是使用暴发户脚本。 这就是我所尝试的:

 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 

它在我运行时会挂起,然后它说那个作业已经在运行(当它实际上不是)时。

任何build议如何做到这一点是值得赞赏的。 谢谢!

 description "Upstart script" start on filesystem and started networking 

仅供参考: 不要使用“启动时启动” 。

 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