In welchem ​​Verzeichnis sollte ich Rails-Apps bereitstellen?

24

Was wäre ein vernünftiges und logisches Verzeichnis für die Bereitstellung meiner Production Rails-Apps auf einem Linux-System?

Einige Kandidaten ...

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

Was ist hier am wenigsten erstaunlich und am normalsten zu tun?

(Hintergrundinformationen - Eine Rails-App besteht aus einer Reihe von serverseitigem Code, der in Ruby zusammen mit einem publicVerzeichnis geschrieben wurde, das JavaScript, CSS und möglicherweise ein wenig HTML enthält. Das publicVerzeichnis ist einem Apache-Host zugeordnet. Apache verwaltet den Ruby-Code über ein Modul genannt Passagier oder mod_rails.)


Danke für die Hilfe, alle. Ich glaube, ich gehe mit /opt/deployed_rails_apps. (Ich mag lange Verzeichnisnamen und das Ausfüllen von Registerkarten.) /var/...Ist auch ein guter Ort, aber die IT hat mich sehr geärgert, als ich versuchte, dort Dinge bereitzustellen. Wenn es meine eigene Maschine wäre, könnte ich mit /varoder gehen /srv.

Agvorth
quelle
Möglicherweise möchten Sie diese andere verwandte Frage sehen: serverfault.com/questions/29129/…
chmeee
Eine Nebenfrage, aber immer noch verwandt. Ich arbeitete an einem Rails-Projekt, das im Verzeichnis ~ / Documents / quotes () enthalten war, und stellte nach der Bereitstellung einige Monate später zu meiner Überraschung fest, dass sich die identische Ordnerstruktur auch in / var / befindet. www / html / quotes - kopiert Rails diese beim Deployment in den var-Ordner? Ich habe keine Ahnung, wie alles aus dem anderen Verzeichnis dorthin gekommen ist. Jede Hilfe wäre dankbar
BKSpurgeon

Antworten:

5

Ich denke, / opt wäre der richtige Ort für eine solche Anwendung . Ich stimme der von chmeee vorgeschlagenen Befolgung der FHS zu, bin jedoch nicht der Meinung, dass eine Rails-App per se ein Service ist.

Argalatyr
quelle
Es ist schwer zu sagen, dass die Rails-Software tatsächlich irgendwo im System installiert ist (als Juwel oder Paket). Was er platzieren möchte, ist die Verzeichnisstruktur für den "Service", die eigentliche Anwendung, die Rails verwendet, um etwas zu bedienen.
Mittwoch,
Ich habe erkannt, dass er von einer App spricht, die er erstellt hat (daher "eine Rails-App"), und nicht von Rails selbst. In beiden Fällen scheint / srv falsch zu sein.
Argalatyr
7

Bei CentOS Linux-Distributionen (und anschließend bei RedHat) wird bei der Installation des httpd-Pakets (für Apache 2) ein /var/wwwVerweis Ihrer vhosts auf Ihren Webinhalt hier erstellt. Der Standard-vhost wird normalerweise gespeichert /var/www/htdocs, und nachfolgende Sites / Apps sollten gespeichert werden /var/www/sitename.

Die tatsächliche Lage soll nicht viel, aber es ist üblich , um zu sehen /opt/www/sitename, /var/www/sitenameoder einfach /opt/wwwoder /var/www.

Sie haben bereits einige Gründe genannt, warum einige der anderen Standorte (wie /home) nicht wirklich dafür geeignet sind.

Ich persönlich bevorzuge es, /var/www/sitenameda es Apache und Rails freundlich und systemweit ist.

Kevin Elliott
quelle
1
Web-Apps sollten in / var / www abgelegt werden, insbesondere wenn sie über einen geeigneten Webserver wie Apache von Lighttpd bereitgestellt werden. Dies gilt umso mehr, als SELinux-Richtlinien ordnungsgemäß auf eine Rails-App in / var / www und nicht in / opt angewendet werden.
Wzzrd
6

Möglicherweise möchten Sie dem Dateisystem-Hierarchie-Standard (FHS) folgen und ihn einfügen

/srv : Data for services provided by this system

BEARBEITEN:

Ich würde es nicht platzieren in /opt:

/opt : Add-on application software packages

Ihr Zweck lautet:

/ opt ist für die Installation von Add-On-Anwendungssoftwarepaketen reserviert.

Ein Paket, das in / opt installiert werden soll, muss seine statischen Dateien in einem separaten Verzeichnisbaum / opt / oder / opt / ablegen. Dabei handelt es sich um einen Namen, der das Softwarepaket beschreibt und den LANANA-registrierten Namen des Anbieters.

Ich glaube nicht, dass eine entwickelte Anwendung ein "Softwarepaket" ist.

Der Grund dafür /srvist

Der Hauptzweck dieser Angabe besteht darin, dass Benutzer den Speicherort der Datendateien für einen bestimmten Dienst finden und dass Dienste, die einen einzigen Baum für schreibgeschützte Daten, beschreibbare Daten und Skripte (z. B. CGI-Skripte) benötigen, sinnvoll platziert werden können.

Ich verstehe, dass eine Rails-App ein CGI-Skript ist und in platziert werden sollte /srv.

chmeee
quelle
Ich wäre nicht zu fanatisch, was die FHS sagt. Das Wichtigste ist, Ihre benutzerdefinierten Pakete von den Betriebssystemdateien fernzuhalten. Und die besten Orte dafür sind "/ usr / local" und "/ opt".
Andrioid
1
Ich bin nicht fanatisch, aber ich mag die Organisation ihres Dateisystems. Auf jeden Fall stimme ich zu, dass / usr / local und / opt für Softwarepakete gut sind, aber ich denke nicht, dass eine Rails-App ein Softwarepaket ist
chmeee
1
Basierend auf dem, was die FHS sagt, /srvscheint mir das am besten passende Verzeichnis zu sein. Ich benutze /srv/rails/application_name.
Teemu Leisti
0

Normalerweise lege ich sie in / opt / app_name.

Felder
quelle
0

In Debian / Ubuntu-basierten Systemen werden solche Anwendungen normalerweise im Ordner / usr / share (dh / usr / share / ruby) installiert, da es sich um nicht kompilierte Dateien handelt (die in / usr / lib abgelegt würden). Da es sich bei Ihrer Anwendung nicht um eine Standardanwendung handelt, würden Sie sie wahrscheinlich in / usr / local / share ablegen, um zu verhindern, dass sie von Systemaktualisierungen überschrieben wird.

/ opt ist sicherlich auch hier eine möglichkeit.

txwikinger
quelle
0

Ich behalte meine Einsätze bei

/home/www.example.com/application

Die Argumente:

Home enthält alle beweglichen Teile einer einzelnen Website. Wenn ich mehr Websites habe, weiß ich, wo ich sie finden kann.

Ivailo Bardarov
quelle