I siti web dovrebbero vivere in / var / o / usr / secondo l'uso raccomandato?


62

Secondo una guida sulla struttura delle directory di Linux , /usr/è per i file delle applicazioni e /var/per i file che cambiano (presumo che ciò significhi "file che appartengono alle applicazioni"). È corretto?

Se questo è il caso, sono un po 'combattuto tra l'utilizzo di entrambi. Un sito Web è un'applicazione (se è dinamica, per così dire), ma in altri casi è solo una raccolta di file utilizzati da Apache.

La directory www predefinita vive /var/www/, quindi dovremmo seguire l'esempio usando /var/websites/(o qualcosa di simile), o scegliere /usr/websites/dal momento che potrebbero essere applicazioni?

Questa è una domanda molto banale, ma mi infastidisce comunque. Per il nostro caso, mi sto avvicinando /usr/webo qualcosa del genere, poiché i nostri siti Web sono tutte applicazioni.

Aggiornare:

Questo è per i siti Web della nostra azienda; non è un server di hosting condiviso, quindi non dobbiamo preoccuparci di separarli /home/o cose del genere.


10
Non penso che la domanda sia così banale; è piuttosto buono, in realtà. Interessante.
Aron Rotteveel,

Risposte:


63

Secondo l' FHS , /usrè per shareable, read-only data- non dove vuoi mettere il sito web. È qui che dovresti inserire il tuo codice (ad esempio Fedora lo fa per Wordpress). Vedi anche la guida al packaging delle risorse web per Fedora.

/varè "file di dati variabili. Include directory e file di spool, dati amministrativi e di registrazione e file temporanei e temporanei". - meglio, ma ancora non del tutto giusto - ma molti sistemi useranno /var/www, quindi anche se sbagli per metterlo lì sei in buona compagnia.

/srvè per "dati specifici del sito forniti da questo sistema". - che sembra una buona partita, ma è molto meno comune di /var/www.

L'altro luogo comune in cui collocare i file del sito è /home: creando un utente speciale chiamato websiteo tale, quindi posizionando i file all'interno del homedir dell'utente (ad es /home/website.).


4
Ah, il mio lavoro usa /srv- dato che non l'avevo mai visto prima, pensavo fosse stato creato da loro. È una cosa Redhat / CentOS?
Nick Bolton,

12
L'impostazione predefinita è solo /var/wwwperché le distribuzioni non possono toccare /srv; cioè per l'amministratore di sistema da configurare. Ecco perché è "molto meno comune" e anche corretto.
Michael Hampton

28

Dai un'occhiata al Filesystem Hierarchy Standard ( Wikipedia ). Io stesso uso / srv / web / $ domain / {htdocs, logs, cgi-bin, ...}.


3
Lo faccio anche io, ma invece di "www" uso sempre il nome del servizio "httpd". Quindi ho / srv / httpd / $ domain ... o / srv / smbd / sharename ... In questo modo è più facile vedere quale servizio sta servendo i file. Ad esempio su alcuni sistemi abbiamo / srv / nginx / $ domain
Raffael Luthiger

9

I siti web dovrebbero vivere nelle home directory degli utenti. Sono dati utente, devono essere isolati da un utente per sito e il contenuto dinamico deve essere eseguito nuovamente come utente separato, con i file che il contenuto dinamico deve leggere e modificare in base alle autorizzazioni appropriate per farlo.

Aggiornare:

Solo perché non è un server di hosting condiviso non significa che non dovresti impegnarti in buone pratiche di sicurezza e separare ruoli indipendenti nelle loro zone di sicurezza.


7

La guida definitiva è il Filesystem Hierarchy Standard che dice che /srvè il posto giusto.


2
Non lo leggo in questo modo - o almeno, lo leggo come ambiguo su questo punto. La maggior parte dei siti Web non sono serviti semplicemente by this system, sono serviti da un intero cluster di sistemi; e le due frasi che iniziano a This setup will differ from host to host.suggeriscono che questo non è il posto per i file condivisi su molti server. È un posto abbastanza probabile però - sicuramente più appropriato di /usr, e probabilmente migliore di/var
James Polley

