2011-09-30 53 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

相關問題