¿En qué directorio debo implementar las aplicaciones de Rails?

24

¿Cuál sería un directorio razonable y lógico en el que desplegar mis aplicaciones Rails de producción en un sistema Linux?

Algunos candidatos ...

/var/rails  <= There's a /var/www so this would be consistent with that 
               pattern. But I.T. guys have complained about stuff in /var 
               before.

/home/my_home_dir/rails  <= OK, not /var, but I'm not the only developer. 
                            Seems like it really ought to be a systemwide
                            location.

/home/rails  <= I don't know. That just seems weird.

/rails  <= Seems even weirder.

¿Qué es lo menos sorprendente y lo más normal que se puede hacer aquí?

(Información de fondo: una aplicación Rails es un montón de código del lado del servidor escrito en Ruby junto con un publicdirectorio que contiene JavaScript, CSS y quizás un poco de HTML. El publicdirectorio está asignado a un servidor Apache. Apache maneja el código Ruby a través de un módulo llamado Pasajero o mod_rails.)


Gracias por toda la ayuda. Creo que voy a ir con /opt/deployed_rails_apps. (Me gustan los nombres de directorio expositivos largos y la finalización de pestañas). /var/...También es un buen lugar, pero me quejé severamente de TI cuando intenté implementar cosas allí. Si fuera mi propia máquina, podría ir con /varo /srv.

Agvorth
fuente
Es posible que desee ver esta otra pregunta relacionada: serverfault.com/questions/29129/…
chmeee
una pregunta secundaria pero aún relacionada, estaba trabajando en un proyecto de rails contenido en el directorio ~ / Documents / quotes (directorio) y después de implementarlo, encontré para mi sorpresa unos 6 meses después, que la estructura de carpetas idéntica también está en / var / www / html / quotes: cuando se implementa, ¿los rails lo copian a la carpeta var? No tengo idea de cómo llegó todo desde el otro directorio. cualquier ayuda sería apreciada
BKSpurgeon 01 de

Respuestas:

5

Creo / opt sería el lugar para una aplicación como esta. Estoy de acuerdo con seguir el FHS según lo sugerido por chmeee, pero no estoy de acuerdo con que una aplicación Rails sea un servicio per se.

Argalatyr
fuente
Es difícil de decir, en realidad el software de rails está instalado en algún lugar del sistema (como una gema o paquete), lo que quiere colocar es la estructura de directorios para el 'servicio', la aplicación real que usa rails para servir algo.
chmeee
Reconocí que está hablando de una aplicación que ha creado (por lo tanto, "una aplicación Rails"), en lugar de Rails en sí. De cualquier manera, / srv parece estar mal.
Argalatyr
7

En las distribuciones CentOS Linux (y posteriormente RedHat), cuando instala el paquete httpd (para Apache 2), crea /var/wwwy espera que sus vhosts apunten aquí a su contenido web. El vhost predeterminado generalmente se descarga /var/www/htdocs, y los sitios / aplicaciones posteriores deben colocarse /var/www/sitename.

La ubicación real no debería importar mucho, pero es común ver /opt/www/sitename, /var/www/sitenameo, simplemente, /opt/wwwo /var/www.

Ya ha indicado algunas de las razones por las cuales algunas de las otras ubicaciones (como /home) no son realmente adecuadas para esto.

Personalmente, prefiero /var/www/sitenameya que es amigable con Apache y Rails, y es de todo el sistema.

Kevin Elliott
fuente
1
Las aplicaciones web deben ir en / var / www, especialmente si se sirven a través de un servidor web adecuado como Apache of Lighttpd. Más aún, dado que las políticas de SELinux se aplicarán correctamente a una aplicación Rails en / var / www y no en / opt.
wzzrd
6

Es posible que desee seguir el estándar de jerarquía del sistema de archivos (FHS) y colocarlo en

/srv : Data for services provided by this system

EDITAR:

No lo colocaría en /opt:

/opt : Add-on application software packages

Su propósito dice:

/ opt está reservado para la instalación de paquetes de software de aplicación complementarios.

Un paquete que se instalará en / opt debe ubicar sus archivos estáticos en un árbol de directorio / opt / u / opt / separado, donde hay un nombre que describe el paquete de software y es el nombre registrado de LANANA del proveedor.

No creo que una aplicación desarrollada sea un 'paquete de software'.

La razón de ser /srves

Este propósito principal de especificar esto es para que los usuarios puedan encontrar la ubicación de los archivos de datos para un servicio en particular, y para que los servicios que requieren un solo árbol para datos de solo lectura, datos de escritura y scripts (como scripts cgi) puedan ubicarse razonablemente.

Entiendo que una aplicación de rieles es un script cgi y debe colocarse en ella /srv.

chmeee
fuente
No sería demasiado fanático de lo que dice la FHS. Lo más importante es mantener sus paquetes personalizados lejos de los archivos del sistema operativo. Y los mejores lugares para eso son "/ usr / local" y "/ opt".
Andrioid
1
No soy fanático, pero me gusta su organización del sistema de archivos. En cualquier caso estoy de acuerdo que / usr / local y / opt son buenos para los paquetes de software, pero no creo que una aplicación Rails es un paquete de software
Chmeee
1
Según lo que dice la FHS, me /srvparece el directorio más adecuado. Estoy usando /srv/rails/application_name.
Teemu Leisti
0

Generalmente los pongo en / opt / app_name.

campos
fuente
0

En el sistema basado en Debian / ubuntu, tales aplicaciones generalmente se instalan en la carpeta / usr / share (es decir / usr / share / ruby), ya que son archivos no compilados (que irían a / usr / lib). Dado que su aplicación no es una aplicación estándar, probablemente la coloque en / usr / local / share para evitar que se sobrescriba con las actualizaciones del sistema.

/ opt es ciertamente también una posibilidad aquí.

txwikinger
fuente
0

Mantengo mis implementaciones en

/home/www.example.com/application

Los argumentos:

Inicio contendrá todas las partes móviles de un solo sitio web. Si tengo más sitios web sabré dónde encontrarlos.

Ivailo Bardarov
fuente