Generalidades
Passenger es un servidor web y de aplicaciones de código abierto que simplifica enormemente la implementación de aplicaciones Ruby, Python y Node.js.
En DreamHost, Passenger solo se integra con servidores que corren Apache.
Revisa el siguiente artículo si en vez de eso prefieres usar Nginx sin Passenger:
Límites de memoria
Los servidores compartidos pararían el script si está usando mucha memoria.
Dado que las aplicaciones Ruby on Rails y Python pueden usar mucha memoria, los sitios que ejecutan dichas aplicaciones con Passenger solo deben ejecutarse en un Servidor VPS o Dedicado.
Ruby on Rails
Passenger es la forma preferida de implementar y alojar aplicaciones Ruby on Rails en todos los servidores DreamHost y es gratuita en todos los planes de alojamiento de DreamHost.
Las siguientes son las acciones básicas que tienen lugar una vez que se solicita un archivo desde un dominio que ejecuta Passenger y Ruby on Rails:
- Cuando un requerimiento es hecho en un dominio/subdominio, el Servidor HTTP de Apache pasa el requerimiento a Passenger.
- Passenger primero busca un HTML llamado apropiadamente o un archivo CGI en el subdirectorio /public del dominio/subdominio (example.com/public).
- Si no se encuentra ningún archivo coincidente, la solicitud se pasa a la interfaz de Rack de Passenger.
Esta es la misma forma que Ruby on Rails hace uso del subdirectorio /public.
- Rack busca el archivo llamado config.ru en el directorio root del dominio/subdominio (example.com) para generar una respuesta.
Rack requiere que pongas el código de Ruby apropiado dentro del archivo config.ru para invocar el framework/aplicación deseada para manejar el requerimiento.
En circunstancias normales, Ruby on Rails (RoR) crea e inicia 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 probablemente modificará son los siguientes:
- Agregando posiblemente información de GEM_PATH a config.ru
- Correr touch en el archivo restart.txt para reiniciar la aplicación. Por ejemplo:
[server]$ touch tmp/restart.txt
Passenger vs. FastCGI
Passenger solo debe habilitarse si tiene la intención de ejecutar una aplicación basada en Ruby/Python/Node.js como la única aplicación para todo el dominio/subdominio.
Passenger dirige todas las solicitudes para el dominio/subdominio designado a la aplicación compatible con Rack asociada, por lo que es mejor dejar a Passenger deshabilitado si no lo necesitas.
Cuando habilitar Passenger
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 quieres acceder a tu aplicación en un subdirectorio (www.example.com/path-to-myapp), entonces usa FastCGI en vez de Passenger.
Notas técnicas
Registro de errores
La salida a STDERR para los procesos que se ejecutan a través de la interfaz de Rack se dirige automáticamente al archivo de registro específico del dominio/subdominio.
- /home/user/logs/domain.com/http/
O:
- /home/user/logs/domain.com/https/
Este artículo explica cómo ver tu registro de errores a través de SSH, lo que requiere algunos conocimientos básicos de un terminal de shell. Para una opción más fácil usando FTP, revisa el siguiente artículo en su lugar:
Solución de problemas del registro de errores
Esta limitación puede dificultar la depuración de errores de iniciación (en particular, errores de sintaxis y problemas de resolución de gemas). Passenger a menudo producirá una página web de salida de error que incluye un seguimiento de pila, pero a veces no es así.
Contacta al soporte de DreamHost si tienes problemas con Passenger que no produce una salida de error útil. Nuestro equipo de soporte estará encantado de echar un vistazo para ver qué puede estar causando el problema.
Una vez que un framework (como RoR) está en funcionamiento, su salida de error generalmente es manejada por el propio mecanismo de registro de errores del marco. Por ejemplo, RoR registra su salida de error en un archivo llamado log/production.log.
Versión de Ruby
Los servidores de DreamHost corren una versión predeterminada de Ruby. También puedes instalar RVM para usar una versión de Ruby diferente.
phpMyAdmin
Activar Passenger en un dominio (example.com) rompe la interfaz phpMyAdmin de cualquier subdominio (blog.example.com) dentro del dominio.
Para usar phpMyAdmin y Passenger, debes agregar un dominio que no esté corriendo Passenger en tu panel. Puedes agregar un subdominio dreamhosters.com gratuitamente y usar tus credenciales de inicio de sesión para este propósito.
ModRewrite
Passenger deshabilita algunas funcionalidades mod_rewrite. Esto quiere decir que va a sobreescribir automáticamente una configuración dispatch.fcgi que tengas en su lugar. 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 utilizar el método FastCGI en su lugar.
Gemas
Puedes usar tu gema de repositorio local si estás usando lo siguiente en el archivo config/environment.rb. Asegúrate de cambiar username a tu usuario Shell y la versión de Ruby a la que tu sitio está usando.
if ENV['RAILS_ENV'] == 'production' # don't bother on dev ENV['GEM_PATH'] = '/home/username/.gems' #+ ':/usr/lib/ruby/gems/2.5.0' # Need this or Passenger fails to start end require File.join(File.dirname(__FILE__), 'boot')
El mismo camino debe ser configurado en las variables del ambiente de 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 corriendo touch tmp/restart.txt en tu directorio base.
Solución de problemas
Para solución de problemas comunes, por favor visita el artículo Solución de problemas de Passenger.