Les sites Web doivent-ils vivre dans / var / ou / usr / conformément à l'utilisation recommandée?

62

Selon un guide sur la structure de répertoires Linux , il /usr/s’agit des fichiers d’application et /var/des fichiers qui changent (je suppose que cela signifie "fichiers appartenant aux applications"). Est-ce correct?

Si tel est le cas, alors je suis un peu déchiré entre utiliser soit. Un site Web est une application (si elle est dynamique, pour ainsi dire), mais dans d'autres cas, il ne s'agit que d'une collection de fichiers utilisés par Apache.

Le répertoire par défaut, www dir /var/www/, devrait donc suivre en utilisant /var/websites/(ou quelque chose de similaire), ou choisir, /usr/websites/car ils pourraient être des applications?

C'est une question très triviale, mais elle me dérange quand même. Pour notre cas, je me penche vers /usr/webquelque chose comme ça, car nos sites Web sont tous des applications.

Mise à jour:

Ceci est pour les sites Web de notre entreprise; ce n'est pas un serveur d'hébergement partagé, nous n'avons donc pas besoin de nous soucier de les séparer /home/ni de quoi que ce soit de ce genre.

Nick Bolton
la source
10
Je ne pense pas que la question est si triviale; c'est plutôt bon, en fait. Intéressant.
Aron Rotteveel le

Réponses:

63

Selon la FHS , /usrc'est pour shareable, read-only data- pas l'endroit où vous voulez mettre le site Web. C’est là que vous devez placer votre code (par exemple, Fedora le fait pour Wordpress). Voir également le guide de création d’ actifs Web pour Fedora.

/varest "fichiers de données variables. Cela comprend les répertoires et fichiers de spool, les données administratives et de journalisation, ainsi que les fichiers temporaires et temporaires". - mieux, mais toujours pas tout à fait correct - mais beaucoup de systèmes l'utiliseront /var/www, donc même si vous avez tort de le dire, vous êtes en bonne compagnie.

/srvest destiné aux "données spécifiques au site qui sont servies par ce système". - qui semble être un bon match, mais est beaucoup moins commun que /var/www.

L’autre endroit commun où placer les fichiers du site est /homecréé - en créant un utilisateur spécial appelé websiteou tel, puis en plaçant les fichiers dans le répertoire personnel de cet utilisateur (par exemple, /home/website).

James Polley
la source
4
Ah, mon travail utilise /srv- comme je ne l'avais jamais vu auparavant, je pensais qu'il avait été créé par eux. Est-ce une chose Redhat / CentOS?
Nick Bolton
12
La valeur par défaut est uniquement définie sur /var/wwwparce que les distributions ne sont pas autorisées à toucher /srv; c'est à l'administrateur système de configurer. Donc, c'est pourquoi c'est "beaucoup moins commun" et également correct.
Michael Hampton
28

Jetez un coup d’œil à la norme de hiérarchie du système de fichiers ( Wikipedia ). J'utilise moi-même / srv / web / $ domain / {htdocs, logs, cgi-bin, ...}.

ptman
la source
3
Je le fais aussi, mais au lieu de "www", j'utilise toujours le nom de service "httpd". J'ai donc / srv / httpd / $ domain ... ou / srv / smbd / sharename ... De cette manière, il est plus facile de voir quel service sert les fichiers. Par exemple, sur certains systèmes, nous avons / srv / nginx / $ domain
Raffael Luthiger le
9

Les sites Web doivent vivre dans les répertoires personnels des utilisateurs. Il s’agit de données d’utilisateur, qui doivent être isolées par un utilisateur par site. Le contenu dynamique doit à nouveau être exécuté en tant qu’utilisateur distinct, avec des fichiers que le contenu dynamique doit lire et modifier en fonction des autorisations appropriées.

Mise à jour:

Le fait qu’il ne s’agisse pas d’un serveur d’hébergement partagé ne signifie pas que vous ne devez pas adopter de bonnes pratiques de sécurité ni séparer des rôles indépendants dans leurs propres zones de sécurité.

femme
la source
7

Le guide définitif est la norme de hiérarchie du système de fichiers, qui indique que /srvc'est le bon endroit.

