GNU/Linux >> Linux Esercitazione >  >> Linux

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

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 e cvs

    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 tramite http://example.com/~username , e vengono serviti dal public_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.


Linux
  1. Qual è l'attuale runlevel del sistema Linux?

  2. Rileva il sistema Init usando la shell?

  3. Qual è lo scopo di "utente di sistema" in MySQL Replication

  4. Qual è lo scopo di crittografare la home directory?

  5. Quali dovrebbero essere i permessi ideali della home directory in Linux

Che cos'è Intel SGX e quali sono i vantaggi?

Come trovare l'utilizzo della CPU, cosa blocca il sistema

Linux:quali file system su Linux archiviano il tempo di creazione?

Percorso assoluto vs relativo in Linux:qual è la differenza?

Qual è lo scopo della directory setgid?

Cosa significa il suffisso .d in Linux?