【问题标题】:Why is forever not working to keep my nodejs process running after I logout?为什么在我注销后永远无法保持我的 nodejs 进程运行?
【发布时间】:2012-09-06 02:31:36
【问题描述】:

我在家中设置了一个 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 时,我的服务器将处理请求,但是一旦我注销,我的服务器就会停止处理请求。我还能做些什么来解决这个问题?

【问题讨论】:

  • 您可以尝试在screen 会话或byobu 中运行您的服务器吗?
  • 我已经尝试过 screen,但我的 screen 会话在我注销时结束。不过我还没有尝试过byobu。我也尝试过 nohup 并无法成功使用。
  • 你找到答案了吗?我也面临同样的问题。

标签: node.js ssh forever


【解决方案1】:

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

我确信那里有更好的,但this 是一个不错的 cron 语法教程。

【讨论】:

    【解决方案2】:

    我不会为此使用 Forever,而是使用像 Supervisord 和 Monit 这样的生产就绪工具,请参阅 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.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-03-13
      • 1970-01-01
      • 1970-01-01
      • 2021-07-06
      • 1970-01-01
      • 2014-12-18
      • 2015-02-01
      相关资源
      最近更新 更多