【问题标题】:How do I start Foreman server on background on production?如何在生产的后台启动 Foreman 服务器?
【发布时间】:2015-10-24 12:19:46
【问题描述】:

我已经使用带有 Digital Ocean 的 Ubuntu 服务器在 VPS 上成功部署了我的 rails 应用程序。我正在使用工头启动许多进程,如果我 ssh 进入我的服务器,我可以使用 foreman start 启动我的工头服务器,但是当我关闭终端时,所有进程都会停止。如何让它在后台连续运行?

提前致谢。

【问题讨论】:

    标签: ruby-on-rails ruby digital-ocean foreman


    【解决方案1】:

    更好的问题是“如何将 Rails 应用程序作为服务运行?”。

    Foreman 是一款出色的开发工具,但它不提供进程监督、服务器启动时自动启动、日志轮换或使用 Unix 信号管理进程的能力。

    如果您的 Ubuntu 是 15.04,那么您已经安装了 systemd,并且应该使用它。 Foreman 甚至可以通过foreman export systemd 导出您的配置(请参阅the foreman manpage)。
    如果您的 Ubuntu 比这更旧,您将拥有 Upstart,Foreman 可以再次将其导出到 (foreman export upstart)。

    使用 nohup、screen 或 tmux 来运行进程是可怕的建议,即使在短期内也会让你的生活变得不必要地困难。

    【讨论】:

    • 这不是真的。我的开发机器的后台需要工头。主要是因为我想要一个执行 git pull; rake db:migrate 但需要我的 postgresql、redis 等在发生这种情况时运行的迁移脚本。 bash 脚本会执行 foreman start -f updateonly.yml &; PID=$? 然后在完成时 kill $PID 但是工头很愚蠢,需要一个 tmux 或屏幕实例。认真的WTF?那怎么组合?! (Unix 组合规则)
    【解决方案2】:
    • ssh 进入远程机器
    • 在 shell 中输入 tmux 来启动 tmux
    • 在已启动的 tmux 会话中启动您想要的进程
    • 通过按 Ctrl+B 然后按 D 离开/分离 tmux 会话

    您现在可以安全地从远程计算机注销,您的进程将继续在 tmux 中运行。当您再次返回并想要检查进程状态时,您可以使用 tmux attach 附加到您的 tmux 会话。

    如果您想同时运行多个会话,您应该使用 Ctrl-B 和 $ 命名每个会话。您可以使用 tmux list-sessions 获取当前正在运行的会话列表。

    tmux 可以做更高级的事情,然后在单个会话中处理单个窗口。有关更多信息,请查看 man tmux 或 http://tmux.github.io/ 。有关 screen 和 tmux 之间主要区别的常见问题解答可在此处找到。

    【讨论】:

      猜你喜欢
      • 2016-06-14
      • 2016-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多