Estoy buscando un buen tutorial de implementación para una aplicación Rails 3.1.1 en un servidor. Y bueno, realmente quiero decir completo. La razón por la que estoy publicando esta pregunta es que, aunque hay muchísimos tutoriales en la web (google, blogs, libros, otras preguntas sobre el stackoverflow, etc.), todos parecen centrarse en un problema con el proceso de implementación. o hacer algunas suposiciones sobre el entorno de despliegue que no coinciden con lo que necesito.Tutorial de implementación de aplicaciones Rails 3.1
Me doy cuenta de que implementar una aplicación de Rails en un servidor requiere una variedad de programas y herramientas diferentes que deben configurarse y de alguna manera siempre me quedo estancado en cosas "pequeñas" que me frustran.
Entonces, comencemos desde el principio. Lo que tengo ahora es un servidor al que puedo acceder a través de SSH y un nombre de dominio, llamémoslo www.example.com. El servidor ejecuta una versión nueva de Ubuntu 10.04 x64 y solo tiene un usuario instalado, a saber, la raíz (a través de la raíz, accedo al servidor con SSH). ¡Nota! No hay instalados Apache, Ruby, PHP, MySQL, cPanel o cualquier otro panel, solo lo mínimo que viene con una instalación nueva.
También el servidor web alojará una sola aplicación y la base de datos se ejecutará en la misma máquina.
Desde mi conocimiento del proceso de implementación de una aplicación Rails sigue los siguientes escenarios:
- Instalación de Ruby
ya lo he hecho esto usando RVM utilizando el multiusuario proceso de instalación (simplemente porque tengo solo el usuario root y lo hace automáticamente). Esto parece funcionar bien después, pero tengo algunas preguntas:
¿Tendría más sentido instalar Ruby directamente y no a través de RVM (estoy pensando que tal vez en términos de eficiencia? También RVM hace un poco de magia detrás los escenarios modificando algunos archivos bash_profile de formas que no entiendo y esto de alguna manera parece invasivo ...)?
¿Tendría más sentido instalar como un usuario separado a través de RVM (puede haber problemas de seguridad)?
- gemas necesarias
Ahora que Ruby se instala lo que sería el mejor conjunto inicial de gemas para instalar junto a él?
Instalé solo el paquete, de modo que una vez que cargué mi aplicación en el servidor puedo ejecutar un comando de instalación del paquete que instalará a su vez las gemas de la aplicación requerida.
Pregunta: ¿Debo instalar los gemelos de la gema de antemano? ¿Hay alguna otra gema que deba ser instalada?
- servidor Web
Esto es donde se pone difícil para mí. Estoy tratando de usar apache y mod-passenger para la implementación (parecen ser los más populares).Así que instalé el servidor web Apache y la gema del pasajero y todas las dependencias relacionadas (bibliotecas mencionadas por el pasajero).
Ahora, surgen los problemas. Lo primero es relacionado con el usuario. ¿Cómo se ejecuta Apache? Quiero decir debajo de cada usuario? Si lo instalé y (re) lo inicié usando el usuario raíz, ¿se ejecutará permanentemente bajo el usuario raíz? ¿Esto es malo? En caso afirmativo, ¿debería crear otro usuario? Si es así, ¿cómo? ¿En qué grupos debería poner al nuevo usuario? ¿Qué derechos debería tener? (A saber, a qué carpetas debería tener acceso). Cómo iniciar el Apache en este caso (en la raíz, en virtud de ese usuario, añadir una línea en alguna parte del archivo de configuración, etc.)
- configuración del Sitio Web
dónde poner la configuración de página web ¿cosas? ¿Está bien colocarlo en apache.conf, o debería crear un nuevo archivo en sites-available? ¿O debería simplemente reutilizar el archivo predeterminado que ya está presente allí? Si se ha creado un nuevo usuario en el paso anterior, ¿qué derechos debería tener en relación con los archivos de configuración?
Además ... ¿dónde colocar eventualmente la aplicación de rieles? ¿En qué carpeta sería mejor? En algún lugar debajo de casa? Tal vez en/var/www? Quiero saber cómo afectaría esto a los derechos del proceso de apache para la aplicación. (Por lo general, tengo problemas cuando presento una aplicación, me queja de que no tiene derechos en una carpeta específica. Además, al usar las nuevas canalizaciones de activos, que no entiendo del todo, se crean archivos de activos que parecen no tenerlos). heredar los derechos de carpeta principal ...)
- base de datos
Como base de datos que estoy usando MySQL y su instalación es bastante sencillo. La pregunta que tengo aquí está nuevamente relacionada con el usuario. ¿Debería usar un usuario especial para la base de datos? ¿Cómo gestiona realmente MySQL los usuarios (son internos, o son los usuarios de Linux o ...?). ¿Debería el usuario de la base de datos ser el mismo que el "usuario web" desde arriba? ¿O debería ser uno diferente?
- Activos
Aquí estoy totalmente perdido. Realmente tengo problemas para que la tubería de activos funcione. Revisé el episodio de Railscasts y también el tutorial del sitio web Rails y, en teoría, entiendo el tema, pero tengo problemas en la práctica.
Así que las preguntas aquí serían: ¿qué comandos debo ejecutar para precompilar los activos? (Intentando ejecutar activos de rake: precompilación). ¿Está bien? ¿Qué debería cambiar en el archivo production.rb? ¿Cómo funcionan los activos generados en relación con el usuario web o los usuarios de la base de datos creados anteriormente? Personalmente tengo un problema en este paso: los archivos de registro dicen que algunos archivos css no son accesibles (por ejemplo, tengo la biblioteca jqplot instalada en la carpeta proveedor/activos y no se puede acceder a sus archivos; si agrego un archivo de manifiesto aquí) ?).
Sería genial si alguien pudiera indicarme un artículo agradable o un recurso que explique todo esto. El área principal en la que estoy teniendo problemas es cómo interactúan Apache, Passenger, Ruby, Rails y MySQL con un usuario de Linux. ¿Cómo configurar correctamente los permisos para la carpeta de la aplicación Rails? ¿Cómo afecta la canalización de activos a este material de permiso de usuario?
Gracias
Estoy de acuerdo con casi todo lo que hay aquí. Para compilar e instalar un sistema Ruby sin RVM utilizamos [ruby-build] (https://github.com/sstephenson/ruby-build) (sin rbenv). Y podría ser bueno tener en cuenta que si usa Capistrano, todo lo que realmente necesita es la gema de bundler instalada, instalando el resto con args de línea de comando correctos, Cap lo hará por usted. –