Was ist das empfohlene Verzeichnis zum Speichern von Website-Inhalten?

21

Als ich anfing, für das Web zu programmieren und ein neues Projekt erstellen wollte, wurde mir immer beigebracht, ein Verzeichnis in zu erstellen /var/www/. In vielen Tutorials habe ich jedoch gelesen, dass Leute dazu neigen, ein Verzeichnis zu erstellen /home/username/.

Ich mag die Idee nicht, es einzubauen /home/username/.

Gibt es einen korrekten Ort oder wenn nicht, welche Vor- / Nachteile ergeben sich aus der Platzierung in bestimmten Bereichen des Dateisystems?

Pattle
quelle
Diese Einstellung ("am besten" impliziert, dass Sie diese Einstellung möglicherweise ändern sollten, um die größtmögliche Sicherheit zu gewährleisten usw.) wird hauptsächlich für die Entwicklung verwendet. Wenn Sie sie auch von dort aus bedienen, möchten Sie wahrscheinlich etwas Abgeschiedenes, um eine gewisse Distanz zwischen Ihren persönlichen Dateien und Web-Share-Inhalten zu bewahren. Aber es gibt eine Million Konfigurationen. Ich bleibe bei /var/wwwund habe das normalerweise auf einem anderen Laufwerk (nur Präferenz).
Nerdwaller
Es gibt kein "bestes" Verzeichnis. Es liegt ganz bei Ihnen, denn der Speicherort der Dateien spielt keine Rolle.
Ramhound

Antworten:

36

Es gibt kein "bestes" Verzeichnis. Und während die Leute vielleicht argumentieren, dass diese Frage subjektiv ist oder dass die tatsächliche Platzierung von Dateien keine Rolle spielt - und sie haben Recht mit letzterer -, gibt es standardisierte Empfehlungen, wo was in Unix-ähnlichen Systemen abgelegt werden soll.

Der Dateisystem-Hierarchiestandard definiert dies und bietet Ihnen Folgendes:

  • /var- Ein Ort zum Speichern von Daten, die sich während des normalen Betriebs ändern, wie z. B. Protokolle usw., /var/wwwist das Standardverzeichnis zum Speichern von Webinhalten für Apache. Die Verwendung ist jedoch nicht standardisiert, sondern nur der "übliche" Ort, an dem Sie sie ablegen würden, weil Benutzer ändere die Standardeinstellungen nicht sehr oft.

  • /srv- Dieses Verzeichnis sollte Daten enthalten, die vom System bereitgestellt werden. Dies ist normalerweise der gewünschte Ort. Die FHS erklärt:

    Der Hauptzweck dieser Angabe besteht darin, dass Benutzer den Speicherort der Datendateien für einen bestimmten Dienst finden können 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. Daten, die nur für einen bestimmten Benutzer von Interesse sind, sollten im Ausgangsverzeichnis dieses Benutzers abgelegt werden. (…)

    Eine Methode zur Strukturierung von Daten /srvist die Protokollierung, z. ftp, rsync, www, Undcvs

    Erstellen Sie einfach ein /srv/wwwVerzeichnis und verwenden Sie dieses. Sie können Unterordner für jeden virtuellen Host erstellen, den Sie möglicherweise mit Ihrem Computer bereitstellen möchten.

  • /homeEnthält Dateien, die eigentlich nur einem Benutzer gehören sollten. Apache erlaubt beispielsweise Userdirs , sodass Sie über auf die Webdateien eines Benutzers zugreifen können http://example.com/~usernameund diese über das public_htmlVerzeichnis im Haus des Benutzers bereitgestellt werden .

    Wenn Sie einen Server verwenden, der von mehreren Personen gemeinsam genutzt wird, und Sie möchten, dass alle ihre eigenen Skripte hosten können, sollten sie dies tun. Denken Sie daran, die Verzeichnisse für den Benutzer beschreibbar zu machen, dem sie nur gehören.

Im Wesentlichen /srv/wwwund /var/wwwsind Verzeichnisse, in denen Sie Unterverzeichnisse für jedes Webprojekt erstellen sollten, das Sie möglicherweise hosten möchten. Sie können dann unterschiedliche Berechtigungen für diese Verzeichnisse definieren, damit bestimmte Benutzer oder Benutzergruppen darauf schreiben können. Wenn Sie Projekte für jeweils einen Benutzer haben, verwenden Sie /home.

