Tuxfiles dit ce qui suit à propos de la structure de répertoires Linux:
/var
:Ce répertoire contient des données variables qui changent constamment lorsque le système est en cours d'exécution.
FHS on/var
dit ce qui suit:
/var
contient des fichiers de données variables. Cela inclut les répertoires et fichiers de spool, les données administratives et de journalisation, ainsi que les fichiers temporaires et temporaires.
Ils continuent ensuite en disant que des éléments tels que les journaux, le courrier et le spouleur sont placés dans ce dossier.
Traditionnellement, une installation de base d’Apache ou de Nginx sur Ubuntu Linux placera le répertoire dans /var/www/
.
Il ne me semble pas que ce soit l'endroit idéal pour mettre un répertoire avec des fichiers ou du contenu supposé être presque permanent.
Pourquoi est-il si souvent mis dans /var
?
Plus subjectivement, s’agit-il de l’idéal, selon la structure des répertoires?
la source
/var/lib/www
cela aurait été plus approprié .../srv
/var
Il s'agit de données non exécutables non configurables n'appartenant pas à un utilisateur réel mais pouvant être éditées ou modifiées (par exemple, doivent vivre sur un volume réinscriptible)./var/lib
est spécifiquement destiné à ce type de données qui devrait survivre à un redémarrage et ne pas être supprimé par un processus de maintenance,isc-dhcp-server
sert/var/lib
à stocker son enregistrement de baux DHCP par exemple. Ce serait donc un endroit logique pour les fichiers de serveur Web.Réponses:
Ce n'est en fait pas l'emplacement "traditionnel" du tout. Traditionnellement, tout ce que vous avez installé après l’exploitation du système d’exploitation
/usr/local
, et c’est bien la "disposition de chemin classique Apache" (leurs mots) à ce jour. Pendant longtemps, c’était/home/httpd
.Ce que vous voyez, c'est qu'un Apache qui a été configuré pour un système d'exploitation particulier - qu'il s'agisse de Red Hat Linux, Mac OS X, GNU, etc. - va personnaliser l'emplacement. Les sources d'Apache sont bien conçues pour cela. En fait, si vous tracez la valeur de ServerRoot dans les fichiers source, vous verrez qu'elle commence dans ce fichier
config.layout
:Certains extraits de ce fichier vous montreront qu'il y a beaucoup de variété dans l'emplacement docroot.
L’IIRC
/var/www
est entré dans ma vie avec les versions 2000-2001 de Red Hat Linux 7.x (et non de Red Hat Enterprise Linux). Pour toutes les raisons que vous avez citées ci-dessus, j’ai pensé que cela n’avait pas beaucoup de sens - mais la réalité est qu’à l’ère moderne, de nombreux autres outils et technologies sont impliqués, et que le lieu change quand même.la source
L'utilisation de
/var/www
est déroutant seulement à première vue.Selon la FHS, les données du serveur Web devraient aller à
/srv
. C'est la règle principale.Cependant, il est également indiqué que la décision concernant la structure de
/srv
est de la responsabilité exclusive de l'administrateur local! Par conséquent, les packages ne doivent rien insérer dans/srv
, et la racine du document par défaut ne doit pas l'être/srv
, car le package (apache) ne sait pas ce qu'il contient et ce qu'il contient/srv
. Peut-être un référentiel de subversion avec un mot de passe en texte clair et d'autres éléments. Donc, il doit y avoir un défaut en dehors de/srv
. Ce défaut devient/var/www
./var/www
est principalement un espace réservé. Les packages sont utilisés/usr/share
pour le contenu HTML statique ou/var/lib
pour le contenu de variable dynamique. De nombreuses personnes ont pensé, à tort, qu’elles devraient ensuite insérer du code HTML/var/www
. C'est un problème, car les paquets l'utilisent aussi occasionnellement. Si récemment, ils ont inventé/var/www/html
pour les paquets. Espérons que les gens ne commenceront pas à utiliser cela, car ils doivent à nouveau inventer un nouveau répertoire ... et ainsi de suite.Résumé: vous devez utiliser
/srv
et configurer vos hôtes virtuels Apache en conséquence.la source
Bien que je sois d’accord avec la réponse d’Akond, je pense qu’elle revêt un aspect plus important. La plupart des autres emplacements (tels que
/usr/local
) sont généralement gérés par le système (le gestionnaire de packages)./var
est généralement l'endroit où vont les fichiers qui ne sont pas gérés par le gestionnaire de paquets («données» à l'échelle du système).Je pense aussi que la définition de la FHS est un peu plus précise (les données ne doivent pas nécessairement "changer constamment"):
Cependant, la FHS indique également que les données www devraient être utilisées
/srv
la source
/usr/local
c’est que ce n’est pas géré par le gestionnaire de paquets./srv/www
était le chemin classique sur les systèmes SuSE (jusqu’à SLES10).Les raisons sont principalement historiques, comme d'autres l'ont dit.
/var
a été utilisé pour les données système qui changent tout le temps, par exemple les fichiers de cache, les journaux, les données d’exécution (fichiers de verrouillage, par exemple), le stockage du serveur de messagerie, le spooling de l’imprimante, etc. En gros, pour tout ce qui ne peut pas être inséré/usr
( parce qu’il contient des données locales), ne sont pas des programmes tiers qui entrent dans/opt
, et ne sont pas jetables et volatiles comme ils entrent/tmp
.Au fur et à mesure que Unix / Linux se développait, il devenait un endroit désordonné avec un mélange de plusieurs répertoires différents. Il y a eu une tendance ces dernières années pour passer certaines choses de là, en particulier le contenu servi par la machine (qui maintenant par [ Système de fichiers Hiérarchie standard 2.3, p.15 devrait aller]
/srv
, non/var/www
).Chose semblable est arrivé à
/var/run
quelques années - avec l'effort concentré de plusieurs distributions, il a été déplacé de/var/run
dans/run
laquelle fusionné les fonctions du utilisé précédemment/var/lock
,/var/run
et/dev/shm
.la source
D'après mon expérience (je suis un développeur Web), le contenu du site Web est loin d'être stable. Même dans le cas de fichiers HTML (nevermind, contenu généré dynamiquement), ils sont soumis à des modifications constantes (modifications, omissions, etc.).
Donc, de mon point de vue, ce sont des variables. Ainsi, ils sont parfaitement adaptés dans le répertoire / var et il n’ya rien de mal à cela.
la source
/var
. Mais je pense que c'est une question d'opinion et de débat plutôt que des faits concrets.IIRC, jadis, nous montions toujours
/var
comme son propre système de fichiers (disque séparé ou tranche de disque).Une des raisons de ceci, comme d'autres l'ont dit, est qu'il y a beaucoup de lecture / écriture sur ce système de fichiers (logs / et al). Avoir un disque / tranche séparée signifie qu'il peut être mieux à l' écoute pour ce type d'E / S (par rapport lu principalement sur
/
,/usr
, etc ...).L'autre raison est que, à cette époque, si votre système tombait en panne au cours d'une opération d'écriture, il était très probable que votre système de fichiers racine soit corrompu, le laissant ainsi difficile à réparer. Ainsi, le besoin de séparation de
/
.La technologie des systèmes de fichiers et des disques s’est considérablement améliorée avec le temps, c’est donc un événement beaucoup moins probable.
la source
/var
est un choix décent pour un emplacement "de base" indépendant de l'utilisateur pour un accès multi-utilisateur, si vous avez un site Web avec plusieurs hôtes virtuels en fonctionnement permettant le téléchargement par FTP ou autre, c'est-à-dire si vous êtes un hôte Web ou similaire./home
est peut - être pas optimal parce que les mauvaises choses pourraient se produire à d' autres comptes shell utilisateur si un utilisateur télécharge irréfléchis ou malveillants à la/home
limite de la partition ( en supposant la configuration traditionnelle de/var
,/home
, etc. étant sur des partitions distinctes) elle peut affecter d' autres comptes d'utilisateurs.Bien sûr, je pense que
/srv
c'est mieux pour cela, mais cela/var
fait plus longtemps dans la tradition UNIX.la source
/home/http
?Ce que j'aimerais ajouter ici, c'est que placer la racine Web dans / usr est en conflit avec la partie de la FHS qui indique que / usr est partageable et en lecture seule, car différents serveurs Web, même sur le même "cluster". peut avoir différents fichiers contenant différentes configurations, ce qui ne le rend pas idéal pour / usr.
De plus, certaines applications Web (MediaWiki et PhpBB pour nommer celles qui me viennent à l’esprit) s’attendent à un emplacement en écriture dans l’arborescence de répertoires Web pour le téléchargement de pièces jointes / fichiers multimédias. Donc, placer l’arborescence Web sous / usr créerait un conflit si vous souhaitez adhérer à la définition en lecture seule / usr.
la source
Le serveur Web Apache a un site Web par défaut sous / var / www /, mais il suggère de placer d’autres sites Web sous / srv /.
J'ai remarqué cela sur Ubuntu Server 14.04 LTS. Son fichier apache2.conf par défaut contient un bloc commenté:
la source