Selon n guide sur la structure des répertoires Linux , /usr/
est destiné aux fichiers d'application et /var/
est pour les fichiers qui changent (je suppose que cela signifie "les fichiers qui appartiennent aux applications"). Est-ce correct?
Si tel est le cas, je suis un peu déchiré entre l'utilisation de l'un ou l'autre. Un site Web est une application (si elle est dynamique, pour ainsi dire), mais dans d'autres cas, ce n'est qu'une collection de fichiers utilisés par Apache.
Le répertoire www par défaut réside dans /var/www/
, devons-nous donc suivre l'exemple en utilisant /var/websites/
(ou quelque chose de similaire), ou choisissez /usr/websites/
puisqu'elles pourraient être des applications?
C'est une question très banale, mais cela me dérange néanmoins. Pour notre cas, je penche vers /usr/web
ou quelque chose comme ça, puisque nos sites Web sont tous des applications.
C'est pour les sites Web de notre entreprise; ce n'est pas un serveur d'hébergement partagé, nous n'avons donc pas à nous soucier de les séparer dans /home/
ou quelque chose comme ça.
Selon les FHS , /usr
est pour shareable, read-only data
- pas où vous voulez mettre le site Web. C'est là que vous devez mettre votre code (par exemple, Fedora le fait pour Wordpress). Voir aussi le ressources Web guide d'emballage pour Fedora.
/var
est "des fichiers de données variables. Cela inclut les répertoires et fichiers spoule, les données administratives et de journalisation, et les fichiers transitoires et temporaires." - mieux, mais pas tout à fait raison - mais beaucoup de systèmes utiliseront /var/www
, donc même si vous avez tort de le mettre là, vous êtes en bonne compagnie.
/srv
correspond aux "données spécifiques au site qui sont traitées par ce système". - qui semble être un bon match, mais qui est beaucoup moins courant que /var/www
.
L'autre endroit commun pour placer les fichiers du site est sous /home
- en créant un utilisateur spécial appelé website
ou autre, puis en plaçant les fichiers dans le répertoire d'origine de cet utilisateur (par exemple, /home/website
).
Jetez un œil au Filesystem Hierarchy Standard ( Wikipedia ). J'utilise moi-même/srv/web/$ domain/{htdocs, logs, cgi-bin, ...}.
Les sites Web devraient vivre dans les répertoires personnels des utilisateurs. Ce sont des données utilisateur, doivent être isolées par un utilisateur par site, et le contenu dynamique doit s'exécuter à nouveau en tant qu'utilisateur distinct, avec des fichiers que le contenu dynamique doit lire et modifier en fonction des autorisations appropriées pour le faire.
Mise à jour:
Ce n'est pas parce qu'il n'est pas un serveur d'hébergement partagé que vous ne devez pas vous engager dans de bonnes pratiques de sécurité et séparer les rôles indépendants dans leurs propres zones de sécurité.
Le guide définitif est le Filesystem Hierarchy Standard qui dit que /srv
est le bon endroit.
Le serveur Web Apache a un site Web par défaut sous / var/www / mais il suggère de mettre 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>
Où ils vivent sur le disque n'a pas d'importance. C'est là que vous les voulez.
J'ai un lien symbolique de/www sur toutes mes machines vers l'endroit où elles vivent vraiment, donc je n'ai jamais à me demander de machine à machine. Certaines machines plus anciennes ont/u0 et/u1 pour les disques utilisateur, et j'y place les choses 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 des choses. Je viens de sauvegarder les disques utilisateur.
Bien sûr, j'ai un site de distribution maître 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 xen) et rsync/usr autour. Rend ma vie facile.
Selon moi, vous ne devez JAMAIS et JAMAIS mettre de services Internet sur la zone système commune.
Vos services Internet (Apache/Tomcat/SSH, etc.) sont une porte d'entrée, alors si vous mettez ces services dans votre zone système, vous serez potentiellement vulnérable à certaines attaques.
Plus que si vous avez placé vos différents services dans une zone sandbox sûre comme une autre partition de détachement.
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.)