ruby on rails - instalar - ¿Mejores prácticas para nuevas implementaciones de Rails en Linux?
ruby installer (9)
Eche un vistazo a Litespeed . Puede obtener una versión gratuita que se ejecute en 1 CPU o pago para obtener una CPU múltiple. Es un poco caro, pero es sólido como una roca y maneja los rieles brillantemente (es decir, utiliza menos memoria y es menos de una sobrecarga para monitorear y configurar). Ejecuto una cantidad masiva de aplicaciones y no pierde el ritmo.
He usado mongre recto, he usado mestizos detrás de Apache, he mirado a Thin y estoy muy intrigado por Passenger. Miré a Nginx también. Miré MRI, Ruby Enterprise Edition, Rubinius y JRuby. Hay muchas opciones, cada una afirmando ser el nuevo santo grial.
¿Cuál es la mejor opción para una implementación nueva y completamente actualizada? Las únicas suposiciones son las siguientes:
- La aplicación está basada en Rails 2.2. (Sé que 2.2 aún no se ha lanzado completamente, pero tampoco esta implementación).
- El servidor está basado en Linux. Probablemente Ubuntu Hardy, pero realmente, lo que funcione mejor en este caso.
- Rails necesitará ser completamente funcional y probablemente hablar con una base de datos MySQL.
- Todo lo demás es negociable.
Dadas estas restricciones especialmente amplias, ¿qué combinación de software arrojará el mejor resultado, en términos de concurrencia y baja sobrecarga?
Me inclino por Apache con el mpm "worker" y Passenger + Ruby Enterprise Edition, simplemente porque ofrece estabilidad inmediata y simplicidad de configuración y mantenimiento.
¿Es probable que esté particularmente mejor con otra opción?
Cambié de Mongrel Cluster a Passenger hace dos semanas (Debian Linux Server). No miré atrás por un segundo. El pasajero es probablemente la forma más fácil de poner en marcha su nuevo servidor. El rendimiento y la fiabilidad también son razonables.
Personalmente, me gusta dedicar mi tiempo a trabajar en nuevos y emocionantes proyectos de Rails en lugar de lidiar con problemas de implementación: Passenger me permite hacer exactamente eso. Sin embargo, Mongrel o cualquier otra cosa puede ser preferible si tiene algún tipo de requisitos especiales (no se aplica a la mayoría de los productos).
Estoy alojando mis nuevas aplicaciones con Apache2 y Passenger en Ubuntu Hardy. Parece la opción más fácil y la mejor para la mayoría de los escenarios. Acabo de unirme a Slicehost.com para ese fin. Parecen obtener buenas críticas y tienen los precios más competitivos de los hosts de primera clase.
Realmente no puedo respaldarlos todavía porque soy un cliente nuevo, pero el conjunto de guías y la variedad de opciones de soporte son impresionantes.
Lo que no mencionas es qué tan grande y popular es / será tu aplicación. Este criterio podría afectar el proceso de decisión.
Hemos estado usando la antigua pila estándar nginx -> mongrel durante los últimos 18 meses, y aunque no fue trivial configurarla por primera vez, es flexible y nos ha tratado con sitios de mucho tráfico. Nginx, en particular, ha sido absolutamente sólido y rápido, y si puede obtener el almacenamiento en la memoria caché de la página de la aplicación, puede atender una gran cantidad de solicitudes.
Los mestizos pegados han sido un problema, entonces usamos monit para matarlos cuando se portan mal. Una vez más, no fue totalmente trivial configurarlo, pero hemos utilizado el mismo proceso en muchos sitios en este momento.
Todavía no hemos jugado con pasajeros, así que tal vez sea más fácil y más estable, voy a diferir de los demás encargados de eso, todo lo que puedo decir es que no hay ninguna razón para no poder construir una pila sólida con nginx y mestizo
También cambiamos de Mongrel a mod_passenger y encontramos que la estabilidad mejoró enormemente con este esfuerzo requerido para configurar y mantener. Buena elección.
Cambiamos fron NginX + Mongrel a Pasajero.
Creo firmemente que Passenger va a ser el nuevo estándar para rails, a pesar de que NginX y Mongrel cluster están respaldados por personas muy inteligentes. Los recientes avances en Passenger realmente lo han impulsado hacia adelante.
Nuestra configuración actual es algo como esto:
Servidores web
- Ubuntu 8.04 LTS
- Phusion Passenger en Apache2
- MRI Ruby 1.8.6 y amigos (formulario apto)
- Ruby Gems 1.3.0 (instalado desde la fuente)
Servidores de bases
- Centos 5
- MySQL Cluster (simplemente cambiamos a esto, pero es prometedor)
Después de haber estandarizado la distribución exacta de linux, hemos podido escribir recetas de Capitrano para ayudar en el despliegue (pequeñas variaciones en la configuración han sido la fuente de MUCHAS interrupciones en el servicio) y simplificar nuestras vidas.
Esta mañana, DHH habla sobre este mismo tema en su propio blog:
Pero de alguna manera, el mensaje de Passenger ha sido un poco lento para asimilar. Ya hay una tonelada de grandes sitios que se están escapando. Incluyendo Shopify, MTV, Geni, Yammer, y nos moveremos sobre la primera lista de Ta-da en breve, y con suerte el resto de la suite de 37signals rápidamente después de eso.
Así que, aunque todavía hay razones para ejecutar su propia configuración personalizada de múltiples niveles de piezas configuradas manualmente, al igual que hay personas que se están alejando de mod_php por sus detalles, creo que finalmente nos hemos conformado con una respuesta predeterminada. Algo que no requiere que realmente piense en la primera implementación de su aplicación Rails. Algo que simplemente funciona de la caja. ¡Incluso si esa caja es un host compartido!
http://www.loudthinking.com/posts/30-myth-1-rails-is-hard-to-deploy
Tobias Lütke sobre el tema de cambiar Shopify (millones de solicitudes / día) a Pasajero:
Todo esto significa que la cantidad total de memoria que usa Shopify durante las operaciones normales pasó de un promedio de 9 GB a un promedio de 5 GB. Distribuimos los ahorros entre más procesos de Shopify y más espacio de memcached, lo que movió nuestro tiempo de respuesta promedio de 210ms a 130ms, mientras que el tráfico creció un 30% en los últimos meses.
En conclusión: no veo ninguna razón para elegir una estrategia de implementación diferente en este punto. Es simple, completo, rápido y bien documentado.
Capistrano + Deprec por realmente configurar mi stack en Ubuntu y administrar físicamente la implementación.
Nginx proxying a clústeres Mongrel para la arquitectura del servidor. No es la técnica más novedosa, pero funciona bien, está bien documentada y tiene un rendimiento muy, muy alto incluso cuando se trabaja con VPS pequeños. Asumiendo que no has puesto en bork la aplicación, puedes Slashdot un Slicehost VPS de 128 MB y sigue volviendo por más.
Una vez dicho esto, hubo muchos problemas la primera vez, hasta que descubrí cómo funcionaba realmente Nginx. Después de eso es increíble, como un pequeño Apachelet con un ligero acento ruso.
Otro poco de oro:
La joya de Slicehost de Josh Peek está llena de recetas de Capistrano que son mucho más simples y mucho más organizadas que Deprec. Nada allí es especialmente específico de Slicehost, tampoco.