In quale directory devo distribuire le app Rails?


24

Quale sarebbe una directory ragionevole e logica in cui distribuire le mie app Rails di produzione su un sistema Linux?

Alcuni candidati ...

/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 è la cosa meno sorprendente e più normale da fare qui?

(Informazioni di base: un'app Rails è un gruppo di codice lato server scritto in Ruby insieme a una publicdirectory contenente JavaScript, CSS e forse un po 'di HTML. La publicdirectory è mappata su un vhost Apache. Apache gestisce il codice Ruby attraverso un modulo chiamato Passeggero o mod_rails.)


Grazie per l'aiuto, tutto. Penso che andrò con /opt/deployed_rails_apps. (Mi piacciono i nomi lunghi delle directory espositive e il completamento delle tab.) /var/...È anche un buon posto, ma ho avuto un brusco brontolio dall'IT quando ho provato a distribuire roba lì. Se fosse la mia macchina potrei andare con /varo /srv.


Potresti voler vedere questa altra domanda correlata: serverfault.com/questions/29129/…
chmeee

una domanda secondaria ma ancora correlata, stavo lavorando su un progetto di rotaie contenuto nella directory ~ / Documents / quotes (directory) e dopo averlo distribuito, ho scoperto con mia grande sorpresa circa 6 mesi dopo, che la struttura identica delle cartelle è anche in / var / www / html / quote - durante la distribuzione, le rotaie lo copiano nella cartella var? Non ho idea di come sia arrivato tutto lì dall'altra directory. qualsiasi aiuto sarebbe apprezzato
BKSpurgeon,

Risposte:


5

Penso / opt sarebbe il posto per un'applicazione come questa. Accetto di seguire l'FHS come suggerito da chmeee, ma non sono d'accordo sul fatto che un'app Rails sia di per sé un servizio.


È difficile da dire, in realtà il software di rotaie non è installato nel sistema da qualche parte (come gemma o pacchetto), ciò che vuole posizionare è la struttura di directory per il 'servizio', l'applicazione reale che utilizza le rotaie per servire qualcosa.
Chmeee,

Ho riconosciuto che sta parlando di un'app che ha creato (quindi, "un'app Rails"), piuttosto che Rails stessa. Ad ogni modo, / srv sembra sbagliato.
Argalatyr,

7

Nelle distribuzioni CentOS Linux (e successivamente RedHat), quando si installa il pacchetto httpd (per Apache 2), viene creato /var/wwwe si aspetta che i vhosts puntino al contenuto Web qui. Il vhost predefinito viene in genere scaricato /var/www/htdocse devono essere inseriti siti / app successivi /var/www/sitename.

La posizione attuale non dovrebbe importa molto, ma è comune vedere /opt/www/sitename, /var/www/sitenameo semplicemente /opt/wwwo /var/www.

Hai già indicato alcuni dei motivi per cui alcune delle altre posizioni (come /home) non sono davvero adatte a questo.

Personalmente, preferisco /var/www/sitenamepoiché è amichevole con Apache e Rails ed è a livello di sistema.


1
Le app Web dovrebbero andare in / var / www, specialmente se sono servite attraverso qualcosa come un server web adeguato come Apache of Lighttpd. Tanto più, dal momento che le politiche di SELinux verranno correttamente applicate a un'app Rails in / var / www e non in / opt.
wzzrd,

6

Potresti voler seguire il Filesystem Hierarchy Standard (FHS) e inserirlo

/srv : Data for services provided by this system

MODIFICARE:

Non lo metterei in /opt:

/opt : Add-on application software packages

Il suo scopo dice:

/ opt è riservato per l'installazione di pacchetti software applicativi aggiuntivi.

Un pacchetto da installare in / opt deve individuare i suoi file statici in un albero directory separato / opt / o / opt /, dove è presente un nome che descrive il pacchetto software ed è il nome registrato LANANA del provider.

Non penso che un'applicazione sviluppata sia un "pacchetto software".

La logica per /srvè

Questo scopo principale di specificare ciò è che gli utenti possano trovare la posizione dei file di dati per un particolare servizio e che i servizi che richiedono un singolo albero per dati di sola lettura, dati scrivibili e script (come gli script cgi) possano essere ragionevolmente posizionati.

Capisco che un'app di rails è uno script cgi e dovrebbe essere inserita in /srv.


Non sarei troppo fanatico di ciò che dice l'FHS. La cosa più importante è mantenere i pacchetti personalizzati lontani dai file del sistema operativo. E i posti migliori per questo sono "/ usr / local" e "/ opt".
Andrioid,

1
Non sono un fanatico, ma mi piace la loro organizzazione del filesystem. In ogni caso, sono d'accordo che / usr / local e / opt siano buoni per i pacchetti software, ma non credo che un'app rails sia un pacchetto software
chmeee,

1
Sulla base di ciò che dice l'FHS, mi /srvsembra la directory più adatta. Sto usando /srv/rails/application_name.
Teemu Leisti,


0

Nel sistema basato su debian / ubuntu tali applicazioni sono solitamente installate nella cartella / usr / share (cioè / usr / share / ruby), poiché sono file non compilati (che andrebbero in / usr / lib). Poiché la tua applicazione non è un'applicazione standard, probabilmente la inseriresti in / usr / local / share impedendole di essere sovrascritta da eventuali aggiornamenti di sistema.

/ opt è sicuramente anche una possibilità qui.


0

Tengo i miei schieramenti dentro

/home/www.example.com/application

Gli argomenti:

Home conterrà tutte le parti mobili di un singolo sito Web. Se avrò più siti web saprò dove trovarli.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.