2008-11-11 22 views
31

He usado mongre recto, he usado mestizos detrás de Apache, he visto 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.¿Mejores prácticas para nuevas implementaciones de Rails en Linux?

¿Cuál es la mejor opción para una implementación nueva y totalmente 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 por completo, pero tampoco esta implementación).
  • El servidor está basado en Linux. Probablemente Ubuntu Hardy, pero realmente, lo que funcione mejor en este caso.
  • Los rieles necesitarán ser totalmente funcionales y probablemente se comuniquen con una base de datos MySQL.
  • Todo lo demás es negociable.

Dadas estas limitaciones especialmente amplias, ¿qué combinación de software arrojará el mejor resultado, en términos de concurrencia y baja sobrecarga?

Me estoy inclinando hacia 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?

Respuesta

16

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).

+1

+1 para pasajeros - implementación súper fácil tan rápida (a veces más rápida para mi aplicación) que mongre. ¡Maravilloso! –

+0

otro +1 para pasajero. Luché durante una semana tratando de configurar un paquete de mongrels en Debian, pero finalicé una configuración de implementación en una tarde con pasajero. – Alan

+0

+1 para Pasajero. El despliegue me llevó unos 10 minutos, de principio a fin. – mlambie

0

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 gama de opciones de soporte son impresionantes.

Lo que no menciona es qué tan grande y popular es/será su aplicación. Este criterio podría afectar el proceso de decisión.

1

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.

1

También cambiamos de Mongrel a mod_passenger y encontramos la estabilidad mejorada con este esfuerzo requerido para configurar y mantener. Buena elección.

4

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 ha tratado con sitios de mucho tráfico. para nosotros.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.

No hemos jugado aún con pasajeros, por lo que tal vez sea más fácil y más estable, voy a ceder a los demás encargados de eso, todo lo que puedo decir es que no hay ninguna razón para que no pueda construir un pila sólida con nginx y mongrel.

0

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 un lote de 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.

10

Esta mañana, DHH habla sobre este mismo tema en su propio blog:

Pero de alguna manera el mensaje de pasajeros ha sido un poco lento a hundirse en Ya hay un montón de grandes sitios de correr fuera de ella.. 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.

Por lo tanto, 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 apartan de mod_php por sus detalles, creo que finalmente hemos resuelto 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 la conmutación Shopify (millones de solicitudes/día) para pasajeros:

Todo esto significa que la cantidad total de memoria que se utiliza por Shopify durante las operaciones normales pasó de un promedio de 9GB a un promedio de 5GB. 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 momento. Es simple, completo, rápido y bien documentado.

http://blog.leetsoft.com/2008/11/15/passenger

2

Hemos cambiado el fron Nginx + Mestizo de pasajeros.

Creo firmemente que Passenger va a ser el nuevo estándar para rieles, a pesar de que NginX y Mongrel clúster 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 de pasajeros en Apache 2
  • resonancia magnética de Ruby 1.8.6 y amigos (forma apt)
  • Ruby Gems 1.3.0 (instalado desde la fuente)

servidores de bases de datos

  • Centos 5
  • MySQL Cluster (que acaba de cambiar a esto, pero es prometedor)

Habiendo estandarizado en la distribución exacta de Linux que hemos estado capaz de 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.

1

Otro poco de oro: de

Josh Peek Slicehost gem está lleno de recetas Capistrano que son mucho más simple y mucho más organizada que Deprec. Nada allí es especialmente específico de Slicehost, tampoco.

Cuestiones relacionadas