Quel est le répertoire recommandé pour stocker le contenu du site Web?


21

Lorsque j'ai commencé à programmer pour le Web et que je voulais créer un nouveau projet, on m'a toujours appris à créer un répertoire dans /var/www/. Cependant, dans de nombreux tutoriels, je lis que les gens ont tendance à créer un répertoire dans /home/username/.

Je n'aime pas l'idée de le mettre /home/username/.

Y a-t-il un endroit correct ou sinon quels sont les avantages / inconvénients de le placer dans certaines zones du système de fichiers?


C'est la préférence ("meilleur" implique que, peut-être vous devriez changer cela pour être plus sûr, etc.) pour le développement principalement. Si vous les servez à partir de là aussi, alors vous voudrez probablement quelque chose de isolé pour garder une certaine distance entre vos fichiers personnels et les trucs de partage Web. Mais il y a un million de configurations. Je reste avec /var/wwwet ai habituellement cela sur un autre lecteur (juste préférence).
nerdwaller

Il n'y a pas de "meilleur" répertoire. C'est entièrement votre préférence car l'emplacement phyiscal des fichiers n'a pas d'importance.
Ramhound

Réponses:


36

Il n'y a pas de "meilleur" répertoire. Et tandis que les gens pourraient soutenir que cette question est subjective, ou que le placement réel des fichiers n'a pas d'importance - et ils ont raison à propos de ce dernier - il existe des recommandations standardisées sur l'endroit 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 offre les éléments suivants:

  • /var- un endroit pour mettre des données qui changent pendant le fonctionnement normal, comme les journaux, etc. /var/wwwest le répertoire par défaut pour placer le contenu Web pour Apache, mais son utilisation n'est pas du tout normalisée et juste l'endroit "habituel" que vous mettriez parce que les gens ne modifiez pas très souvent les paramètres par défaut.

  • /srv- ce répertoire doit contenir les données qui sont servies par le système. C'est généralement l'endroit que vous souhaitez. La FHS explique:

    Le but principal de cette spécification est que les utilisateurs puissent trouver l'emplacement des fichiers de données pour un service particulier, et 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 ne présentent d'intérêt que pour un utilisateur spécifique devraient être placées dans le répertoire personnel de cet utilisateur. (…)

    Une méthode pour structurer les données sous /srvest par protocole, par exemple. ftp, rsync, wwwEtcvs

    Donc, créez simplement un /srv/wwwrépertoire et utilisez-le. Vous pouvez créer des sous-dossiers pour chaque hôte virtuel que vous voudrez peut-être servir avec votre machine.

  • /homecontient des fichiers qui ne devraient appartenir qu’à un seul utilisateur. Apache, par exemple, autorise les répertoires utilisateur , vous pouvez donc accéder aux fichiers Web d'un utilisateur via http://example.com/~username, et ils sont servis à partir du public_htmlrépertoire dans la maison 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, c'est là qu'il faut aller. N'oubliez pas de rendre les répertoires accessibles en écriture par l'utilisateur auquel ils appartiennent uniquement.

Essentiellement /srv/wwwet /var/wwwsont les répertoires que vous devez créer des sous - répertoires dans pour tout projet web , vous voudrez peut - être l' hôte. Vous pouvez ensuite définir différentes autorisations 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.


3
Le http://example.com/~usernamene pointe généralement pas vers /home/username/, mais vers /home/username/public_html/.
choroba

Oui, merci, cela aurait dû être ajouté pour plus de clarté. Terminé.
slhck

Après plusieurs années d'utilisation, /var/wwwil est temps de changer!
sitilge

De plus, cela wwwressemble plus à un sous-domaine pour moi.
sitilge

Juste pour ajouter ... L'utilisation de / var / www est une pratique courante pour les instances de service de site unique et comme indiqué l'emplacement par défaut d'Apache, alors que l'utilisation de / home / usr / was / est une pratique courante pour les serveurs revendeurs ou multi-site hébergement tiré du concept d'utilisateurs == clients. Les deux ne sont que des pratiques courantes et la réponse de shlck est une meilleure utilisation des finalités prévues du système de fichiers.
Jools

4

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, cela ira ici.

Si vous faites plusieurs domaines, vous pouvez le faire, /srv/domain1 /srv/domain2etc., puis sous-dossier à l'intérieur/ftp /www /tftp /logs /etc.etc.etc

Pour moi, cela sent une structure très solide sur laquelle construire et facilement contrôler

Mais en tant qu'administrateur, vous pouvez faire aussi propre ou salissant que vous le souhaitez.


1

Ok réponse rapide facile.

Si vos fichiers Web sur le système ne seront accessibles que par UN utilisateur sur le système Linux. Utilisez 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 http://refspecs.linuxfoundation.org/FHS_2.3/fhs-2.3.html#SRVDATAFORSERVICESPROVIDEDBYSYSTEM déclare.

Voici la citation:

/ srv contient des données spécifiques au site qui sont servies par ce système.

Le but 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 pouvoir placer raisonnablement 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). Les données qui ne présentent d'intérêt que pour 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 utilisateur sur le système et UNIQUEMENT via le navigateur (protocole http), alors: ~/http/your-website-directory/ou (protocole https), alors:~/https/your-website-directory/
  • Si votre site Web n'est accessible que par UN utilisateur sur le système et NON SEULEMENT via le navigateur mais plusieurs protocoles (ig 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/ou (protocole https) alors:/srv/https/your-website-directory/
  • Si votre site Web est accessible par PLUSIEURS utilisateurs sur le système et NON SEULEMENT via le navigateur mais plusieurs protocoles (ig http AND ftp AND ...) alors: /srv/your-website-directory/

Pourquoi pas www? C'est un héritage de l'époque Apache. www ne spécifie pas quel protocole est utilisé. Debian l'utilise encore aujourd'hui alors que par exemple Arch linux utilise / srv / http.


0

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 apache2.conffichier par défaut contient un bloc commenté:

#<Directory /srv/>
#   Options Indexes FollowSymLinks
#   AllowOverride None
#   Require all granted
#</Directory>
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.