2011-01-02 5 views
6

En primer lugar, Feliz Año Nuevo a todos.Despliegue de varias instancias de una aplicación Rails: mismo código, múltiple

Soy nuevo en rieles, así que por favor toleran mal uso de la terminología ...

he desarrollado una sencilla aplicación Rails, respaldado por una base de datos MySQL.

Ahora me gustaría implementar esta aplicación en múltiples grupos independientes de usuarios (es decir, es una aplicación del club, y me gustaría implementarla en una serie de clubes completamente independientes).

Me gustaría utilizar el mismo código de aplicación de Rails tanto como sea posible, y solo tengo una instancia separada de la base de datos para cada club.

Como cada instancia se ejecutará en el mismo servidor (hasta que la carga del servidor resulte ser un problema), ¿supongo que puedo usar un puerto diferente para cada servidor de Rails para dirigir a los usuarios al grupo correcto?

Me gustaría leer que hay modos de prueba y producción, es posible tener múltiples instancias [adicionales] de modos de producción, p. club1, club2, todos comparten el mismo código, con bases de datos únicas?

Mis preguntas son cómo admitir múltiples instancias de base de datos separadas, y también ¿cuál es la mejor manera de enrutarlas?

Cualquier consejo sobre cómo proceder es muy apreciado.

Respuesta

1

Si está utilizando Git (¡sugiero que debería ser así!), Puede mantener una versión central de su código en un lugar y luego implementarlo varias veces, cambiando solo el archivo database.yml (no debe verificarse en su repositorio git en ese caso). http://git-scm.com/

Digamos que pone todo su código en github.com con el nombre de usuario 'snips' y el proyecto se llama 'clubster'. Usando algo como Heroku usted entonces hacer:

git clone https://github.com/snips/clubster.git 
cd clubster 
heroku create boxingclub 

Debido a Heroku configura automáticamente su base de datos no es necesario para un archivo database.yml

git push heroku master 

Y que tendría una versión de su código desplegados en boxingclub.heroku.com

Cuando se realizan cambios en su código que acaba de ir a cada una de sus instalaciones y hacer:

git pull origin master 
git push heroku master 

Que actualiza su código en esa instancia particular de su aplicación.

Y si te estás poniendo un poco más avanzado estarías buscando en Chef para administrar toda la configuración para ti. http://www.rubyinside.com/chef-tasty-server-configuraiton-2162.html

El otro enfoque sería tener algún tipo de sistema de subdominio, pero lo dejo a otros para que lo cubran.

+0

Gracias stef, esa es ciertamente una solución interesante. Debo aclarar que los servidores de rieles se ejecutarán en el mismo servidor y, si es posible, * se ejecutarán * desde el mismo código. Voy a pensar un poco en tu sugerencia. – Snips

Cuestiones relacionadas