Dans quel répertoire dois-je déployer les applications Rails?

24

Quel serait un répertoire raisonnable et logique dans lequel déployer mes applications Rails de production sur un système Linux?

Quelques candidats ...

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

Quelle est la chose la moins étonnante et la plus normale à faire ici?

(Informations générales - une application Rails est un tas de code côté serveur écrit en Ruby avec un publicrépertoire contenant JavaScript, CSS et peut-être un peu de HTML. Le publicrépertoire est mappé sur un vhost Apache. Apache gère le code Ruby via un module appelé Passager ou mod_rails.)


Merci pour l'aide tous. Je pense que je vais y aller /opt/deployed_rails_apps. (J'aime les noms de répertoire longs et expositifs, et la complétion des onglets.) /var/...Est également un bon endroit, mais j'ai été sévèrement grommelé par l'informatique lorsque j'ai essayé de déployer des choses là-bas. Si c'était ma propre machine, j'irais avec /varou /srv.

Agvorth
la source
Vous voudrez peut-être voir cette autre question connexe: serverfault.com/questions/29129/…
chmeee
une question secondaire mais toujours liée je travaillais sur un projet de rails contenu dans le répertoire ~ / Documents / quotes (répertoire) et après l'avoir déployé, j'ai trouvé à ma grande surprise quelque 6 mois plus tard, que la structure de dossiers identique se trouve également dans / var / www / html / quotes - lors du déploiement, rails le copie-t-il dans le dossier var? Je n'ai aucune idée de comment tout cela est arrivé de l'autre répertoire. toute aide serait appréciée
BKSpurgeon

Réponses:

5

Je pense que / opt serait l'endroit idéal pour une application comme celle-ci. Je suis d'accord pour suivre le FHS comme suggéré par chmeee, mais je ne suis pas d'accord qu'une application Rails soit un service en soi.

Argalatyr
la source
Il est difficile de dire, en fait, le logiciel de rails n'est pas installé quelque part dans le système (comme un joyau ou un package), ce qu'il veut placer, c'est la structure de répertoire du `` service '', l'application réelle qui utilise les rails pour servir quelque chose.
chmeee
J'ai reconnu qu'il parlait d'une application qu'il avait créée (d'où "une application Rails"), plutôt que de Rails lui-même. Quoi qu'il en soit, / srv semble incorrect.
Argalatyr
7

Sur les distributions CentOS Linux (et par la suite RedHat), lorsque vous installez le package httpd (pour Apache 2), il crée /var/wwwet attend que vos vhosts pointent vers votre contenu Web ici. Le vhost par défaut est généralement vidé /var/www/htdocs, et les sites / applications suivants doivent être ajoutés /var/www/sitename.

L'emplacement réel ne devrait pas beaucoup d' importance, mais il est fréquent de voir /opt/www/sitename, /var/www/sitenameou tout simplement /opt/wwwou /var/www.

Vous avez déjà indiqué quelques-unes des raisons pour lesquelles certains autres emplacements (comme /home) ne sont pas vraiment adaptés à cela.

Personnellement, je préfère /var/www/sitenamecar il est compatible avec Apache et Rails et est à l'échelle du système.

Kevin Elliott
la source
1
Les applications Web doivent aller dans / var / www, surtout si elles sont servies par quelque chose comme un serveur Web approprié comme Apache of Lighttpd. D'autant plus que les politiques SELinux seront correctement appliquées à une application Rails dans / var / www et non dans / opt.
wzzrd
6

Vous pouvez suivre la norme de hiérarchie du système de fichiers (FHS) et la placer dans

/srv : Data for services provided by this system

MODIFIER:

Je ne le placerais pas dans /opt:

/opt : Add-on application software packages

Son but dit:

/ opt est réservé à l'installation de progiciels d'application complémentaires.

Un package à installer dans / opt doit localiser ses fichiers statiques dans une arborescence de répertoires / opt / ou / opt / distincte, où est un nom décrivant le package logiciel et le nom enregistré LANANA du fournisseur.

Je ne pense pas qu'une application développée soit un «progiciel».

La raison d' être /srvest -

Le but principal de cette spécification est de permettre aux utilisateurs de trouver l'emplacement des fichiers de données pour un service particulier et de pouvoir placer raisonnablement les services qui nécessitent une seule arborescence pour les données en lecture seule, les données inscriptibles et les scripts (tels que les scripts cgi).

Je comprends qu'une application rails est un script cgi et doit être placée dans /srv.

chmeee
la source
Je ne serais pas trop fanatique de ce que dit la FHS. La chose la plus importante est de garder vos packages personnalisés loin des fichiers du système d'exploitation. Et les meilleurs endroits pour cela sont "/ usr / local" et "/ opt".
Andrioid
1
Je ne suis pas fanatique, mais j'aime leur organisation de système de fichiers. En tout cas, je conviens que / usr / local et / opt sont bons pour les progiciels, mais je ne pense pas qu'une application rails soit un progiciel
chmeee
1
D'après ce que dit la FHS, cela /srvsemble être le répertoire le plus approprié pour moi. J'utilise /srv/rails/application_name.
Teemu Leisti
0

Je les mets généralement dans / opt / app_name.

des champs
la source
0

Dans un système basé sur Debian / Ubuntu, ces applications sont généralement installées dans le dossier / usr / share (c'est-à-dire / usr / share / ruby), car ce sont des fichiers non compilés (qui iraient dans / usr / lib). Étant donné que votre application n'est pas une application standard, vous la mettriez probablement dans / usr / local / share pour éviter qu'elle ne soit écrasée par les mises à jour du système.

/ opt est certainement aussi une possibilité ici.

txwikinger
la source
0

Je garde mes déploiements dedans

/home/www.example.com/application

Les arguments:

La page d'accueil contiendra toutes les parties mobiles d'un site Web unique. Si j'ai plus de sites Web, je saurai où les trouver.

Ivailo Bardarov
la source