Qual è la directory consigliata per archiviare il contenuto del sito Web?


21

Quando ho iniziato a programmare per il Web e volevo creare un nuovo progetto, mi veniva sempre insegnato a creare una directory in /var/www/. Tuttavia, in molti tutorial che leggo, le persone tendono a creare una directory in /home/username/.

Non mi piace l'idea di inserirla /home/username/.

Esiste un posto corretto o, in caso contrario, quali sono i vantaggi / gli svantaggi di posizionarlo in determinate aree del file system?


Questa è la preferenza ("migliore" implica che, forse dovresti cambiarla per essere più sicura, ecc.) Per lo sviluppo principalmente. Se li stai servendo anche da lì, probabilmente vorrai qualcosa di isolato per mantenere una sorta di distanza tra i tuoi file personali e le cose di condivisione web. Ma ci sono un milione di configurazioni. Mi attengo /var/wwwe di solito ce l'ho su un altro disco (solo preferenza).
nerdwaller,

Non esiste una directory "migliore". È interamente tua percezione perché la posizione fitologica dei file non ha importanza.
Ramhound,

Risposte:


36

Non esiste una directory "migliore". E mentre le persone potrebbero obiettare che questa domanda è soggettiva o che il posizionamento effettivo dei file non ha importanza - e hanno ragione su quest'ultimo - ci sono raccomandazioni standardizzate su dove mettere cosa nei sistemi simili a Unix.

Lo standard della gerarchia dei filesystem lo definisce e offre quanto segue:

  • /var- un posto dove mettere i dati che cambiano durante il normale funzionamento, come i registri, ecc. /var/wwwÈ la directory predefinita per posizionare i contenuti web per Apache, ma il suo utilizzo non è affatto standardizzato e solo il "solito" posto dove li metti perché le persone non modificare le impostazioni predefinite molto spesso.

  • /srv- questa directory dovrebbe contenere i dati forniti dal sistema. Questo è di solito il posto che desideri. L'FHS spiega:

    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. I dati che interessano solo un utente specifico dovrebbero andare nella home directory di quell'utente. (...)

    Un metodo per strutturare i dati /srvè tramite protocollo, ad es.ftp, rsync, www, Ecvs

    Quindi, basta creare un /srv/www directory e usarla. Puoi creare sottocartelle per ogni host virtuale che potresti voler servire con la tua macchina.

  • /homecontiene file che dovrebbero appartenere a un solo utente. Apache per esempio lo consente userdir , in modo da poter accedere ai file Web di un utente attraverso http://example.com/~usernamee sono serviti dalla public_htmldirectory nella home dell'utente.

    Se si utilizza un server condiviso tra più persone e si desidera consentire a tutti di ospitare i propri script, è qui che dovrebbero andare. Ricorda di rendere le directory scrivibili dall'utente a cui appartengono solo.

In sostanza /srv/wwwe /var/wwwsono directory in cui dovresti creare delle sottodirectory per qualsiasi progetto web che potresti voler ospitare. È quindi possibile definire autorizzazioni diverse su queste directory per consentire a determinati utenti o gruppi di utenti di scrivere su di esse. Se hai progetti per un utente alla volta, usa /home.


3
Il http://example.com/~usernamesolito non punta a /home/username/, ma a /home/username/public_html/.
Choroba,

Sì, grazie, avrebbe dovuto essere aggiunto per chiarezza. Fatto.
slhck,

Dopo diversi anni di utilizzo /var/wwwè tempo di cambiare!
sitilge,

Inoltre, mi wwwsembra più un sottodominio.
sitilge,

Solo per aggiungere ... L'uso di / var / www è una pratica comune per le istanze che servono un singolo sito e, come detto, la posizione predefinita di Apache, mentre l'uso di / home / usr / was / è una pratica comune per i server rivenditori o multi-sito hosting tratto dal concetto di utenti == clienti. Entrambi sono solo pratiche comuni e la risposta di shlck è un uso migliore degli scopi previsti dal filesystem.
Jools

4

Bene, puoi mettere i file ovunque fintanto che le cose possono accedervi correttamente, tuttavia i filesystem ingombra sono un mal di testa se qualcuno arriva dopo.

/srv è molto più logico se segui Filesystem Hierarchy Standard andrebbe qui.

Se fai più domini che puoi fare /srv/domain1 /srv/domain2eccetera, allora sottocartella/ftp /www /tftp /logs /etc.etc.etc

Per me sembra una struttura molto solida su cui basarsi e controllare facilmente

Ma come amministratore puoi fare tutto ciò che desideri.


1

Ok risposta semplice e veloce.

Se i tuoi file web sul sistema saranno accessibili solo a UN utente sul sistema linux. Utilizzare la home directory dell'utente ( ~/).

Se i tuoi file web sul sistema saranno accessibili agli utenti MULTIPLI sul sistema Linux. Usa /srv/.

Questo è esattamente ciò che afferma http://refspecs.linuxfoundation.org/FHS_2.3/fhs-2.3.html#SRVDATAFORSERVICESPROVIDEDBYSYSTEM .

Ecco la citazione:

/ srv contiene dati specifici del sito forniti da questo sistema.

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. I dati che interessano solo un utente specifico dovrebbero andare nella home directory di quell'utente.

Bonus: www? ftp? Organizzare per protocollo? Eh?

Come indicato qui in http://refspecs.linuxfoundation.org/FHS_2.3/fhs-2.3.html#SRVDATAFORSERVICESPROVIDEDBYSYSTEM

  • Se il tuo sito web è accessibile solo a UN utente sul sistema e SOLO tramite il browser (protocollo http), allora: ~/http/your-website-directory/o (protocollo https) quindi:~/https/your-website-directory/
  • Se il tuo sito Web è accessibile solo da UN utente sul sistema e NON SOLO tramite il browser ma più protocolli (ig http AND tcp AND ...), allora: ~/your-website-directory/
  • Se al tuo sito Web accedono MULTIPLI utenti sul sistema e SOLO tramite il browser (protocollo http), allora: /srv/http/your-website-directory/o (protocollo https) quindi:/srv/https/your-website-directory/
  • Se al tuo sito Web accedono MULTIPLI utenti sul sistema e NON SOLO tramite il browser ma protocolli multipli (ig http AND ftp AND ...), allora: /srv/your-website-directory/

Eh, perché non www? Questa è un'eredità dei tempi di Apache. www non specifica quale protocollo viene utilizzato. Debian lo usa ancora oggi, ad esempio Arch Linux usa / srv / http.


0

Il server Web Apache ha un sito Web predefinito sotto /var/www/ma suggerisce di mettere sotto altri siti Web/srv/

L'ho notato su Ubuntu Server 14.04 LTS. Il suo apache2.conffile predefinito contiene un blocco commentato:

#<Directory /srv/>
#   Options Indexes FollowSymLinks
#   AllowOverride None
#   Require all granted
#</Directory>
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.