当我永远使用时,为什么我的节点应用程序进程会一直停止?

时间:2014-11-01 22:52:46

标签: node.js amazon-web-services amazon-ec2 forever

在免费的Amazon EC2实例上,我设置了一个在express上运行的简单node.js Hello World应用程序。

如果我运行npm start,我的应用运行正常,我可以从浏览器点击它,我看到以下输出:

> myappname@0.0.0 start /home/ec2-user/app
> node ./bin/www

我已在全球范围内安装了永久工具。当我运行forever start app.js时,我看到了:

warn:    --minUptime not set. Defaulting to: 1000ms
warn:    --spinSleepTime not set. Your script will exit if it does not stay up for at least 1000ms
info:    Forever processing file: app/app.js

但是,当我检查forever list时,我发现该进程已停止:

info:    Forever processes running
data:        uid  command             script forever pid  id logfile                          uptime  
data:    [0] 2v0J /usr/local/bin/node app.js 2455    2457    /home/ec2-user/.forever/2v0J.log STOPPED 

这是日志中唯一的消息:error: Forever detected script was killed by signal: null

我无法找到任何其他日志信息。为什么它会立即停止?

编辑:我尝试将其作为nohup forever start app.js运行并遇到了同样的问题。我在同一个ssh会话中一个接一个地运行forever startforever list。该应用程序的过程似乎立即停止。

4 个答案:

答案 0 :(得分:6)

我猜你从ssh断开连接后进程停止了吗?

首先尝试使用nohup永远运行。

nohup forever start app.js

当您从ssh断开连接时,服务器会终止所有shell的子进程。 nohup将进程与其父shell断开连接。

答案 1 :(得分:4)

由于在类似问题上的答案,我能够解决我的问题: https://stackoverflow.com/a/24914916/1791634

当我使用forever start ./bin/www而不是传递app.js

时,该过程一直在运行

这是否会引起任何麻烦还有待观察。

答案 2 :(得分:1)

对我而言,我必须永远使用“sudo”来工作。

答案 3 :(得分:0)

如果在更新代码后启动服务器。拉取最新代码并运行

npm install

现在运行

forever start app.js

这将解决问题