Sollten Websites gemäß der empfohlenen Verwendung in / var / oder / usr / leben?

62

Nach einer Führung über die Struktur Linux - Verzeichnisses , /usr/ist für Anwendungsdateien, und /var/ist für Dateien , die geändert werden (ich nehme an, dies bedeutet „Dateien , die zu den Anwendungen gehören“). Ist das richtig?

Wenn dies der Fall ist, bin ich ein wenig hin und her gerissen, wenn ich eines von beiden benutze. Eine Website ist eine Anwendung (wenn sie sozusagen dynamisch ist), in anderen Fällen handelt es sich jedoch nur um eine Sammlung von Dateien, die von Apache verwendet werden.

Das voreingestellte www-Verzeichnis ist gültig. Sollten /var/www/wir also nachziehen, indem wir /var/websites/(oder ähnliches) verwenden, oder wählen, /usr/websites/da es sich um Anwendungen handeln könnte?

Dies ist eine sehr triviale Frage, aber sie nervt mich trotzdem. Für unseren Fall neige ich zu /usr/weboder so etwas, da unsere Websites alle Anwendungen sind.

Aktualisieren:

Dies gilt für unsere Unternehmenswebsites. Es handelt sich nicht um einen gemeinsam genutzten Hosting-Server, daher brauchen wir uns keine Gedanken darüber zu machen /home/, wie diese aufgeteilt werden.

Nick Bolton
quelle
10
Ich denke nicht, dass die Frage so trivial ist. Eigentlich ist es ziemlich gut. Interessant.
Aron Rotteveel

Antworten:

63

Nach Angaben der FHS , /usrist für shareable, read-only data- nicht , wo Sie die Website setzen wollen. Hier sollten Sie Ihren Code einfügen (Fedora erledigt dies beispielsweise für Wordpress). Siehe auch das Paketierungshandbuch für Web-Assets für Fedora.

/varist "Variable Datendateien. Dies umfasst Spool-Verzeichnisse und -Dateien, Verwaltungs- und Protokollierungsdaten sowie vorübergehende und temporäre Dateien." - besser, aber immer noch nicht ganz richtig - aber viele Systeme werden verwendet /var/www. Selbst wenn Sie sich irren, sind Sie in guter Gesellschaft.

/srvsteht für "ortsspezifische Daten, die von diesem System bereitgestellt werden". - Das scheint eine gute Übereinstimmung zu sein, ist aber viel seltener als /var/www.

Der andere übliche Ort, an dem die Site-Dateien abgelegt werden, besteht darin /home, einen speziellen Benutzer namens websiteoder einen solchen zu erstellen und die Dateien dann in das Homedir des Benutzers zu stellen (z /home/website. B. ).

James Polley
quelle
4
Ah, meine Arbeit verwendet /srv- da ich das noch nie zuvor gesehen hatte, dachte ich, dass es von ihnen geschaffen wurde. Ist es eine Redhat / CentOS-Sache?
Nick Bolton
12
Die Standardeinstellung lautet nur, /var/wwwweil Distributionen keine Berührung zulassen /srv. Das muss der Systemadministrator konfigurieren. Deshalb ist es "viel seltener" und auch richtig.
Michael Hampton
28

Schauen Sie sich den Filesystem Hierarchy Standard ( Wikipedia ) an. Ich selbst verwende / srv / web / $ domain / {htdocs, logs, cgi-bin, ...}.

ptman
quelle
3
Ich mache das auch so, aber anstelle von "www" verwende ich immer den Dienstnamen "httpd". Also habe ich / srv / httpd / $ domain ... oder / srv / smbd / sharename ... So ist es einfacher zu sehen, welcher Dienst die Dateien bedient. ZB auf einigen Systemen haben wir / srv / nginx / $ domain
Raffael Luthiger
9

Websites sollten sich in den privaten Verzeichnissen der Benutzer befinden. Sie sind Benutzerdaten, sollten von einem Benutzer pro Site isoliert werden, und dynamischer Inhalt sollte wieder als separater Benutzer ausgeführt werden, mit Dateien, die der dynamische Inhalt mit den entsprechenden Berechtigungen lesen und ändern muss.

Aktualisieren:

Nur weil es sich nicht um einen gemeinsam genutzten Hosting-Server handelt, sollten Sie sich nicht auf bewährte Sicherheitsmethoden einlassen und unabhängige Rollen in ihre eigenen Sicherheitszonen unterteilen.

womble
quelle
7

Die endgültige Anleitung ist der Dateisystem-Hierarchie-Standard, der besagt, dass dies /srvder richtige Ort ist.

Dennis Williamson
quelle
2
Ich lese es nicht so - oder zumindest, ich lese es in diesem Punkt als mehrdeutig. Die meisten Websites werden nicht einfach bedient by this system, sondern von einer ganzen Reihe von Systemen. und die beiden Sätze, die mit beginnen, This setup will differ from host to host.deuten darauf hin, dass dies nicht der Ort für Dateien ist, die von vielen Servern gemeinsam genutzt werden. Es ist jedoch ein ziemlich wahrscheinlicher Ort - sicherlich passender /usrund wohl besser als/var
James Polley
1
Ich denke nicht, dass die FHS definitiv ist. Betreff: (Aus Wikipedia): Die meisten Linux-Distributionen folgen der FHS und erklären sich selbst zur Einhaltung der FHS-Richtlinien. Die überwiegende Mehrheit (Stand 2009) der Distributionen, einschließlich derer, die von Mitgliedern der Free Standards Group entwickelt wurden, folgt jedoch nicht vollständig dem vorgeschlagenen Standard.
Michael Graff
6
Das ist das Schöne an Standards - es gibt so viele zur Auswahl! :)
James Polley
3

