为什么我的nodejs应用程序永远不能从EC2实例的Upstart开始?

我试图启动一个nodejs应用程序foreverforever只是重新启动程序,如果崩溃),但forever不会自动启动引导。 所以我使用暴发户forever初始化。

我已经尝试了数百种方式来达到这个目的(许多尝试和错误尝试),但是对我来说似乎没有什么效果。 所以我的情况是:

  • 我正在运行一个Amazon Linux实例
  • 如果从命令行运行的应用程序效果很好(永远在工作,也是新贵)
  • 我正在testing与sudo start prv

这是我到目前为止的脚本(prv.conf,位于/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 

事实上,从命令行我可以通过键入以下(并按预期工作)启动应用程序:

 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:我甚至没有在真正的启动testing,因为它甚至不能用sudo start prv
PS2:如果我访问日志,它不会告诉太多(正常退出)。 日志的一部分就在这个要点
PS3:执行sudo start prv我得到了这个

 [ec2-user@ip-10-252-146-14 ~]$ sudo start prv prv start/running, process 11477 

但是,当我试图检查是否永远运行我的进程,它说:

 [ec2-user@ip-10-252-146-14 ~]$ sudo forever list info: No forever processes running 

PS4 .:我的应用程序绑定到端口80这就是为什么我需要一个特权用户来运行这个。

编辑:我几乎可以肯定的问题是,我得到端口80 EACCESS错误

如init(5)所示,导出行无效(Upstart语法不是shell)。 你需要指定:

 env HOME="..." export HOME 

请参见:

也,

  • 删除respawn,直到你的工作按照你的预期工作
  • 删除“su”
  • 删除“logging器”

最后,

在文件/var/log/upstart/yourjob.log查找作业输出。