2

我在家中设置了一个 Ubuntu 服务器,用于托管由 nodejs 提供的 Web 应用程序。我的服务器上有一个连接应用程序。当我 ssh 进入并做类似的事情时

node app.js &> server.log &
logout

然后在我注销后,服务器就像被搁置了,它不会处理任何请求,但是当我 ssh 回来时,它会再次开始处理请求。

所以看起来forever包就是为了解决这个问题而设计的。所以永远安装并且正在这样做:

forever start -al forever.log -ao serverout.log -ae servererror.log app.js

我从这个命令得到相同的结果。我的服务器将在我进入 ssh 时为请求提供服务,但是一旦我注销我的服务器就会停止为请求提供服务。我还能做些什么来解决这个问题?

4

2 回答 2

0

考虑使用cron. 您可以crontab在没有任何选项的情况下在 bash 中运行以获取您帐户的 cron 配置。您可能需要 root 访问权限,然后必须使用 -u 选项指定用户帐户。有关您的发行版实施的更多信息,请参阅man crontab

我敢肯定那里有更好的,但这关于 cron 语法的不错的教程。

于 2012-09-17T05:25:25.240 回答
0

我不会为此使用 Forever,而是像Supervisord和 Monit 这样的生产就绪工具,请参阅在单个服务器上运行和管理 nodejs 应用程序

对于您的每个应用程序,只需创建一个主管配置文件,如下所示:

[program:myapp]
command=node myapp.js                   ; the program (relative uses PATH, can take args)
directory=/www/app/                     ; directory to cwd to before exec (def no cwd)
process_name=myapp                      ; process_name expr (default %(program_name)s)
autorestart=true                        ; whether/when to restart (default: unexpected)
startsecs=1                             ; number of secs prog must stay running (def. 1)
stopwaitsecs=10                         ; max num secs to wait b4 SIGKILL (default 10)
stdout_logfile=/var/log/myapp.log       ; stdout log path, NONE for none default AUTO
stderr_logfile=/var/log/myapp.err.log   ; stderr log path, NONE for none default AUTO

更多信息:Brin.gr 的 NodeJS 进程管理

于 2012-09-17T10:52:38.507 回答