2011-09-30 13 views
14

Piuttosto una semplice domanda, credo, è possibile installare il passeggero quando nginx è già installato sul server web?Installazione di Passenger quando Nginx è già installato; Possibile?

Se la risposta è sì, ho già eseguito queste azioni:

In questo momento ho già nginx installato (per le mie applicazioni PHP) e dopo ho fatto un checkout del repository git del passeggero:

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

e quindi aggiungere questo frammento di /etc/nginx/conf/nginx.conf

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

Tuttavia quando voglio riavviare nginx ricevo il seguente errore:

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

Il che mi conclude a dire che c'è ancora qualche config ho bisogno di impostare, per nginx di essere a conoscenza che stiamo usando passeggero.

mio blocco del server

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

risposta

17

Credo che il problema è che il modulo del passeggero non è presente nel nginx.

Tutte le direttive relative ai passeggeri che hai descritto (passenger_root, passenger_ruby, passenger_enabled) sono disponibili solo quando il modulo passeggero è collegato a nginx. Questo è il motivo per cui devi compilare nginx con --add-module='/path/to/passenger-3.0.9/ext/nginx'.

Sfortunatamente, non conosco alcun metodo per abilitare il modulo passeggero senza reinstallare nginx. Ma, secondo http://wiki.nginx.org/Modules, "I moduli Nginx devono essere selezionati in fase di compilazione.", Quindi potrebbe esserci la possibilità che non ci sia un modo per farlo.

+0

dopo una ricerca di tempo di lasso di tempo, questa è la soluzione! tks –

2

In Passenger docs il capitolo "Generic installation, upgrade and downgrade method: via RubyGems" discute questo. Fondamentalmente, una volta installata la gemma Passenger, nginx deve essere ricompilato (e quindi usato al posto di ygin/apt-get-installed nginx se ne esiste uno). La compilation/utility di configurazione del passeggero "passenger-install-nginx-module" lo fa per te (fa parte della gemma Passenger) e include automaticamente gli switch necessari per il Passeggero. Offre anche la possibilità di aggiungere i propri switch (ad esempio per moduli aggiuntivi o per abilitare/disabilitare le funzionalità integrate di NGiNX).

0

confermo la risposta di ioni-br, sto affrontando lo stesso tipo di problemi e il sito di PhusionPassenger afferma:

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.

L'unica soluzione è quindi di reinstallare correttamente Nginx, se la vostra macchina è un'istanza AWS AMI la soluzione è here.

Problemi correlati