Ich habe mit einem Team zusammengearbeitet, das alle Anwendungs- und HTTP-Dienste wie Apache oder Tomcat im Verzeichnis '/ srv' installiert hat. Ich vermute meistens, um die installierten Dienste so weit wie möglich vom Betriebssystem zu trennen. Für meine eigenen Projekte habe ich diese Praxis beibehalten. Im Laufe der Zeit sah es jedoch immer mehr so aus, als wäre dies keine sehr gute Idee: Es hindert Sie daran, verteilungsspezifische Pakete zu verwenden (sie hatten in diesem Team einen sehr schlechten Ruf, daher handelte es sich meistens nur um benutzerdefinierte Installationen), und ich bemerkte dies Ich hatte einige Probleme, als ich versuchte, Kochbücher zu verwenden, die bereits verfügbar sind.
In letzter Zeit war ich versucht, auf die Verwendung verteilungsspezifischer Pakete umzusteigen, anstatt zu versuchen, benutzerdefinierte Installationen zu erstellen, die in diese Verzeichnisstruktur passen. Ich habe mich gefragt, ob es etwas gibt, das ich übersehen könnte. Gibt es tatsächlich einen guten Grund, alles in ein '/ srv'-Verzeichnis zu stellen, oder einen guten Grund, die verteilungsspezifischen Pakete nicht zu verwenden?
Was ich derzeit in meinem Stack benötige, ist: nginx , Tomcat (Oracle JDK ) und MongoDB .
/srv
kann eine gute Möglichkeit sein, partitionweite Richtlinien wie se-linux oder noexec anzuwenden, während/var
möglicherweise Standardflags erforderlich sind. Ich habe eine Verwendung gesehen,/srv
die schreibgeschützt war, und der Administrator hat die Verwendung eines dedizierten Mointpoints anstelle/var
dieses Zwecks gerechtfertigt ./opt
aber um es zu bedienen, neu erstellen / symlink / ??? unter/srv/...
. Oder besser noch Daten deklarieren. Aber dann wäre ein Java-basierter Blog auch Daten oder würde das unter / opt gehen oder ... OH MEINE GUTEN SO VIELEN OPTIONEN! - Bitte beachten Sie, dass die aktuelle Version 2.3 ist. Es wurde am 29. Januar 2004 angekündigt. Es gibt also nicht einmal/run
das, was jetzt weit verbreitet ist (nicht, dass es allen gefällt!). Die FHS ist kein Standard, aber sehr veraltetAntworten:
Der FHS - konform Pfad zu installieren Software von Drittanbietern ist nicht
/srv
, aber/opt
. Überprüfen Sie hier und hier .In Bezug darauf, ob vorkompilierte Pakete verwendet werden sollen oder nicht, haben Sie zwei Möglichkeiten:
Wenn Sie nur 5-10 Maschinen warten müssen,
/opt
ist es machbar, alles unterzubringen. Wenn Sie jedoch eine Farm von mehr als ein paar Hundert unterhalten, würden Sie es falsch machenMeiner Meinung nach besteht der professionelle Weg darin, die vom Hersteller bereitgestellten vorkompilierten Pakete zu verwenden, es sei denn, es gibt einen zwingenden Grund, dies nicht zu tun.
quelle
Ich denke nicht, dass
/srv
es jemals eine gute Idee war. Für diesen Fall ist es/usr/local
oder/opt
Verzeichnis, während/srv
für die ortsspezifische Daten, die durch das System bedient werden.Dies wird durch den Dateisystem-Heararchy-Standard definiert. Beachten Sie, dass nicht in allen Distributionen 100% folgen. FHS schlägt dies vor:
/srv
- Standortspezifische Daten, die vom System bereitgestellt werden./opt
- Optionale Anwendungssoftwarepakete.In Bezug auf Distribution-spezifische Pakete sollten Sie diese im Allgemeinen verwenden, es sei denn, es gibt einen sehr guten Grund, dies nicht zu tun. Es kann zu schwierig sein, alles auf dem neuesten Stand zu halten und sicherzustellen, dass Sie über die neuesten Patches verfügen, und das System kann zusätzlichen Sicherheitsrisiken ausgesetzt sein. Selbst in den Fällen, in denen der Paketmanager Ihrer Linux-Distribution eine ältere als die erforderliche Version bereitstellt, finden Sie in der Regel von der Community verwaltete Repositorys für neuere Versionen bestimmter Pakete, die einfacher zu warten sind als Ihre eigenen Pakete. Dies ist normalerweise bei populäreren Paketen der Fall, wie
nginx
bei Verteilungen wieCentOS
(persönliche Erfahrung).Was ich
/srv
stattdessen behalten würde (denken Sie daran, dies ist eine persönliche Präferenz):/srv/http/example.com
)/srv/ftp/example.com
)/srv/mail/example.com/user
)Dies hilft mir,
/srv/
mit normalerweise verwalteten Daten organisiert zu bleiben , während die meisten Distributionen diese Dateien behalten würden./var
Ich verwende dies, damit ich dieselbe Verzeichnisstruktur für gemeinsame standortspezifische Daten über verschiedene Distributionen hinweg haben kann.quelle
Dieses spezielle Beispiel, bei dem jedes Paket auf / srv ausgerichtet wird, obwohl es eine Form der Arbeitsplatzsicherheit darstellt, erscheint aus geschäftlicher Sicht einzigartig kurzsichtig und unproduktiv (wobei produktiv bedeutet, die Benutzerfreundlichkeit / Rentabilität / Sicherheit / etc. Der Arbeitsumgebung, für die diese Anwendungen eingesetzt werden, zu verbessern). .
Wenn Sie damit leben können, was ein Distributionspaket mit Ihrem System macht, nutzen Sie die Entwicklung und testen das Team, das das Paket erstellt, jetzt und mit den Updates. Wenn Sie nicht mit dem leben können, was das Distributionspaket mit Ihrem System macht, suchen Sie ein anderes Paket oder überzeugen Sie die Entwicklungsgruppe, Dinge "auf Ihre Weise" zu tun (oder machen Sie es zumindest einfacher, es "auf Ihre Weise" zu tun). ) oder kapseln Sie es in eine virtuelle Maschine. Oder setzen Sie den geringsten Aufwand ein, um das tatsächliche / wahrgenommene Problem zu beheben und die Bereitstellung und das Konfigurationsmanagement mit Ihrem bevorzugten Toolset zu automatisieren. Um Dijkstra zu paraphrasieren: Einfachheit und Wiederholbarkeit sind Voraussetzungen für Zuverlässigkeit.
quelle