Dennis Williamson
la source
2
Je ne le lis pas ainsi - ou du moins, je le lis comme étant ambigu sur ce point. La plupart des sites Web ne sont pas simplement desservis by this system, ils sont desservis par tout un groupe de systèmes. et les deux phrases commençant par This setup will differ from host to host.suggèrent que ce n'est pas l'endroit pour les fichiers partagés sur plusieurs serveurs. C'est un endroit assez probable cependant - certainement plus approprié que /usr, et sans doute meilleur que/var
James Polley
1
Je ne pense pas que la FHS soit définitive. Re: (De Wikipedia): La plupart des distributions Linux suivent le FHS et déclarent que c'est leur propre politique pour maintenir la conformité au FHS. Cependant, la grande majorité (à compter de 2009) des distributions, y compris celles développées par les membres du Free Standards Group, ne suivent pas complètement la norme proposée.
Michael Graff
6
C'est la bonne chose à propos des normes - il y a tellement de choix! :)
James Polley
3

Où ils vivent sur le disque a peu d'importance. C'est là où tu les veux.

J'ai un lien symbolique à partir de / www sur toutes mes machines et leur lieu de résidence, je n'ai donc jamais à me demander de machine à machine. Certaines machines plus anciennes ont / u0 et / u1 pour les disques utilisateur, et j'y place les éléments Web. Certains ont / home monté directement, alors ils y vont, mais / www pointe toujours au bon endroit.

Je ne mets pas non plus de configuration dans / usr ni dans / var. Il va dans / local (qui, vous l'avez deviné, est un lien symbolique quelque part sur / u0 ou / u1 en général). Cela facilite la sauvegarde. Je viens de sauvegarder les disques des utilisateurs.

Bien entendu, j'ai un site de distribution principal pour mon système d'exploitation de choix, NetBSD. Je fais le système comme je le veux sur cette machine principale (vraiment une instance de xen) et rsync / usr autour. Me rend la vie facile.

Michael Graff
la source
6
C'est bien si vous êtes une opération à une personne, ou peut-être même une petite équipe qui travaille en étroite collaboration et qui connaît bien les faiblesses des uns et des autres - apprendre la "bonne" façon de le faire va probablement prendre plus de temps que de simples choses à faire. il. Si vous avez une grande opération et attirez souvent de nouvelles personnes à bord, il faudra beaucoup de temps pour les familiariser avec une configuration telle que celle-ci - rester avec (ou au moins, presque) la FHS est va gagner du temps avec chaque nouvelle personne que vous apportez dans l'équipe.
James Polley
5
Lorsque vous utilisez 8 systèmes d’exploitation différents, il est beaucoup plus facile d’apprendre les normes internes que chaque système ne le fait lui-même.
Michael Graff
1
@ James Polley Combien de temps faut-il pour dire à une nouvelle recrue "nous mettons des choses /path/we/chose"?
ceejayoz
@ceejayoz Si vous avez plus que deux catégories de "choses", il est beaucoup plus simple de leur dire "nous suivons la FHS", même si cela peut nécessiter des détails supplémentaires pour certaines catégories de "choses".
Tripleee
3

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é:

#<Directory /srv/>
#   Options Indexes FollowSymLinks
#   AllowOverride None
#   Require all granted
#</Directory>
Maris B.
la source
2

Selon moi, vous ne devez JAMAIS et JAMAIS mettre de services Internet dans la zone de système commun.

Vos services Internet (Apache / Tomcat / SSH, etc.) sont une porte d'entrée. Si vous mettez ces services dans votre zone Système, vous êtes potentiellement vulnérable à certaines attaques.

Plus que si vous avez placé vos différents services dans une zone de sécurité comme une autre partition séparée.

Voici un exemple de structure que vous pourriez utiliser:

/ --> 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.)
Dr I
la source
1
Pourriez-vous développer sur "zone de système commun"? Ce n'est pas un terme que j'ai entendu auparavant et je ne suis pas sûr de ce que vous voulez dire. /srv/binsemble violer la FHS, qui stipule que /srvc'est pour les données, pas les binaires
James Polley
Bien Par zone système courante, on entend la partie du système d’exploitation où sont stockés tous les composants du système tels que, compte, mot de passe, fichiers binaires de l’administrateur et bibliothèque. Je sais que mon installation ne respecte pas complètement la FHS, mais je peux scinder complètement le système d'exploitation en deux parties. 1 ° / - Le système qui est assez fixe (sauf pour l'installation des outils de mise à jour et d'administration) 2 ° / - Les applications, les données et les utilisateurs Homeland. De cette manière, si vous rencontrez des problèmes avec votre système ou vos données, vous ne perdrez pas toutes les données.
Dr I
Je vois. Cela a du sens - c’est la raison pour laquelle, par exemple, la plupart des ordinateurs de bureau sont configurés /homesur une partition distincte - vous pouvez supprimer tout ce qui se trouve sur la non- /homepartition sans vous soucier de la perte de données utilisateur. +1 pour la séparation des données.
James Polley