Wo sie auf der Festplatte leben, spielt keine Rolle. Hier willst du sie haben.

Ich habe einen Symlink von / www auf allen meinen Maschinen zu dem Ort, an dem sie wirklich leben, sodass ich mich nie von Maschine zu Maschine wundern muss. Einige ältere Computer haben / u0 und / u1 für Benutzerdatenträger, und ich platziere die Websachen dort. Einige haben / home direkt montiert, so dass sie dorthin gehen, aber / www zeigt immer auf die richtige Stelle.

Ich habe auch keine Konfiguration in / usr noch in / var. Es geht in / local (was, wie Sie vermutet haben, normalerweise ein Symlink irgendwo auf / u0 oder / u1 ist). Dies erleichtert das Sichern. Ich habe gerade die Benutzerdatenträger gesichert.

Natürlich habe ich eine Master-Distributions-Site für mein Betriebssystem, NetBSD. Ich mache das System so, wie ich es auf diesem Hauptrechner (wirklich eine Xen-Instanz) und rsync / usr haben möchte. Macht mir das Leben leicht.

Michael Graff
quelle
6
Dies ist in Ordnung, wenn Sie ein Einzelunternehmen sind oder ein kleines Team, das eng zusammenarbeitet und mit den Schwächen des anderen vertraut ist. Das Erlernen der richtigen Vorgehensweise wird wahrscheinlich länger dauern als nur das Durchführen es. Wenn Sie einen großen Betrieb haben und häufig neue Mitarbeiter an Bord holen, wird es eine Menge Zeit in Anspruch nehmen, diese mit einem Layout wie diesem auf den neuesten Stand zu bringen - bei der FHS zu bleiben (oder zumindest in der Nähe von ihr zu bleiben) Sie sparen Zeit mit jeder neuen Person, die Sie in das Team holen.
James Polley
5
Wenn Sie 8 verschiedene Betriebssysteme verwenden, sind interne Standards viel einfacher zu erlernen als die einzelnen Betriebssysteme.
Michael Graff
1
@James Polley Wie viel Zeit braucht es, um einem neuen Mitarbeiter mitzuteilen, dass "wir Sachen reinstecken /path/we/chose"?
Ceejayoz
@ceejayoz Wenn Sie mehr als zwei Kategorien von "Sachen" haben, ist es viel einfacher, ihnen zu sagen, "wir folgen der FHS", obwohl dies einige zusätzliche Details für einige Kategorien von "Sachen" erfordern könnte.
Tripleee
3

Auf Apache-Webservern befindet sich die Standardwebsite unter / var / www /. Es wird jedoch empfohlen , andere Websites unter / srv / zu platzieren.

Ich habe dies auf Ubuntu Server 14.04 LTS bemerkt. Die Standarddatei apache2.conf enthält einen kommentierten Block:

#<Directory /srv/>
#   Options Indexes FollowSymLinks
#   AllowOverride None
#   Require all granted
#</Directory>
Maris B.
quelle
2

Meiner Meinung nach sollten Sie NIEMALS und NIEMALS Internetdienste in die gemeinsame Systemzone stellen.

Ihre Internetdienste (Apache / Tomcat / SSH usw.) sind eine Eingangstür. Wenn Sie diese Dienste in Ihre Systemzone integrieren, sind Sie möglicherweise für einige Angriffe anfällig.

Mehr als wenn Sie Ihre verschiedenen Dienste in eine sichere Sandboxzone wie eine andere Trennpartition gestellt haben.

Hier ist ein Beispiel für eine Struktur, die Sie verwenden könnten:

/ --> Root System --> On SDA1 --> Root and System security operator access only
 |
 | -->/usr /etc /var etc.

/SRV --> Web Root --> On SDB1 --> Web users access with minimal rights access.
 |
 |-->/srv/bin & /srv/dta
      |
      |-->/srv/bin/apache (or any other APPLICATION Binaries)
      |-->/srv/dta/SQL (or any other APPLICATION Datas like a 
                        database or web PHP files etc.)
Dr.
quelle
1
Könnten Sie auf "Common System Zone" erweitern? Es ist kein Begriff, den ich vorher gehört habe, und ich bin mir nicht sicher, was du meinst. /srv/binScheint gegen die FHS zu verstoßen, die besagt, dass /srves sich um Daten handelt, nicht um Binärdateien
James Polley
Allgemein Systemzone bedeutet, der Teil des Betriebssystems, in dem alle Systemkomponenten wie Konto, Kennwort, Administrator-Binärdateien und Bibliothek gespeichert sind. Ich weiß, dass meine Installation die FHS nicht vollständig respektiert, aber ich kann das Betriebssystem vollständig in zwei Teile aufteilen. 1 ° / - Das System, das ziemlich fest ist (mit Ausnahme der Installation von Update- und Administrationstools). 2 ° / - Die Anwendungen, Daten und USers Homeland. Auf diese Weise gehen bei Problemen mit Ihrem System oder Ihren Daten nicht alle Daten verloren.
Dr. I.
Aha. Dies ist sinnvoll. Deshalb haben die meisten Desktops beispielsweise /homeeine separate Partition. Sie können alles auf der Nicht- /homePartition in die Luft jagen und müssen sich keine Gedanken über den Verlust von Benutzerdaten machen. +1 für die Trennung von Daten.
James Polley