2009-11-13 16 views
14

Muy pronto planeo implementar mi primera aplicación Ruby on Rails en un entorno de producción e incluso he elegido un servidor web con todo el servidor administrado y la bondad de Capistrano. d esperar de un proveedor de RoR.Recomendaciones (y diferencias) entre diferentes servidores web de producción de Ruby on Rails

El proveedor admite los servidores web FastCGI de Mongrel, Thin, Passenger &, lo que parece muy flexible, pero sinceramente no conozco las diferencias entre ellos. Los he investigado un poco, pero todo se vuelve un poco complicado cuando comienzan a hablar sobre las características y las solicitudes simultáneas máximas, y que esta información parece variar según quién la publique.

Miré a Passenger (en la superficie), lo cual me parece muy atractivo, pero tenía la impresión de que Passenger no era el servidor web real, y en su lugar era más como una capa encima de Apache o nginx y administrado instancias generadas de la aplicación (como un clúster Mongrel).

¿Alguien puede por favor aclararme las diferencias en los términos del laico para poder elegir sabiamente (porque cualquiera que haya visto Indiana Jones y The Last Crusade sabe lo que sucede si elige mal).

+1

Este enlace puede ser útil: http://tenmiles.com/blog/2010/08/apache-passenger-and-other-server-alternatives-rails/ –

Respuesta

33

Respuesta corta

Ir con Apache/Nginx + pasajeros. Pasajero is fast, confiable, fácil de configurar y desplegar. Passenger ha sido adoptado por una gran cantidad de aplicaciones de Rails grandes, incluyendo Shopify.

alt text http://www.modrails.com/images/passenger_mongrel_thin_benchmark.png

La respuesta larga

Olvídate de CGI y FastCGI. Al principio no había otras alternativas, por lo que la única forma de ejecutar Rails era usar CGI o el navegador FastCGI más rápido. Hoy en día casi nadie ejecuta Rails bajo CGI. Las últimas versiones de Rails ya no proporcionan corredores .cgi y .fcgi.

Mongrel ha sido una solución ampliamente adoptada, el mejor reemplazo para CGI y FCGI. Muchos sitios aún usan el mestizo Mongrel y Mongrel, sin embargo, el proyecto Mongrel está casi muerto y muchos proyectos ya se han cambiado a otras soluciones (principalmente Passenger). Además, una arquitectura basada en Mongrel es bastante difícil de configurar porque necesita un proxy frontend (thin, ngnix) y una arquitectura backend compuesta de múltiples instancias de Mongrel.

El pasajero ha estado ganando amplia atención desde su lanzamiento. Muchos proyectos cambiaron de Mongrel a Passenger por muchas razones, que incluyen (entre otras) fácil implementación, facilidad de mantenimiento y rendimiento. Además, Passenger ya está disponible para Apache y Ngnix.

La forma más sencilla de utilizar Passenger es la configuración de Apache + Pasajero. Una instalación Apache y múltiples procesos de Pasajeros.

Si necesita un mejor rendimiento y escalabilidad, puede utilizar Ngnix como proxy frontend y reenviar todas las solicitudes Rieles a varios servidores de back-end, cada uno compuesto de Apache + pasajeros. No voy a entrar aquí en los detalles técnicos, esta solución está destinada a ser utilizada por los proyectos de Rails con un alto nivel de tráfico.

Incluso las soluciones más complejas incluyen una combinación de diferentes niveles, incluidos proxies y servidores http.Puede tener una idea de lo que estoy hablando leyendo algunos detalles internos de GitHub y Heroku.

En este momento, los pasajeros es la mejor respuesta para la mayoría de los proyectos de Rails.

+1

excelente respuesta. –

9

Mestizo y delgadas son servidores solo proceso de rubí que permiten la ejecución de múltiples como un grupo detrás de algún tipo de proxy (como Apache o Nginx). El proxy gestionaría qué instancia de Mongrel o Thin atiende las solicitudes.

Passenger crea una interfaz entre Apache o Nginx que crea un proceso de generación de aplicaciones y luego organiza los procesos para atender las solicitudes entrantes a medida que entran. Hay muchas opciones de configuración durante cuánto tiempo duran esos procesos, cuántas puede ser, y cuántas solicitudes van a servir antes de que mueran. Esta es, de lejos, la forma más común de escalar y manejar una aplicación de alto tráfico, pero no deja de tener inconvenientes. Esto solo se puede hacer en un sistema operativo * nix (linux, mac os x, etc.). Además, estos procesos aumentan según la demanda, por lo que si nadie accede a su sitio durante un tiempo, los procesos se mueren y la siguiente solicitud tiene el retraso de que vuelva a comenzar. Con Mongrel y Thin, el proceso siempre se está ejecutando. Sin embargo, a veces, sus procesos son nuevos y frescos para el uso de la memoria, etc.

Si va a ser un sitio de tráfico relativamente bajo, Mongrel o Thin proporciona una forma simple y fácil de administrar para implementar la aplicación . Para sitios de mayor tráfico en los que necesita la cola inteligente y la administración de procesos de algo así como Passenger, es una muy buena solución.

En cuanto a fastcgi, es probable que quieren usar eso como una última opción.

1

que el uso del pasajero + Nginx. Funciona muy, muy bien.

1

para conseguir un poco de rendimiento instantáneo cuentan con pasajeros, recomiendo el uso de edición rubí empresa.

Cuestiones relacionadas