1
Non credo che l'FHS sia assolutamente definitivo. Ri: (Da Wikipedia): La maggior parte delle distribuzioni Linux segue l'FHS e lo dichiara come propria politica per mantenere la conformità FHS. Tuttavia, la stragrande maggioranza (a partire dal 2009) delle distribuzioni, comprese quelle sviluppate dai membri del Free Standards Group, non segue completamente lo standard proposto.
Michael Graff,

6
Questa è la cosa bella degli standard: ce ne sono così tanti tra cui scegliere! :)
James Polley,

3

Dove vivono sul disco ha poca importanza. È dove li vuoi.

Ho un link simbolico da / www su tutte le mie macchine a dove vivono davvero, quindi non devo mai chiedermi da una macchina all'altra. Alcune macchine più vecchie hanno / u0 e / u1 per i dischi utente e inserisco le cose sul web lì. Alcuni hanno / home montato direttamente, quindi vanno lì, ma / www indica sempre il posto giusto.

Inoltre non inserisco alcuna configurazione in / usr né in / var. Va in / local (che, avete indovinato, è un link simbolico da qualche parte su / u0 o / u1 in genere). Ciò semplifica il backup delle cose. Ho appena eseguito il backup dei dischi dell'utente.

Ovviamente, ho un sito di distribuzione principale per il mio sistema operativo preferito, NetBSD. Faccio il sistema come lo voglio su questa macchina principale (in realtà un'istanza xen) e rsync / usr around. Mi semplifica la vita.


6
Questo va bene se sei un'operazione di una sola persona, o forse anche una piccola squadra che lavora a stretto contatto e ha familiarità con le reciproche debolezze - imparare il modo "giusto" per farlo probabilmente richiederà più tempo del semplice fare esso. Se hai un'operazione di grandi dimensioni e stai frequentemente portando a bordo nuove persone, doverle accelerare con un layout come questo richiederà molto tempo - restare con (o almeno vicino a) l'FHS è per risparmiare tempo con ogni nuova persona che porti nella squadra.
James Polley,

5
Quando si utilizzano 8 diversi sistemi operativi, gli standard interni sono molto più facili da imparare rispetto a ciascuno-os-lo-fa-a-suo-modo.
Michael Graff,

1
@James Polley Quanto tempo ci vuole per dire a un nuovo assunto "mettiamo roba /path/we/chose"?
Ceejayoz,

@ceejayoz Se hai più di due categorie di "cose", è molto più semplice dire loro "seguiamo l'FHS", anche se ciò potrebbe richiedere alcuni dettagli aggiuntivi per alcune categorie di "cose".
Tripleee,

3

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

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

#<Directory /srv/>
#   Options Indexes FollowSymLinks
#   AllowOverride None
#   Require all granted
#</Directory>

2

Secondo me non dovresti MAI e MAI mettere alcun servizio Internet nell'area di sistema comune.

I tuoi servizi Internet (Apache / Tomcat / SSH ecc.) Sono una porta d'ingresso, quindi se metti quei servizi nella tua zona di sistema sarai potenzialmente vulnerabile ad alcuni attacchi.

Più che se hai messo i tuoi diversi servizi in una zona sandbox sicura come un'altra partizione di distacco.

Ecco un esempio di struttura che potresti usare:

/ --> 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.)

1
Potresti espandere la "zona di sistema comune"? Non è un termine che ho sentito prima e non sono sicuro di cosa intendi. /srv/binsembra violare l'FHS, che afferma che /srvè per i dati, non per i binari
James Polley,

Bene zona di sistema comune significa, la parte del sistema operativo in cui è memorizzato tutto il componente di sistema come, account, password, binari dell'amministratore e libreria. So che la mia installazione non rispetta completamente l'FHS ma posso dividere completamente il sistema operativo in due parti. 1 ° / - Il sistema che è abbastanza fisso (tranne che per l'installazione di strumenti di aggiornamento e amministrazione) 2 ° / - Le applicazioni, i dati e la Patria degli utenti. In questo modo, se si verificano problemi con il sistema o i dati, non si perderanno tutti i dati.
Dr I,

Vedo. Questo ha senso - è il motivo per cui la maggior parte dei desktop, ad esempio, inserisce /homeuna partizione separata - è possibile eliminare qualsiasi cosa sulla non /homepartizione e non preoccuparsi di perdere i dati dell'utente. +1 per la separazione dei dati.
James Polley,
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.