Generalidades sobre Passenger

Generalidades

Si tu aplicación Ruby no se inicia debido a una gema faltante, entonces debes instalarla localmente usando Bundler. Para obtener más información sobre el uso de Bundler, visita la siguiente página:

Passenger es un servidor de aplicaciones y web de código abierto que simplifica enormemente la implementación de aplicaciones Ruby, Python y Node.js. Passenger es la forma preferida de implementar y alojar aplicaciones Ruby on Rails en todos los servidores DreamHost y es gratuito en todos los planes de alojamiento de DreamHost.

Dado que las aplicaciones de Ruby on Rails y Python pueden usar mucha memoria, los sitios que ejecutan dichas aplicaciones con Passenger solo deben ejecutarse en un servidor VPSDedicated. Node.js no está disponible en servidores compartidos en absoluto.

Operación básica

Las siguientes son las acciones básicas que tienen lugar una vez que se solicita un archivo de un dominio que ejecuta Passenger y Ruby on Rails:

  1. Cuando se realiza una solicitud a un dominio/subdominio, el servidor HTTP de Apache pasa la solicitud a Passenger.
  2. Passenger primero busca un archivo HTML o CGI con el nombre apropiado en el subdirectorio /public del dominio/subdominio.
  3. Si no se encuentra ningún archivo que coincida, la solicitud se pasa a la interfaz de Rack de Passenger.
  4. Ten en cuenta que este uso del subdirectorio /public coincide exactamente con la forma en que Ruby on Rails utiliza el mismo subdirectorio.
  5. Para generar una respuesta, Rack busca un archivo llamado "config.ru" en el directorio raíz del dominio/subdominio (es decir, el dominio principal del subdirectorio /public).
  6. Rack requiere que coloques el código apropiado de Ruby en "config.ru" para invocar su marco web o aplicación deseada para manejar la solicitud.

En circunstancias normales, Ruby on Rails (RoR) creará e inicializará automáticamente todos los archivos y directorios necesarios para interactuar con Passenger / Rack. Al ejecutar una aplicación RoR, los únicos archivos relacionados con Rack que es probable que modifiques será posiblemente agregar información de GEM_PATH a "config.ru" y "tocar" el archivo "tmp/restart.txt".

Uso de Passenger vs. FastCGI

Passenger solo debe habilitarse si tienes la intención de ejecutar Ruby on Rails (RoR) u otro programa basado en Ruby/Python como la única aplicación para todo el dominio o subdominio. Passenger dirige todas las solicitudes para el dominio/subdominio designado a la aplicación compatible asociada con Rack. Por lo tanto, es mejor dejar a Passenger deshabilitado si en realidad no lo necesitas.

En otras palabras, solo debes habilitar Passenger si deseas acceder a tu aplicación a través de las siguientes tres URL:

  • myapp.example.com
  • www.example.com
  • www.myapp.example.com

Si deseas acceder a tu aplicación a través de www.example.com/path-to-myapp, usa FastCGI en lugar de Passenger.

Un par de notas técnicas

  • El resultado en STDERR para los procesos ejecutados a través de la interfaz Rack se dirige al archivo maestro de registro de errores de Apache en lugar del archivo de registro específico del dominio/subdominio. No tienes acceso directo al archivo de registro maestro. Esta limitación puede hacer que los errores de inicialización de depuración (en particular errores de sintaxis y problemas de resolución de gemas) sean difíciles. Passenger a menudo producirá una página web de salida de error que incluye un seguimiento de pila. Sin embargo, en algunos casos no lo hace. Si tienes un problema persistente y Passenger no produce una salida de error lo suficientemente útil, puedes intentar ponerte en contacto con el personal de soporte de DreamHost y pedirles que examinen el archivo de registro maestro por ti. Una vez que un marco (como RoR) está en funcionamiento, su salida de error generalmente se maneja mediante el propio mecanismo de registro de errores del marco. Por ejemplo, RoR registra su salida de error en un archivo llamado "log/production.log".
  • Passenger usa Ruby 2.5.1 en todos los servidores compartidos de DreamHost. Para usar una versión diferente de Ruby (y para obtener el control total de la operación de tu sistema), debes usar un VPS e instalar RVM.
  • Passenger y Mongrel cumplen prácticamente las mismas funciones, por lo que lo más probable es que NO desees utilizar ambos en el mismo dominio o sitio web.
  • La activación de Passenger en un dominio afectará la interfaz phpMyAdmin en cualquier subdominio bajo el dominio. Para usar phpMyAdmin y Passenger, debes tener un dominio que no tenga Passenger habilitado con un phpMyAdmin activo.
  • En aras de la facilidad de uso y la funcionalidad 'Cargar y listo', Passenger deshabilita algunas funciones mod_rewrite. Eso significa que anulará automáticamente la configuración existente de 'dispatch.fcgi' que tengas instalada. Esto no es un problema para tu aplicación Rails, pero puede tener otros efectos secundarios (como romper otras reglas mod_rewrite que hayas configurado). Si esto causa un problema para tu sitio web, intenta usar el método FastCGI.
  • Passenger inicia automáticamente las aplicaciones y las deja en ejecución siempre que no estén inactivas. También almacena en caché el código de Ruby on Rails para acelerar el inicio de la aplicación.
  • Puedes usar tu repositorio de gemas local si usas lo siguiente en el archivo config/environment.rb:
if ENV['RAILS_ENV'] == 'production'  # don't bother on dev
  ENV['GEM_PATH'] = '/home/USERNAME/.gems' #+ ':/usr/lib/ruby/gems/1.8'  # Need this or Passenger fails to start
end

require File.join(File.dirname(__FILE__), 'boot')

La misma ruta debe establecerse en las variables de entorno de tu shell GEM_HOME y GEM_PATH para que puedas usar el programa de gemas para instalar/actualizar tus propias gemas. Puedes volver a cargar el archivo de configuración ejecutando "touch tmp/restart.txt" en tu directorio base.

Solución de problemas

Para información común sobre solución de problemas, por favor vista el artículo Passenger Troubleshooting.

Ver también

¿Este artículo ha respondido sus preguntas?

Última actualización el PST.

¿Aún no encuentra lo que busca?