Em que diretório devo implantar aplicativos Rails?

24

Qual seria um diretório lógico e razoável para implantar meus aplicativos Rails de produção em um sistema Linux?

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

Qual é a coisa menos surpreendente e mais normal a se fazer aqui?

(Informações de segundo plano - um aplicativo Rails é um monte de código do lado do servidor escrito em Ruby, juntamente com um publicdiretório que contém JavaScript, CSS e talvez um pouco de HTML. O publicdiretório é mapeado para um Apache vhost. O Apache lida com o código Ruby através de um módulo chamado Passageiro ou mod_rails.)


Obrigado pela ajuda, tudo. Eu acho que vou com /opt/deployed_rails_apps. (Gosto de nomes de diretório longos e expositivos e do preenchimento de guias.) /var/...Também é um bom lugar, mas fiquei com uma reclamação severa quando tentei implantar coisas lá. Se fosse minha própria máquina, eu poderia ir com /varou /srv.

Agvorth
fonte
Você pode querer ver esta outra questão relacionada: serverfault.com/questions/29129/...
chmeee
uma pergunta secundária, mas ainda relacionada, eu estava trabalhando em um projeto de trilhos contido no diretório ~ / Documents / quotes (diretório) e, depois de implantá-lo, descobri muito para minha surpresa, cerca de 6 meses depois, que a estrutura de pastas idêntica também está em / var / www / html / quotes - ao implantar, os trilhos o copiam para a pasta var? Não tenho idéia de como tudo chegou lá do outro diretório. qualquer ajuda seria apreciada
BKSpurgeon

Respostas:

5

Eu acho que / opt seria o lugar para um aplicativo como este. Concordo em seguir a ESF, conforme sugerido por chmeee, mas não concordo que um aplicativo Rails seja um serviço em si.

Argalatyr
fonte
É difícil dizer que, na verdade, o software rails não é instalado no sistema em algum lugar (como uma jóia ou pacote), o que ele deseja colocar é a estrutura de diretórios do 'serviço', o aplicativo real que usa trilhos para servir a alguma coisa.
28410 chmeee
Eu reconheci que ele está falando sobre um aplicativo que ele criou (portanto, "um aplicativo Rails"), e não o próprio Rails. De qualquer forma, / srv parece errado.
8609 Argalatyr
7

Nas distribuições do CentOS Linux (e posteriormente no RedHat), quando você instala o pacote httpd (para Apache 2), ele cria /var/wwwe espera que seus vhosts apontem para o seu conteúdo da web aqui. O vhost padrão normalmente é despejado /var/www/htdocse sites / aplicativos subsequentes devem ser colocados /var/www/sitename.

A localização real não importa muito, mas é comum ver /opt/www/sitename, /var/www/sitenameou, simplesmente, /opt/wwwou /var/www.

Você já declarou algumas das razões pelas quais alguns dos outros locais (como /home) não são realmente adequados para isso.

Pessoalmente, prefiro, /var/www/sitenamepois é amigável ao Apache e ao Rails, e é de todo o sistema.

Kevin Elliott
fonte
1
Os aplicativos da Web devem entrar em / var / www, especialmente se forem servidos através de algo como um servidor da web adequado, como o Apache of Lighttpd. Além disso, como as políticas do SELinux serão aplicadas corretamente a um aplicativo Rails em / var / www e não em / opt.
wzzrd
6

Convém seguir o FHS (Filesystem Hierarchy Standard) e colocá-lo em

/srv : Data for services provided by this system

EDITAR:

Eu não o colocaria em /opt:

/opt : Add-on application software packages

Seu propósito diz:

/ opt está reservado para a instalação de pacotes de aplicativos complementares.

Um pacote a ser instalado em / opt deve localizar seus arquivos estáticos em uma árvore de diretório / opt / ou / opt / separada, onde é um nome que descreve o pacote de software e é o nome registrado do LANANA do fornecedor.

Não acho que um aplicativo desenvolvido seja um 'pacote de software'.

A justificativa para /srvé

Esse principal objetivo de especificar isso é para que os usuários possam encontrar o local dos arquivos de dados para um serviço específico e para que serviços que exijam uma única árvore para dados somente leitura, dados graváveis ​​e scripts (como scripts cgi) possam ser colocados razoavelmente.

Eu entendo que um aplicativo rails é um script cgi e deve ser inserido /srv.

chmeee
fonte
Eu não seria muito fanático pelo que a ESF diz. O mais importante é manter seus pacotes personalizados longe dos arquivos do sistema operacional. E os melhores lugares para isso são "/ usr / local" e "/ opt".
9389 Andrioid
1
Não sou fanático, mas gosto da organização do sistema de arquivos. Em qualquer caso, concordo que / usr / local e / opt são bons para pacotes de software, mas eu não acho que um app Rails é um pacote de software
chmeee
1
Com base no que a ESF diz, /srvparece ser o diretório mais adequado para mim. Estou usando /srv/rails/application_name.
Teemu Leisti 15/03
0

Eu geralmente os coloco em / opt / app_name.

Campos
fonte
0

No sistema baseado no debian / ubuntu, esses aplicativos geralmente são instalados na pasta / usr / share (por exemplo, / usr / share / ruby), uma vez que são arquivos não compilados (que entrariam em / usr / lib). Como seu aplicativo não é um aplicativo padrão, você provavelmente o colocaria em / usr / local / share, evitando que ele seja sobrescrito por qualquer atualização do sistema.

/ opt é certamente também uma possibilidade aqui.

txwikinger
fonte
0

Eu mantenho minhas implantações em

/home/www.example.com/application

Os argumentos:

O Home conterá todas as partes móveis de um único site. Se eu tiver mais sites, saberei onde encontrá-los.

Ivailo Bardarov
fonte