【问题标题】:Proper way to start nginx/passenger (non-standalone) on Ubuntu with Rails 3?使用 Rails 3 在 Ubuntu 上启动 nginx/passenger(非独立)的正确方法?
【发布时间】:2013-12-23 09:22:52
【问题描述】:

大约 6 个月前,我在运行 nginx/passenger 的 Ubuntu 上配置了我的 Rails 3 生产应用程序,使用 git 和 Capistrano 进行部署。

快进到上周 - 我使用的数据中心 (DigitalOcean NYC) 实际上完全断电(并且备用电池不起作用) - 导致我的服务器完全关闭。

我没有设置passenger或mysql在重启时启动,所以当硬件服务器重启时,我的应用仍然宕机。

当我启动它时,我真的不太了解我在做什么(因为它是我使用的第一台生产服务器),我按照指南启动并运行它。

当我试图让应用程序再次运行时,我成功地启动了 mysqld - 但我一生都不记得如何让 nginx/passenger 再次运行。

由于时间至关重要(我的客户需要应用程序尽快启动并运行),我最终通过导航到我的应用程序目录 (/current) 并使用以下命令让应用程序恢复运行:

passenger start -p 80 -e production

这成功了,但实际上启动了Passenger Standalone。它似乎工作正常(它根本不是一个大或复杂的应用程序,一次可能只有几个用户)。我可以导航回我的目录并使用上述命令(和乘客 stop -p 80)启动和停止它。

但是,现在我的 capistrano deploy (cap deploy) 不再在部署时重新启动服务器(它正在尝试运行 touch tmp/restart.txt)——即使我尝试手动运行,它也不会执行任何操作,因为服务器是独立运行乘客。

我不记得我最初是如何启动并运行服务器的,因为那是很久以前的事了。我没有使用 RVM - 只是直接在服务器上运行的 Ruby 版本。

有人知道在 Ubuntu 上启动 nginx/passenger(非独立)的正确命令吗?

更进一步——如何让 mysqld 和 nginx/passenger 在服务器硬重启时自动加载?

【问题讨论】:

    标签: ruby-on-rails ubuntu deployment nginx passenger


    【解决方案1】:

    Capistrano 不会重新启动服务器,因为它实际上创建了一个新的应用程序目录 (/u/apps/.../releases/xxx),而Passenger Standalone 仍在旧的应用程序目录 (/u/apps/. ../releases/yyy)。因此触摸 restart.txt 不起作用。相反,您必须像这样重新启动Passenger Standalone:

    cd /path-to-previous-release && passenger stop -p 80
    cd /path-to-current-release && passenger start -p 80 -e production
    

    你提到你想启动 nginx/passsenger。我假设你的意思是the Nginx mode。以下是您需要做的:

    1. 安装 Phusion Passenger using the official Passenger APT repository
    2. 没有第 2 步。如果您执行第 1 步,那么 Ubuntu 软件包会自动配置 Nginx 在系统启动时启动,这也会自动启动Passenger。

    我不明白你为什么要问如何让 mysqld 在服务器硬重启时自动启动。 mysqld总是在系统引导期间启动。您无需执行任何操作。

    【讨论】:

    • 但我的过程正在运行。我不相信它正在使用Passenger Standalone(在上限部署上执行的touch restart.txt 正在工作)。所以我知道它以某种方式安装并以正确的方式工作 - 我只是不记得我之前是如何让它工作的。在我的系统重新启动后,mysqld 和乘客都没有运行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-16
    • 2022-11-10
    • 2012-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-29
    相关资源
    最近更新 更多