Quand j'ai commencé à programmer pour le Web et que je voulais créer un nouveau projet, on m'avait toujours appris à créer un répertoire dans /var/www/
. Cependant, dans beaucoup de tutoriels que j'ai lus, les gens ont tendance à créer un répertoire dans /home/username/
.
Je n'aime pas l'idée de le mettre dans /home/username/
.
Existe-t-il un emplacement correct ou, dans la négative, quels sont les avantages/inconvénients de le placer dans certaines zones du système de fichiers?
Il n'y a pas de "meilleur" répertoire. Et bien que les gens puissent dire que cette question est subjective ou que l’emplacement réel des fichiers n’a pas d’importance - et qu’ils ont raison à propos de ce dernier - il existe des recommandations standardisées indiquant où placer quoi dans les systèmes de type Unix.
La norme de hiérarchie du système de fichiers définit ceci et vous offre les avantages suivants:
/var
- un emplacement pour mettre des données qui changent pendant le fonctionnement normal, telles que les journaux, etc. /var/www
est le répertoire par défaut pour placer du contenu Web pour Apache, mais son utilisation n'est pas du tout normalisée et constitue l'emplacement "habituel" que vous souhaitez placer. parce que les gens ne changent pas les paramètres par défaut très souvent.
/srv
- ce répertoire doit contenir des données servies par le système. C'est généralement l'endroit que vous voulez. La FHS explique:
Le principal objectif de cette spécification est de permettre aux utilisateurs de localiser les fichiers de données pour un service donné et de placer raisonnablement les services nécessitant une seule arborescence pour les données en lecture seule, les données inscriptibles et les scripts (tels que les scripts cgi). Les données qui ne concernent que certains utilisateurs doivent être placées dans le répertoire de base de cet utilisateur. (…)
Une méthode pour structurer les données sous
/srv
est par protocole, par exemple.ftp
name__,rsync
name__,www
etcvs
name__
Donc, créez simplement un répertoire /srv/www
et utilisez-le. Vous pouvez créer des sous-dossiers pour chaque hôte virtuel que vous souhaitez desservir avec votre ordinateur.
/home
contient des fichiers qui ne devraient appartenir qu'à un seul utilisateur. Apache, par exemple, autorise serdirs , de sorte que vous pouvez accéder aux fichiers Web d'un utilisateur via http://example.com/~username
et qu'ils sont servis à partir du répertoire public_html
situé dans le répertoire de l'utilisateur.
Si vous utilisez un serveur partagé entre plusieurs personnes et que vous souhaitez autoriser tout le monde à héberger ses propres scripts, vous devez vous y rendre. N'oubliez pas de rendre les répertoires accessibles en écriture à l'utilisateur auquel ils appartiennent uniquement.
/srv/www
et /var/www
sont essentiellement des répertoires dans lesquels vous devez créer des sous-répertoires pour tout projet Web que vous souhaitez héberger. Vous pouvez ensuite définir différentes autorisations sur ces répertoires pour permettre à certains utilisateurs ou groupes d'utilisateurs de leur écrire. Si vous avez des projets pour un utilisateur à la fois, utilisez /home
.
Vous pouvez mettre des fichiers n'importe où, tant que les choses peuvent y accéder correctement, mais les systèmes de fichiers encombrés sont un casse-tête si quelqu'un arrive plus tard.
/srv
est le plus logique, plus si vous suivez la norme de hiérarchie du système de fichiers, il ira ici.
Si vous utilisez plusieurs domaines, vous pouvez créer /srv/domain1
/srv/domain2
etc etc. puis un sous-dossier à l'intérieur du /ftp
/www
/tftp
/logs
/etc.etc.etc
Pour moi, cela donne une structure très solide sur laquelle construire et facilement contrôler
Mais en tant qu'administrateur, vous pouvez faire le ménage comme vous voulez.
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 par défaut Apache2.conf
contient un bloc commenté:
#<Directory /srv/>
# Options Indexes FollowSymLinks
# AllowOverride None
# Require all granted
#</Directory>