当Nginx已安装时安装Passenger; 可能?

我相信一个简单的问题,是否可以在你的networking服务器上安装nginx时安装乘客

如果答案是肯定的,我已经执行了这些操作:

在这一刻,我已经安装了nginx(用于我的PHP应用程序),接下来我完成了乘客的git存储库的签出:

mkdir /repositories cd /repositories/ git clone https://github.com/FooBarWidget/passenger.git cd passenger/ 

然后将这个片段添加到/etc/nginx/conf/nginx.conf

  http { ... passenger_root /repositories/passenger; passenger_ruby /usr/local/rvm/wrappers/ruby-1.9.2-p290/ruby; ... } 

但是,当我想重新启动nginx我得到以下错误:

 * Starting Web Server nginx nginx: [emerg] unknown directive "passenger_root" in /etc/nginx/nginx.conf:19 

最后我说,还有一些configuration需要设置,因为nginx要知道我们正在使用乘客。

我的服务器块

 server { listen 80; server_name rails.kreatude.com; root /srv/www/my_test_app; passenger_enabled on; } 

我认为你的问题是乘客模块不在nginx中。

您所描述的所有依赖乘客的指令(passenger_root,passenger_ruby,passenger_enabled)仅在乘客模块连接到nginx时才可用。 这就是为什么你必须用--add-module='/path/to/passenger-3.0.9/ext/nginx'编译nginx。

不幸的是,我不知道有什么方法可以在不重新安装nginx的情况下启用乘客模块。 但是,根据http://wiki.nginx.org/modulees的说法,“Nginx模块必须在编译时选择”,所以可能有没有办法做到这一点。

在Passenger文档中, “通用安装,升级和降级方法:通过RubyGems”一章讨论了这一点。 基本上,一旦安装了Passenger gem,nginx需要重新编译(然后用来代替yum / apt-get-installed nginx,如果存在的话)。 乘客的编译/配置实用程序“乘客安装nginx模块”为您(它是乘客宝石的一部分),它自动包括必要的乘客开关。 它还使您可以选择添加自己的交换机(例如用于额外的模块,或启用/禁用NGiNX的内置功能)。

有了rvm ,你可以简单地通过运行rvmsudo passenger-install-nginx-module

有关更多详细信息: https : //www.digitalocean.com/community/tutorials/how-to-install-rails-and-nginx-with-passenger-on-ubuntu 。

我确认ion-br的答案,我面临同样的问题,PhusionPassenger的网站指出:

在开始之前,您应该知道在其Nginx集成模式中安装Passenger需要使用Passenger的代码来扩展Nginx。 但是,Nginx不支持可加载模块。 这意味着为了安装Passenger的Nginx集成模式,需要从源代码重新编译Nginx。

因此,如果您的计算机是解决方案所在的AWS AMI实例,则唯一的解决方案就是正确地重新安装Nginx。