Il n'y a pas de "meilleur" répertoire. Et tandis que les gens pourraient dire que cette question est subjective, ou que le placement réel des fichiers n'a pas d'importance - et ils ont raison sur ce dernier point - il existe des recommandations standardisées sur où mettre quoi dans les systèmes de type Unix.
La norme de hiérarchie du système de fichiers définit cela et vous propose ce qui suit :
-
/var
– un endroit pour mettre les données qui changent pendant le fonctionnement normal, comme les journaux, etc./var/www
est le répertoire par défaut pour placer le contenu Web pour Apache, mais son utilisation n'est pas du tout normalisée et c'est juste l'endroit "habituel" où vous le placeriez car les gens ne changent pas les paramètres par défaut très souvent. -
/srv
– ce répertoire doit contenir des données qui sont servies par le système. C'est généralement l'endroit que vous voulez. Le FHS explique :L'objectif principal de cette spécification est de permettre aux utilisateurs de trouver l'emplacement des fichiers de données pour un service particulier, et de sorte que les services qui nécessitent une seule arborescence pour les données en lecture seule, les données inscriptibles et les scripts (tels que les scripts cgi) puissent être raisonnablement placés. Les données qui n'intéressent qu'un utilisateur spécifique doivent aller dans le répertoire personnel de cet utilisateur. (…)
Une méthode pour structurer les données sous
/srv
est par protocole, par ex.ftp
,rsync
,www
,etcvs
Alors, créez simplement un
/srv/www
répertoire et utilisez-le. Vous pouvez créer des sous-dossiers pour chaque hôte virtuel que vous souhaitez servir avec votre machine. -
/home
contient des fichiers qui ne devraient appartenir qu'à un seul utilisateur. Apache, par exemple, autorise les répertoires d'utilisateurs, vous pouvez donc accéder aux fichiers Web d'un utilisateur viahttp://example.com/~username
, et ils sont servis à partir dupublic_html
répertoire dans la maison de l'utilisateur.Si vous utilisez un serveur partagé entre plusieurs personnes et que vous souhaitez permettre à chacun d'héberger ses propres scripts, c'est ici qu'il faut aller. N'oubliez pas de rendre les répertoires accessibles en écriture uniquement par l'utilisateur auquel ils appartiennent.
Essentiellement /srv/www
et /var/www
sont des répertoires dans lesquels vous devez créer des sous-répertoires pour tout projet Web que vous souhaitez héberger. Vous pouvez alors définir différentes permissions sur ces répertoires pour permettre à certains utilisateurs ou groupes d'utilisateurs d'y écrire. Si vous avez des projets pour un utilisateur à la fois, utilisez /home
.
Eh bien, vous pouvez placer 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 et si vous suivez la norme de hiérarchie du système de fichiers, il irait ici.
Si vous faites plusieurs domaines, vous pouvez faire /srv/domain1
/srv/domain2
etc etc puis sous-dossier à l'intérieur /ftp
/www
/tftp
/logs
/etc.etc.etc
Pour moi, c'est une structure très solide sur laquelle s'appuyer et contrôler facilement
Mais en tant qu'administrateur, vous pouvez faire aussi propre ou désordonné que vous le souhaitez.
Ok réponse simple et rapide.
Si vos fichiers Web sur le système ne seront accessibles que par UN utilisateur sur le système Linux. Utiliser le répertoire personnel de l'utilisateur (~/
).
Si vos fichiers Web sur le système seront accessibles par PLUSIEURS utilisateurs sur le système Linux. Utilisez /srv/
.
C'est exactement ce que déclare http://refspecs.linuxfoundation.org/FHS_2.3/fhs-2.3.html#SRVDATAFORSERVICESPROVIDEDBYSYSTEM.
Voici la citation :
/srv contient des données spécifiques au site qui sont servies par ce système.
L'objectif principal de cette spécification est de permettre aux utilisateurs de trouver l'emplacement des fichiers de données pour un service particulier, et de sorte que les services qui nécessitent une seule arborescence pour les données en lecture seule, les données inscriptibles et les scripts (tels que les scripts cgi) puissent être raisonnablement placés. Les données qui n'intéressent qu'un utilisateur spécifique doivent être placées dans le répertoire personnel de cet utilisateur.
Bonus :www ? FTP ? Organiser par protocole ? Hein ?
Comme indiqué ici dans http://refspecs.linuxfoundation.org/FHS_2.3/fhs-2.3.html#SRVDATAFORSERVICESPROVIDEDBYSYSTEM
- Si votre site Web n'est accessible que par UN SEUL utilisateur sur le système et UNIQUEMENT via le navigateur (protocole http), alors :
~/http/your-website-directory/
- Si votre site Web n'est accessible que par UN SEUL utilisateur sur le système et NON UNIQUEMENT via le navigateur, mais plusieurs protocoles (par exemple, http AND tcp AND ...) alors :
~/your-website-directory/
- Si votre site Web est accessible par PLUSIEURS utilisateurs sur le système et UNIQUEMENT via le navigateur (protocole http), alors :
/srv/http/your-website-directory/
- Si votre site Web est accessible par PLUSIEURS utilisateurs sur le système et NON UNIQUEMENT via le navigateur, mais plusieurs protocoles (par exemple, http AND ftp AND ...) alors :
/srv/your-website-directory/
Hein pourquoi pas www ? C'est un héritage de l'époque d'Apache. www ne précise pas quel protocole est utilisé. Debian l'utilise toujours à ce jour alors que par exemple Arch Linux utilise /srv/http.