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 su quest'ultimo hanno ragione, ci sono raccomandazioni standardizzate su dove mettere cosa nei sistemi simili a Unix.
Il Filesystem Hierarchy Standard lo definisce e ti offre quanto segue:
-
/var
– un posto dove mettere i dati che cambiano durante il normale funzionamento, come i log, ecc./var/www
è la directory predefinita in cui posizionare i contenuti Web per Apache, ma il suo utilizzo non è affatto standardizzato ed è solo il "solito" posto in cui lo metteresti perché le persone non cambiano le impostazioni predefinite molto spesso. -
/srv
– questa directory dovrebbe contenere i dati serviti dal sistema. Questo è di solito il posto che vuoi. L'FHS spiega:Lo scopo principale di specificare questo è in modo che gli utenti possano trovare la posizione dei file di dati per un particolare servizio e in modo che i servizi che richiedono un singolo albero per i dati di sola lettura, i dati scrivibili e gli script (come gli script cgi) possano essere ragionevolmente collocati. I dati che sono di interesse solo per un utente specifico dovrebbero andare nella home directory di quell'utente. (…)
Un metodo per strutturare i dati in
/srv
è per protocollo, ad es.ftp
,rsync
,www
ecvs
Quindi, crea semplicemente un
/srv/www
directory e usa questa. Puoi creare sottocartelle per ogni host virtuale che potresti voler servire con la tua macchina. -
/home
contiene file che in realtà dovrebbero appartenere solo a un utente. Apache, ad esempio, consente userdirs, quindi puoi accedere ai file Web di un utente tramitehttp://example.com/~username
, e vengono serviti dalpublic_html
directory nella home dell'utente.Se utilizzi un server condiviso tra più persone e desideri consentire a tutti di ospitare i propri script, è qui che dovrebbero andare. Ricordati di rendere le directory scrivibili solo dall'utente a cui appartengono.
In sostanza /srv/www
e /var/www
sono directory in cui dovresti creare 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 scrivervi. Se hai progetti per un utente alla volta, usa /home
.
Bene, puoi mettere i file ovunque purché le cose possano accedervi correttamente, tuttavia i filesystem disordinati sono un mal di testa se qualcuno arriva più tardi.
/srv
è più logico se segui Filesystem Hierarchy Standard andrebbe qui.
Se gestisci più domini puoi utilizzare /srv/domain1
/srv/domain2
etc etc quindi sottocartella lì dentro /ftp
/www
/tftp
/logs
/etc.etc.etc
A me sembra una struttura molto solida su cui costruire e controllare facilmente
Ma come amministratore puoi fare quanto vuoi in modo pulito o disordinato.
Ok facile risposta veloce.
Se i tuoi file web sul sistema saranno accessibili solo da UN utente sul sistema Linux. Usa la home directory dell'utente (~/
).
Se i tuoi file web sul sistema saranno accessibili da MULTIPLI utenti 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 serviti da questo sistema.
Lo scopo principale di specificare questo è in modo che gli utenti possano trovare la posizione dei file di dati per un particolare servizio e in modo che i servizi che richiedono un singolo albero per i dati di sola lettura, i dati scrivibili e gli script (come gli script cgi) possano essere posizionati ragionevolmente. I dati che sono di interesse solo per 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 da UN SOLO utente sul sistema e SOLO tramite il browser (protocollo http), allora:
~/http/your-website-directory/
- Se il tuo sito Web è accessibile solo da UN utente sul sistema e NON SOLO tramite il browser ma più protocolli (ad esempio http AND tcp AND ...) allora:
~/your-website-directory/
- Se il tuo sito Web è accessibile da PIÙ utenti sul sistema e SOLO tramite il browser (protocollo http), allora:
/srv/http/your-website-directory/
- Se il tuo sito Web è accessibile da PIÙ utenti sul sistema e NON SOLO tramite il browser ma più protocolli (ad esempio http AND ftp AND ...) allora:
/srv/your-website-directory/
Eh perché non www? Questa è un'eredità del tempo di Apache. www non specifica quale protocollo viene utilizzato. Debian lo usa ancora oggi, mentre per esempio Arch Linux usa /srv/http.