Node.js - 无法永久运行节点服务器

时间:2013-05-23 13:29:39

标签: node.js forever

我正在尝试使用forever命令运行节点服务器。 我使用以下方式全球安装:

npm install forever -g

永远安装后,我尝试使用以下命令运行我的节点脚本:

node_modules\.bin\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 f
or at least 1000ms
info:    Forever processing file: app.js

请帮我解决这个问题!

8 个答案:

答案 0 :(得分:6)

除了永远建议您声明的配置警告之外,这里没有问题。如果你在那里看到最后的消息,它会告诉你它已经处理了你的脚本。只需运行forever list即可看到您的脚本正在运行。

我在通过yum repository(yum install npm)安装npm然后永远安装时遇到了同样的事情,而当我通过shell脚本安装node和npm然后永远安装时,它不会发生。它必须与程序包安装程序的公式有关,或者可能缺少带有安装程序标志的别名,以便在场景后面设置这些值。

那些并不意味着它不起作用。请参阅下文我使用节点站点中的示例代码创建了一个js文件并手动运行(我刷新防火墙暂时为应用程序打开端口,但您不需要):

[root@app1 ~]# vi example.js
[root@app1 ~]# apf -f
apf(23924): {glob} flushing & zeroing chain policies
apf(23924): {glob} firewall offline
[root@app1 ~]# node example.js 
Server running at http://127.0.0.1:1337/

然后我永远使用启动应用程序:

^C[root@app1 ~]# forever start example.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: example.js

现在我检查我的应用是否正在运行:

[root@app1 ~]# forever list
info:    Forever processes running
data:        uid  command       script     forever pid   logfile                 uptime       
data:    [0] dan1 /usr/bin/node example.js 23976   23978 /root/.forever/dan1.log 0:0:0:27.320 
[root@app1 ~]#

答案 1 :(得分:2)

这解决了我的问题:

forever start -c node [path/to/app]

" -c"意思是 - 运行commnad;然后只通过nodejs

运行

这样 - 默认情况下你得到Respawn为min。 1000毫秒正常运行时间

取自:https://github.com/nodejitsu/forever/issues/422," Basarat"

答案 2 :(得分:1)

首先停止所有正在运行的应用:

forever stopall

然后使用此命令。它对我有用并解决了我的问题:

forever -w ./bin/www

你应该在package.json文件中找到它:

"scripts": {
    "start": "node ./bin/www"
  }

我希望它可以帮到你。

答案 3 :(得分:0)

如果forever无法写入指定的日志文件,那么也会生成相同类型的输出,但不启动应用程序的一件事。我有一个案例,日志文件变得太大,这阻止了进程的启动。

答案 4 :(得分:0)

  

首先更改你的package.json脚本,如

"scripts": {
      "start": "forever ./bin/www.js"
 }
  

在linux控制台上启动此命令:sudo npm start

     

for windows just:npm start

答案 5 :(得分:0)

如果您使用带有快速框架的节点js,那么脚本将不会开始使用:

forever start app.js

首先停止所有正在运行的应用:

forever stopall

当使用此Express框架时,必须以:

开头
forever start ./bin/www

答案 6 :(得分:0)

我今天刚刚在AWS Lightsail服务器上遇到了这个问题,这里或其他地方的答案都没有任何作用。从NodeJS 10.x升级到13.x之前,一切工作正常。我尝试永久删除并重新安装,更改文件和目录的权限等,但我不断收到EACCES错误。问题似乎是,永远无法在其.forever目录中创建目录。唯一有效的方法是执行以下操作:

1)删除.forever文件夹及其所有子文件夹和内容。对我来说,这是通过以下方式实现的: 须藤rm -rf /home/bitnami/.forever

2)手动重新创建.forever文件夹: 须藤mkdir /home/bitnami/.forever

3)手动设置.forever文件夹的权限: 须藤chmod -R o + rwx /home/bitnami/.forever

4)手动重新创建.forever / pids文件夹: 须藤mkdir /home/bitnami/.forever/pids

5)手动设置.forever / pids文件夹的权限: 须藤chmod -R o + rwx /home/bitnami/.forever/pids

6)手动重新创建.forever / sock文件夹: 须藤mkdir /home/bitnami/.forever/sock

7)手动设置.forever / sock文件夹的权限: 须藤chmod -R o + rwx /home/bitnami/.forever/sock

8)使用sudo命令再次永久运行我的NodeJS应用。

9)列出永远运行的进程,并确认我的应用程序在那里。

我不确定为什么必须经历所有这些,因为递归设置权限应该做同样的事情,但是这样做之后,永远都可以像以前一样完美地运行。

希望这对某人有帮助。

答案 7 :(得分:-7)

如果你设置了一个模块globaly(-g选项),“forever”就在$ path

forever start app.js

应该有用。