2012-09-13 32 views
2

为了托管由nodejs提供服务的Web应用程序,我在家中设置了一个Ubuntu服务器。我的服务器上有一个连接应用程序。当我ssh的,只是这样做为什么永远不能在注销后继续运行我的nodejs进程?

node app.js &> server.log & 
logout 

后来我一注销服务器就像是暂时搁置,也不会起到任何要求,但是当我通过SSH回到它开始再次请求提供服务。

所以它看起来像永远包被设计来解决这个问题。所以永远安装,我这样做:

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

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

+1

你可以尝试在'screen'会话或'byobu'中运行你的服务器吗? – rdrey

+0

我尝试过屏幕,但我的屏幕会话在注销时结束。尽管如此,我还没有尝试过byobu。我也尝试了nohup,并没有成功地使用它。 – justspamjustin

+0

你找到了这个答案吗?我也面临同样的问题。 – Bhoomi

回答

0

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

我确定有更好的方法,但this是一个体面的cron语法教程。

0

我不会使用Forever for this,但可以使用生产工具,如带有Monit的Supervisord,请参阅Running and managing nodejs applications on single server

对于每个应用程序只需要创建一个这样的超级配置文件:

[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 

更多信息:NodeJS process management at Brin.gr

相关问题