2011-09-30 55 views
14

我相信一个简单的问题,当你的网络服务器上已经安装了nginx时,是否可以安装乘客?当Nginx已安装时安装Passenger;可能?

如果答案是肯定的,我已经执行以下操作:

在这个非常时刻,我已经nginx的安装(我的PHP应用程序)和明年我做了乘客的git仓库的结帐:

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

,然后这个片段时,我要重新启动nginx的,我得到以下错误增加到/etc/nginx/conf/nginx.conf

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

但是:

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

我总结说我仍然需要设置一些配置,因为nginx要知道我们使用的是乘客。

我的服务器块

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

回答

17

我觉得你的问题是,乘客模块中不存在nginx的。

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

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

+0

在looong时间搜索后的问题,这是解决方案! tks –

2

乘客文档章节"Generic installation, upgrade and downgrade method: via RubyGems"对此进行了讨论。基本上,一旦安装了Passenger gem,nginx需要重新编译(然后用来代替yum/apt-get-installed nginx(如果存在的话))。 Passenger的编译/配置实用程序“passenger-install-nginx-module”为您提供(它是Passenger gem的一部分),并且它自动包含必要的Passenger交换机。它还使您可以选择添加自己的交换机(例如用于额外的模块,或启用/禁用NGiNX的内置功能)。

0

我确认离子-BR的回答,我现在面临的同样的问题和PhusionPassenger的网站指出:

Before you begin, you should know that installing Passenger in its Nginx integration mode involves extending Nginx with code from Passenger. However, Nginx does not support loadable modules. This means that in order to install Passenger's Nginx integration mode, it is necessary to recompile Nginx from source.

唯一的解决办法是这样来正确地重新安装Nginx的,如果你的机器是一个AWS AMI实例解决方案在于here

相关问题