slhck
quelle
3
Das zeigt in der http://example.com/~usernameRegel nicht auf /home/username/, sondern auf /home/username/public_html/.
Choroba
Ja, danke, das hätte zur Klarheit hinzugefügt werden sollen. Erledigt.
Slhck
Nach mehreren Jahren /var/wwwist es Zeit für Veränderungen!
Sitilge
Auch wwwklingt eher wie eine Sub - Domain zu mir.
Sitilge
Nur zum Hinzufügen ... Die Verwendung von / var / www ist eine gängige Praxis für Instanzen mit einer einzelnen Site und wie gesagt der Standard-Apache-Speicherort, wohingegen die Verwendung von / home / usr / bei Reseller-Servern oder bei Servern mit mehreren Sites eine gängige Praxis ist Hosting nach dem Konzept der Benutzer == Clients. Beides ist nur gängige Praxis und die Antwort von shlck ist eine bessere Nutzung der beabsichtigten Zwecke des Dateisystems.
Jools
4

Nun, Sie können Dateien überall ablegen, solange die Dinge ordnungsgemäß darauf zugreifen können. Überfüllte Dateisysteme bereiten jedoch Kopfzerbrechen, wenn später jemand hereinkommt.

/srv Das logischste Plus, wenn Sie dem Dateisystem-Hierarchie-Standard folgen, ist, dass er hierher führt.

Wenn Sie mehrere Domains erstellen, können Sie /srv/domain1 /srv/domain2dort einen Unterordner anlegen/ftp /www /tftp /logs /etc.etc.etc

Für mich ist das eine sehr solide Struktur, auf der man aufbauen und leicht kontrollieren kann

Aber als Administrator können Sie so sauber oder chaotisch vorgehen, wie Sie möchten.

Jenny
quelle
1

Ok, einfach, schnelle Antwort.

Wenn Ihre Webdateien auf dem System nur von EINEM Benutzer auf dem Linux-System aufgerufen werden. Verwenden Sie das Home-Verzeichnis des Benutzers ( ~/).

Wenn MULTIPLE Benutzer auf dem Linux-System auf Ihre Webdateien auf dem System zugreifen. Verwenden Sie /srv/.

Dies ist genau das, was http://refspecs.linuxfoundation.org/FHS_2.3/fhs-2.3.html#SRVDATAFORSERVICESPROVIDEDBYSYSTEM angibt.

Hier ist das Zitat:

/ srv enthält standortspezifische Daten, die von diesem System bereitgestellt werden.

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. Daten, die nur für einen bestimmten Benutzer von Interesse sind, sollten im Ausgangsverzeichnis dieses Benutzers abgelegt werden.

Bonus: www? ftp? Nach Protokoll organisieren? Huh?

Wie hier unter http://refspecs.linuxfoundation.org/FHS_2.3/fhs-2.3.html#SRVDATAFORSERVICESPROVIDEDBYSYSTEM angegeben

  • Wenn Ihre Website nur von EINEM Benutzer im System und NUR über den Browser (http-Protokoll) aufgerufen wird, dann: ~/http/your-website-directory/oder (https-Protokoll) dann:~/https/your-website-directory/
  • Wenn Ihre Website nur von EINEM Benutzer im System aufgerufen wird und NICHT NUR über den Browser, sondern über mehrere Protokolle (z. B. http UND tcp UND ...), gilt Folgendes: ~/your-website-directory/
  • Wird Ihre Website von MEHREREN Benutzern auf dem System und NUR über den Browser (http-Protokoll) aufgerufen, dann: /srv/http/your-website-directory/oder (https-Protokoll) dann:/srv/https/your-website-directory/
  • Wenn MEHRERE Benutzer auf Ihrer Website zugreifen und dies NICHT NUR über den Browser, sondern über mehrere Protokolle (z. B. http UND ftp UND ...), gilt Folgendes: /srv/your-website-directory/

Huh warum nicht www? Dies ist ein Erbe aus der Apache-Zeit. www gibt nicht an, welches Protokoll verwendet wird. Debian verwendet dies noch heute, während beispielsweise Arch Linux / srv / http verwendet.

Karl Morrison
quelle
0

Apache-Webserver haben eine Standardwebsite unter /var/www/, es wird jedoch empfohlen, andere Websites unter zu stellen/srv/

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

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