升级Phusion Passenger,无需重新安装Nginx

是否有可能升级Phusion乘客到一个较新的版本,当它已经运行(在我的情况Nginx)?

我使用passenger-install-nginx-module安装Passenger 4.0.0.rc6。 我的Nginxconfiguration现在包含

 passenger_root /usr/local/lib/ruby/gems/2.0.0/gems/passenger-4.0.rc6; passenger_ruby /usr/local/bin/ruby; 

现在我想升级到乘客4.0.2。 我可以安装gem,但是当我再次运行passenger-install-nginx-module时,它会尝试重新编译并重新安装Nginx。 (我认为这将是非常聪明的,注意到已经有一个已安装的Nginx在我指定的位置使用--prefix

我试图手动将passenger_root更改为新的Passenger gem位置,但在Nginx错误日志中出现以下错误:

 2013/05/12 12:30:13 [alert] 14298#0: Unable to start the Phusion Passenger watchdog because its executable (/usr/local/lib/ruby/gems/2.0.0/gems/passenger-4.0.2/agents/PassengerWatchdog) does not exist. This probably means that your Phusion Passenger installation is broken or incomplete, or that your 'passenger_root' directive is set to the wrong value. Please reinstall Phusion Passenger or fix your 'passenger_root' directive, whichever is applicable. (-1: Unknown error) 

PassengerWatchdog显然是在运行passenger-install-nginx-module 。 我不想复制老gem的PassengerWatchdog ,因为有些东西可能已经改变了。

那么…什么是升级乘客没有重新编译和重新安装Nginx(或Apache)的正确方法?

@ Wukerplank的评论使我走上正轨。 我再次运行passenger-install-nginx-module时检查了输出,它说:

 Nginx doesn't support loadable modules such as some other web servers do, so in order to install Nginx with Passenger support, it must be recompiled. Do you want this installer to download, compile and install Nginx for you? 1. Yes: download, compile and install Nginx for me. (recommended) The easiest way to get started. A stock Nginx 1.4.1 with Passenger support, but with no other additional third party modules, will be installed for you to a directory of your choice. 2. No: I want to customize my Nginx installation. (for advanced users) Choose this if you want to compile Nginx with more third party modules besides Passenger, or if you need to pass additional options to Nginx's 'configure' script. This installer will 1) ask you for the location of the Nginx source code, 2) run the 'configure' script according to your instructions, and 3) run 'make install'. Whichever you choose, if you already have an existing Nginx configuration file, then it will be preserved. 

最重要的部分是Nginx必须重新编译与Passenger一起工作,并保留现有的Nginx配置。

所以升级乘客的正确方法是

  1. 安装新的乘客宝石
  2. 使用与第一次完全相同的参数执行passenger-install-nginx-module (所以相同的Nginx版本和模块被编译,它被安装在相同的目录等)
  3. 在安装之前,检查它是否显示“欢迎使用Phusion Passenger Nginx模块安装程序v4.0.2”。 随着新版本(4.0.2在我的情况)
  4. 安装完Nginx之后,将你现有的Nginx conf中的passenger_root (path / to / nginx / conf / nginx.conf)改为指向新的gem版本(只需用新版本替换旧的版本号)
  5. 重新启动Nginx
  6. 利润

你不能升级而不重新编译Nginx。 完整的升级说明可以在Phusion Passenger for Nginx手册中找到 。 从手册:

Nginx与其他Web服务器不同,它不支持可加载模块。 扩展Nginx的唯一方法是完全从源代码重新编译。 由于Phusion Passenger由一些外部可执行文件和一个Nginx模块组成,所以在首次安装Phusion Passenger时,必须重新编译Nginx,而且在升级Nginx本身或升级Phusion Passenger版本时也必须重新编译。

重新编译Nginx和Phusion Passenger可执行文件是我们在这一步中要做的。 好消息是,Phusion Passenger提供了一个工具来让你更容易。

如果您之前已经安装了Nginx,但是没有Phusion Passenger支持,那么您应该首先卸载它。 你不需要,因为你也可以安装另一个带有Phusion Passenger支持的Nginx,与现有的Nginx并行。 我们只是建议卸载现有的,以避免用户混淆,但选择是你的。

如果您之前已经安装了带有Phusion Passenger支持的Nginx,并且您正在升级,那么您不必先卸载现有的Nginx。 相反,我们将覆盖这一步。 但重要的是你用上次使用的配置参数重新编译Nginx。