2011-09-30 12 views
14

Creo que es una pregunta simple, ¿es posible instalar pasajero cuando nginx ya está instalado en su servidor web?Instalación de Passenger cuando Nginx ya está instalado; ¿Posible?

Si la respuesta es Sí, ya realiza estas acciones:

En este mismo momento ya nginx he instalado (por mis aplicaciones PHP) y el siguiente hice una salida de repositorio git del pasajero:

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

y luego añadir este fragmento a /etc/nginx/conf/nginx.conf

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

Sin embargo, cuando quiero reiniciar nginx me sale el siguiente error:

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

Lo que me llega a la conclusión decir que todavía hay una cierta configuración necesito fijar, por nginx a tener en cuenta que estamos usando pasajeros.

Mi bloque de servidor

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

Respuesta

17

Creo que su problema es que el módulo de pasajeros no está presente en nginx.

Todas las directivas dependientes del pasajero que ha descrito (passenger_root, passenger_ruby, passenger_enabled) están disponibles solo cuando el módulo de pasajero está adjunto a nginx. Es por eso que debe compilar nginx con --add-module='/path/to/passenger-3.0.9/ext/nginx'.

Desafortunadamente, no conozco ningún método para habilitar el módulo de pasajeros sin volver a instalar nginx. Pero, de acuerdo con http://wiki.nginx.org/Modules, "los módulos de Nginx deben seleccionarse en tiempo de compilación", por lo que podría existir la posibilidad de que no haya una manera de hacerlo.

+0

después de una larga búsqueda de tiempo, ¡esta es la solución! tks –

2

En Documentos para el pasajero, el capítulo "Generic installation, upgrade and downgrade method: via RubyGems" habla de esto. Básicamente, una vez que la gema Pasajero está instalada, nginx necesita ser recompilada (y luego utilizada en lugar de yum/apt-get-installed nginx, si existe). La utilidad de compilación/configuración de pasajeros "passenger-install-nginx-module" lo hace por usted (es parte de la gema Passenger) e incluye automáticamente los conmutadores necesarios para Passenger. También le da la opción de agregar sus propios interruptores (por ejemplo, para módulos adicionales, o para habilitar/deshabilitar las funciones incorporadas de NGiNX).

0

confirmo la respuesta de ión-sa, estoy frente a la misma clase de problemas y el sitio de PhusionPassenger afirma:

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.

La única solución es, pues, para volver a instalar correctamente Nginx, si su máquina es una instancia AWS IAM la solución está en here.

Cuestiones relacionadas