stop start rails deploy app ruby-on-rails passenger

ruby on rails - start - Phusion Passenger(para tontos!)



phusion passenger rails (2)

Soy un desarrollador experimentado de LAMP que se traslada a Rails. Tengo una pregunta muy estúpida: ¿qué demonios hace Phusion Passenger?

He leído mucha documentación, busqué en Google, leí Wikipedia, leí Stack Overflow. Incluso lo he instalado y lo he ejecutado en una máquina de desarrollo (con Apache). Todavía no sé lo que está haciendo en realidad.

Aquí hay una suposición: creo que es extraño que la raíz del documento de Apache apunte a /mywebapp/public/ lugar de /mywebapp/ , así que supongo que tiene que ver con hacer que todo esté dentro de /mywebapp/ accesible. (Eso es una suposición descabellada, basada en el hecho de que no sé de qué otra manera se está accediendo).

He llegado a la conclusión de que Passenger es revolucionario, revolucionario, etc., pero ¿qué hace?

Perdón por la pregunta n00b, todos. ¡Gracias!


Passenger es un sistema para preparar y lanzar instancias de Ruby para su uso con aplicaciones basadas en Rack como Ruby on Rails. Apache y nginx, las dos plataformas de servidor web compatibles, no pueden ejecutar Ruby como lo hacen con PHP, Perl o Python porque no hay un módulo de Ruby incorporado que funcione tan bien como los demás. Esto significa que Ruby tiende a ejecutarse como un grupo independiente de procesos por el cual el servidor web tendrá que dirigir el tráfico.

Rails tiende a ejecutarse como un proceso persistente porque el tiempo de inicio para toda la pila es significativo. El pasajero lanza nuevas instancias según se requiera, y eliminará aquellas que ya no sean necesarias. Puede ver esto en la lista de procesos ya que están claramente identificados con los prefijos "Pasajero" y "Rieles".

Una característica de Passenger es que reutilizará una parte de la pila de Rails para que la creación de procesos adicionales sea más rápida, clonando una instancia en lugar de crear una nueva desde cero. El cargador está escrito en C ++ y maneja correctamente la configuración y el inicio de cada proceso de Ruby de la manera más eficiente posible y también ayuda a ahorrar memoria al compartirla entre diferentes procesos.

La razón por la que aloja las cosas fuera del directorio public/ es para evitar exponer la base de código de su aplicación. PHP necesita configurarse correctamente para evitar que las personas simplemente examinen directorios y descarguen la fuente porque no hay una distinción específica entre el contenido estático y los scripts ejecutables. Un servidor configurado erróneamente con mucho gusto servirá archivos Raw .php en lugar de ejecutarlos, por ejemplo.

Passenger no es exactamente revolucionario, pero incorpora una serie de características esenciales en un paquete muy conveniente. Lo que lo hace tan bueno es que funciona muy bien y no exige mucha atención. Fuera de la caja, está casi listo para funcionar.


Sirve aplicaciones de ruby ​​on rails (en realidad, cualquier aplicación de rack). Fui utilizado con la versión 2.x del pasajero para integrarlo directamente en apache, pero con la nueva versión, que admite la ejecución independiente, prefiero ejecutarlo en modo independiente (junto con rvm)

Puede ser muy útil tanto en modo de desarrollo como en modo de producción y acelera la ejecución de la aplicación RoR.

Para implementar una aplicación RoR, la instalo con su propio gemset y luego instalo el pasajero en ese gemset con un gem install passenger (también puede omitir las gemas, pero aislarán el entorno de la aplicación, por lo que es bueno tenerlas). Después de eso, puede iniciar la aplicación con passenger start -a 127.0.0.1 -p 3081 -e production en la raíz del proyecto.

Luego configuro un apache vhost para que funcione en modo proxy inverso con un archivo como este

<VirtualHost *:80> ServerName your.server.org ProxyPass / http://localhost:3081/ ProxyPassReverse / http://localhost:3081/ ProxyRequests Off # Local reverse proxy authorization override # Most unix distribution deny proxy by default (ie /etc/apache2/mods-enabled/proxy.conf in Ubuntu) <Proxy http://localhost:3081/*> Order deny,allow Allow from all </Proxy> </VirtualHost>

y estás bien, tienes tu aplicación implementada con su configuración local, ni siquiera necesita privilegios de administrador (para la parte del pasajero).