Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
tutoriel:lamp_repertoires_de_travail [Le 28/09/2015, 16:03]
90.11.172.201 [Ajout de liens symboliques]
tutoriel:lamp_repertoires_de_travail [Le 19/05/2023, 06:34] (Version actuelle)
krodelabestiole ancienne révision (Le 07/10/2021, 18:37) restaurée (nope il ne manque rien)
Ligne 1: Ligne 1:
-{{tag>​serveur tutoriel}} +{{tag>​serveur tutoriel ​bionic}}
- +
-----+
  
 +{{ :​logo:​apache-logo.png?​80nolink| Logo du logiciel Apache 2}}
  
 ====== Serveur LAMP - Créer un/des répertoires de travail ====== ====== Serveur LAMP - Créer un/des répertoires de travail ======
  
  
-===== Présentation ===== +Ce tutoriel décrit comment mettre en place un espace ​de travail pour le [[:web]], ​avec la mise en pratique ​de deux cas de figures ​: un espace publicconsultable ​en [[:web#​http_et_navigation|HTTP]] par les internautes et affichant une page web, et un espace privéseulement visible depuis ​la machine ​ou le réseau local et listant les fichiers qui y sont présents.
- +
-L'​erreur de beaucoup de personnes arrivant sur Ubuntu et/ou GNU/Linux est de créer des pages internet avec des droits d'​administration ou d'​affecter le répertoire /var/www à un utilisateur. En contrepartie,​ beaucoup d'​utilisateurs trouvent également peu pratique ​de devoir travailler dans un répertoire qu'ils n'ont pas choisi.\\ +
-**/​var/​www** est un répertoire sous droits root. Il est donc contre indiqué de travailler dans ce répertoire. +
-<note important>​le fichier index.html "​it'​s works" installé par défaut (apache2 version 2.4.7) stipule"Le répertoire root par défaut sous Ubuntu est /​var/​www/​html. Vous pouvez définir votre propre "​virtual hosts" dans /var/www. C'est différent des précédentes versions qui préconisaient de se placer en dehors de ce répertoire pour des raisons de sécurité."​ </​note>​ +
-Ici nous allons exposer comment créer ses propres répertoires de travail ​avec des droits spécifiques à une utilisation à la fois '​**publique**'​ (serveur web personnel) et '​**privée**'​ (serveur de développement). +
- +
-Nous allons aussi faire en sorte de rendre **/​var/​www** inaccessible ​de l'​extérieur ou du moins accessible de façon ponctuelle. +
- +
-===== Mise en place ===== +
- +
- ​Attention ! Pour la version Ubuntu 14.04, apache2 est en version 2.4.7. Le nouveau répertoire racine pour le serveur est**/​var/​www/​html** et non ///​var/​www//​. Voir la remarque en fin du **4. Problèmes**. +
-==== Protection de /var/www ==== +
- +
-Dans un premier temps nous allons donc rendre le dossier /var/www inaccessible. Pour celaon [[tutoriel:​comment_editer_un_fichier|édite]] ​en [[:sudo|super utilisateur]] le fichier : **/​etc/​apache2/​sites-available/​default** (ou à partir de Ubuntu 14.04le fichier :  **/​etc/​apache2/​sites-available/​000-default.conf**) ​et dans la section <​Directory /​var/​www>​ on va modifier les accès . //Depuis la version 2.4 d'​apache le fichier 000-default.conf n'a plus de section <​Directory /​var/​www>​il faut la rajouter en dessous de la ligne  DocumentRoot /var/www//. \\ +
-Changez :\\ +
-<​file>​ +
-<​Directory /​var/​www/>​ +
- Options Indexes FollowSymLinks MultiViews +
- AllowOverride None +
- Order allow,​deny +
- Allow from all +
-</​Directory>​ +
-</​file>​ +
-en :\\ +
-A partir de ubuntu 13.10 et apache 2.4  +
-<​file>​ +
-<​Directory /​var/​www/>​ +
- Options Indexes FollowSymLinks MultiViews +
- AllowOverride None +
- <​RequireAny>​ +
- Require ip 127.0.0.1 +
- Require ip 192.168.1 +
- </​RequireAny>​ +
-</​Directory>​ +
-</​file>​ +
- +
-Pour les versions précédentes à ubuntu 13.10 et apache 2.4 +
- +
-<​file>​ +
-<​Directory /​var/​www/>​ +
- Options Indexes FollowSymLinks MultiViews +
- AllowOverride None +
- Order Deny,​Allow +
- Deny from all +
- Allow from 127.0.0.1  +
- Allow from 192.168.1.0/​24  +
-</​Directory>​ +
-</​file>​ +
- +
-Cette modification va faire en sorte que seule votre machine ​(127.0.0.1) et celles de votre réseau local (à condition que celui-ci utilise l'​adresse 192.168.1.0) auront accès aux pages web situées dans le dossier **/​var/​www/​**. +
- +
- +
-==== Création des répertoires de travail ====+
  
-Ici nous allons placer nos répertoires dans la zone **/media** (en prévision ​d'une installation sur une clé usb, un disque externe, une partition séparée, etc. Libre à vous de choisir ​le lieu ... qu'il reste cohérent quand même :-P\\+La mise en place de ces espaces de travail se fait grâce à la fonctionnalité ​d'[[:​apache2#​hotes_virtuels|hôte virtuel]] (//​VirtualHost//​) dont dispose ​le serveur HTTP [[:apache2|Apache]].
  
-  sudo mkdir /​media/​www-dev +===== Prérequis =====
-  sudo mkdir /​media/​www-dev/​public +
-  sudo mkdir /​media/​www-dev/​private+
  
 +Afin de suivre ce tutoriel, il vous faut une pile [[:LAMP]] ou au moins [[:​apache2|Apache]] installé sur une version récente d'​Ubuntu.
  
-==== Donner les droits utilisateur aux répertoires ​de travail ====+Vous pouvez donc au choix : 
 +  * suivre la [[:​lamp#​installation|méthode d'​installation ​de LAMP]] (si vous avez besoin de [[:PHP]] et d'un serveur de bases de données) 
 +  * ou dans le cas contraire simplement installer le paquet [[apt>​apache2]] (voir la [[:​apache2#​installation|documentation à ce sujet]])
  
-<note important>​__Attention__ : la variable '​**$USER**' ​est une variable pour l'utilisateur en cours. si vous voulez affecter ces répertoires à un autre utilisateur,​ donnez le nom réel de l'​utilisateur.\\ +Il est aussi conseillé d'avoir quelques rudiments concernant la ligne de commandeSi ce n'​est ​pas le cas mieux vaut commencer par essayer ​de vous former un minimum en consultant [[:tutoriel:console_ligne_de_commande|cette documentation]],​ en particulier les chapitres concernant les commandes ''​ls''​ ''​cd''​ ''​mkdir''​ ''​mv''​ ''​cp''​ et ''​rm''​.\\  
-Le '**users**'​ par contre ​est un nom de **group** (normalement déjà présent sur votre installation). Soit vous utilisez nom_user:nom_user, soit nom_user:users.\\ +Il peut aussi être très utile de consulter la documentation de [[:nano]], qui est probablement l'​éditeur ​de fichier en ligne de commande le plus simple à prendre en main. C'est celui que nous documenterons dans ce tutoriel.\\  
-'​**users**'​ étant souvent le **group** utilisé sur de l'​hébergement mutualiséce qui vous permet ​de simuler votre hébergeur au plus près.</​note>​+Vous pouvez également consulter la documentation concernant la commande [[:​utilisateurs:​roschan:​sudo|sudo]] si elle ne vous est pas familière.
  
-  sudo chown -R $USER:users /​media/​www-dev+===== Mise en place d'un espace public =====
  
 +==== Création du répertoire de travail ====
  
 +Pour ce cas de figure nous voulons qu'​Apache affiche le contenu des fichiers que nous créerons dans le répertoire ''/​var/​www/​public''​.
  
-<note important>​Si vous n'utilisez pas /media/www/ mais un dossier personnalisé,​ attention : +Nous allons donc commencer par créer ce répertoire. Par défaut le répertoire ''/var/www''​ appartient à l'​utilisateur //root// et les autres ​utilisateurs ​n'y ont pas accès en écritureIl nous faut donc créer ce répertoire avec les [[:sudo|permissions ​super utilisateur]] ([[:utilisateurs:​roschan:​sudo|sudo]]) : 
-  * Vous ne pouvez pas utiliser des partitions NTFS et FAT, car elles ne gèrent pas les droits ​utilisateurs. ​il faut donc impérativement que votre dossier figure sur une partition Linux. +<​code>​sudo mkdir /var/www/public</code>
-  * Si votre dossier figure sur un autre disque dur (clef USB, etc...), toutes ​les permissions ​doivent être favorables, sur chacun des dossiers, depuis le disque lui même. +
-Exemple ​votre site se situe sous /media/votre_disque/vos_sites/votre_site, il vous faut exécuter :+
  
-sudo chown $USER:users /​media/​votre_disque+Dans la foulée nous allons modifier les [[:​permissions]] de ce répertoire en suivant [[:​apache2#​permissions|cette documentation]],​ afin qu'​Apache soit en mesure d'​accéder au répertoire et que nous soyons en mesure d'y apporter des modifications ​:
  
-sudo chown $USER:users /media/votre_disque/vos_sites+<​code>​sudo chown $USER:www-data ​/var/www/public 
 +chmod 750 /​var/​www/​public</​code>​
  
-sudo chown -R $USER:​users ​ /​media/​votre_disque/​vos_sites/​votre_site +Pour l'​exemple nous allons y créer un fichier ''​index.html''​ contenant le minimum nécessaire à l'​affichage ​d'un message d'​accueil :
-</​note>​ +
-==== Configuration ​d'alias dans apache ====+
  
-Pour pouvoir accéder à ces répertoires,​ apache a besoin d'une *//redirection//*.\\ +<​code>​nano ​/var/www/public/index.html</code>
-Cette *//​redirection//​* se présente sous la forme : http://​nom_de_domaine.tld/​nom_de_redirection\\ +
-Ces *//​redirections//​* s'​appellent des **Alias**.\\ +
-Il nous faut donc ajouter deux alias, un  pour **public** et un pour **private**.+
  
-[[tutoriel:comment_editer_un_fichier|Éditez]] en [[:​sudo|super utilisateur]] le fichier : **/​etc/​apache2/​sites-available/​default** (ou **/​etc/​apache2/​sites-available/​000-default.conf** pour Ubuntu 14.04 et plus) et ajoutez à la suite de <​Directory /​var/​www>​....</​Directory> ​:\\+Ce qui ouvre l'​éditeur ​[[:nano]] dans lequel nous allons coller ​:
  
-<note tip>Dans le cas ci-dessous on accorde un accès au W3C (validateur ​html) et à l'espace ​dédié aux développeurs d'​application utilisant Paypal</note>+<file index.html><​html lang="​fr">​ 
 +<​head>​ 
 +  <meta charset="​UTF-8">​ 
 +  <meta name="​viewport"​ content="​width=device-width,​ initial-scale=1.0">​ 
 +  <​title>​Espace public</​title>​ 
 +</​head>​ 
 +<​body>​ 
 +  <​h1>​Bienvenue sur notre espace ​public.</​h1>​ 
 +</​body>​ 
 +</​html>​</file>
  
-A partir de ubuntu 13.10 et apache 2.4  +Puis //​Ctrl//​+//​O//​ pour sauvegarder ​et //Ctrl//+//X// pour quitter.
-<​file>​ +
-## ZONE PUBLIQUE +
-Alias /public ​/media/www-dev/public +
-<​Directory ​/media/www-dev/public>​ +
- Options Indexes FollowSymLinks MultiViews +
- AllowOverride All +
- Require all granted +
-</Directory>​+
  
-## ZONE PRIVEE +==== Création de l'​hôte virtuel ====
-Alias /private /​media/​www-dev/​private +
-<​Directory /​media/​www-dev/​private>​ +
- Options Indexes FollowSymLinks MultiViews +
- AllowOverride All +
- <​RequireAny>​ +
- Require ip 127.0.0.1 ​            +
- Require ip 192.168.1 ​            +
- Require host .w3.org ​             +
- Require host sandbox.paypal.com  +
- </​RequireAny>​ +
-</​Directory>​ +
-</​file>​+
  
-Pour les versions précédentes à ubuntu 13.10 et apache 2.4 +Nous allons [[:apache2#creation_d_hotes_virtuels|configurer notre hôte virtuel]] dans un fichier dédié ''​/etc/apache2/sites-available/public.conf''​ :
-<​file>​ +
-## ZONE PUBLIQUE +
-Alias /public ​/media/www-dev/public +
-<​Directory /​media/​www-dev/​public>​ +
- Options Indexes FollowSymLinks MultiViews +
- AllowOverride All +
- Order allow,​deny +
- Allow from all +
-</​Directory>​+
  
-## ZONE PRIVEE +<​code>​sudo nano /etc/apache2/sites-available/public.conf</code>
-Alias /private ​/media/www-dev/private +
-<​Directory /​media/​www-dev/​private>​ +
- Options Indexes FollowSymLinks MultiViews +
- AllowOverride All +
- Order deny,​allow +
- Deny from all +
- Allow from 127.0.0.1             +
- Allow from 192.168.1.0/​24 ​       +
- Allow from .w3.org ​             +
- Allow from sandbox.paypal.com ​   +
-</​Directory>​ +
-</file>+
  
-==== Ajout de liens symboliques ====+Ce qui ouvre l'​éditeur [[:nano]] dans lequel nous allons coller :
  
-A présent les espaces sont valides, mais non visible depuis la racine de votre serveur (c.f.: http://localhost). Il serait donc judicieux et pratique d'y avoir accès directement,​ plutôt que de devoir taper manuellement 'http://localhost/public' ou 'http://localhost/private'​.\\ +<file - public.conf><​VirtualHost *:80> 
-Il suffit tout simplement de créer un lien symbolique dans **/var/www**+ DocumentRoot "/var/www/public"​ 
 + <​Directory "/var/www/public">​ 
 + Options +FollowSymLinks 
 + AllowOverride all 
 + Require all granted 
 + </​Directory>​ 
 + ErrorLog /var/log/apache2/error.public.log 
 + CustomLog ​/var/log/​apache2/​access.public.log combined 
 +</​VirtualHost></​file>​
  
-<note important>​ +Puis //Ctrl//​+//​O//​ pour sauvegarder ​et //Ctrl//+//X// pour quitter.
-les liens symboliques dans **/var/www** se font via '​sudo' ​et donc sont en //root:root//. **Ne changez pas ces droits !**</note>+
  
-  ​sudo ln -s /​media/​www-dev/​public /var/​www/​html/​public +Il faut ensuite activer cet hôte : 
-  sudo ln -s /​media/​www-dev/​private /​var/​www/​html/​private+<​code>​sudo a2ensite ​public</code>
  
-Il vous faudra également effacer ​le fichier index.html pour que cela prenne effet :+Ce //​VirtualHost//​ ne possède pas de directive ''​ServerName''​ ou ''​ServerAlias''​. ​Il sera donc utilisé par défaut pour les requêtes sur le port 80 si aucun autre //​VirtualHost//​ ne correspond exactement au nom de domaine appeléPour qu'il soit pris en compte il faut par contre désactiver l'​hôte virtuel par défaut d'​Apache,​ qui arrive en priorité en suivant l'​alphabet ​: 
 +<​code>​sudo a2dissite 000-default</​code>​
  
-  ​sudo rm /var/​www/​html/​index.html+Puis nous pouvons redémarrer Apache afin qu'il prenne en compte notre nouvelle configuration : 
 +<​code>​sudo systemctl restart apache2</code>
  
-==== Éviter le 403 ====+La page d'​accueil publique devrait alors être visible à l'​adresse [[http://​localhost/​]] pour la machine locale, ou à l'​adresse IP du serveur pour les autres machines.
  
-Les répertoires **/​var/​www** et **/​media/​www-dev/​private** (/​var/​www/​private) étant interdit de l'​extérieur,​ un visiteur tapant votre adresse (ip / [[:​dns_dynamique|no-ip , DynDNS]] / nom de domaine) directement sans préciser le dossier '//​public//',​ se verra accueilli par une belle page en 403 (ou si il tente d'accéder *par miracle* <-- faut le savoir :-P à votre répertoire '//​private//'​)+===== Mise en place d'un espace privé =====
  
-Si vous n'avez pas de domaine (domain.tld est un exemple générique),​ il faudra utiliser votre IP réelle (ex : http://​checkip.dyndns.org/​ ).+==== Création du répertoire ​de travail ====
  
-On va donc remédier à cela en redirigeant les visiteurs automatiquement vers le répertoire '//public//' ​en cas d'erreur 403.\\ +De la même manière nous allons créer un répertoire ​''/var/www/private''​ : 
-Il suffit d'​ajouter la ligne : +<code>​sudo mkdir /var/www/private</code>
-  ErrorDocument 403 "​http://​domain.tld/​public"​ +
-à la suite de +
-  <Directory ​/var/www+
-et : +
-  ​<Directory ​/media/​www-dev/​private>+
  
-Dans certains cas une erreur 403 peut également se produire lorsque vous demandez l'​affichage de localhost alors que 127.0.0.1 fonctionne (et que vous avez d'ores et déjà réglé ​les problèmes de ServerName dans /etc/hosts et  ​/etc/apache2/apache2.conf). ​+Puis modifier pareillement ​les [[:​apache2#​permissions]] : 
 +<​code>​sudo chown $USER:​www-data ​/var/www/private 
 +chmod 750 /var/www/​private</​code>​
  
-Avant Ubuntu 14.04dans le fichier : /​etc/​apache2/​sites-available/​default,​ ajouter à la suite de <Directory ​/var/www>  la ligne : +Pour cet exemple nous n'​allons pas créer de fichier indexmais seulement un fichier ​''​test.txt'' ​: 
-  Allow from localhost ​          +<code>​touch ​/var/www/​private/​test.txt</code>
-après  +
-  Allow from 127.0.0.1             +
-A partir de Ubuntu 14.04, il faut ajouter +
-  Require host localhost  +
-après  +
-  ​<RequireAny> +
-      Require ip 127.0.0.1  +
-===== Finalisation =====+
  
-Voilà c'est fini. À présent il vous suffit ​de recharger la configuration d'apache pour rendre tout cela opérationnel. +==== Création ​de l'hôte virtuel ====
-  sudo /​etc/​init.d/​apache2 force-reload+
  
-===== Problèmes =====+Notre [[:​apache2#​creation_d_hotes_virtuels|hôte virtuel]] sera cette fois configuré dans le fichier ''/​etc/​apache2/​sites-available/​private.conf''​ :
  
-* Cas d'une erreur sur ServerName au rechargement d'​apache\\ +<​code>​sudo nano /etc/apache2/​sites-available/​private.conf</​code>​
- [[:apache2|Erreur ServerName]]+
  
-* Renvoi vers votre 'livebox/​neufbox/​ClubInternet Box' avec un nom de domaine.\\ +Ce qui ouvre l'éditeur ​[[:nano]] dans lequel nous allons coller ​:
- [[tutoriel:comment_editer_un_fichier|Éditez]] en [[:​sudo|super utilisateur]] le fichier : **/​etc/​hosts** et ajouter une ligne avec : +
-  127.0.0.1 domain.dnsalias.net+
  
-Erreur sur le localhost \\ +<file - private.conf><​VirtualHost ​*:80> 
- ​[[tutoriel:​comment_editer_un_fichier|Éditez]] en [[:​sudo|super utilisateur]] le fichier : **/​etc/​hosts** et remplacer les lignes ​+ ServerName private.localhost 
-  127.0.0.1 localhost + DocumentRoot "/​var/​www/​private"​ 
-  ​127.0.1.1 ​<hostname+ <Directory "/​var/​www/​private"​
-par : + Options +FollowSymLinks +Indexes 
-  127.0.0.1 ​localhost ​<hostname+ AllowOverride all 
-   + Require ip ::1 127.0.0.1 ​192.168 
-* Apache2 + Ubuntu 14.04 (et systèmes suivants) nouveau répertoire racine: + </Directory
-  + ErrorLog /var/log/apache2/error.private.log 
-Attention pour la nouvelle version 14.04, la version ​apache2 ​qui a été publié lors de la Ubuntu 14.04 est en 2.4.7 il semble que, pour des raisons de sécurité, le nouveau répertoire racine pour le serveur est: + CustomLog ​/var/log/apache2/​access.private.log combined 
-**/var/www/html**+</​VirtualHost></​file>​
  
-Donc, à partir de maintenant, vous devez placer les fichiers de votre site Web dans le dossier **/var/www/html**. Et comme cela, vous ne devriez pas avoir à nouveau ce problème avec les mises à jour futures.+Puis //Ctrl//+//O// pour sauvegarder et //​Ctrl//​+//​X//​ pour quitter.
  
-Quoi qu'il en soit, si vous voulez changer ce répertoire racine pour un autre, vous devez modifier (en tant que root) le fichier **000-default.conf** situé dans **/​etc/​apache2/​sites-available** +Il faut ensuite activer cet hôte et redémarrer Apache : 
-<​code>​sudo ​nano /​etc/​apache2/​sites-available/​000-default.conf</​code>​ +<​code>​sudo ​a2ensite private.conf 
-C'est la ligne suivante: //​DocumentRoot /​var/​www/​html//​\\  +sudo systemctl restart apache2</​code>​
-qu'il faut modifier à: //​DocumentRoot /​var/​www/​chemin-vers-son-autre-répertoire//​ +
-===== Liens et ScreenCast =====+
  
-Reprise de l'ancienne doc http://doc.ubuntu-fr.org/tutoriel/virtualhosts_avec_apache2_et_dyndns+  * L'option ''​+Indexes''​ permet le [[:apache2#​index|listing des fichiers]]. 
 +  * La directive //[[https://httpd.apache.org/docs/current/​fr/​mod/​mod_authz_core.html#​require|Require ip]]// ne permet l'​utilisation de cet hôte que par les machines possédant l'​adresse IP locale (''::​1''​ en [[wpfr>​IPv6]] ou ''​127.0.0.1''​ en [[wpfr>​IPv4]]) ou une IP du réseau local (commençant par ''​192.168''​). 
 +  * Cet hôte virtuel ne sera appelé que pour le nom de domaine ''​private.localhost'',​ tel que défini par la directive ''​ServerName''​.
  
-Attention actuellement,​ les ScreenCasts ci-dessous ne sont plus disponibles sur le Web pour le moment mais vous pouvez aller sur le serveur pour voir ce qui est disponible ​[[http://doc.ubuntu-fr-secours.org|Serveur Doc Ubuntu FR Secours]]\\ +L'​espace privé sera alors accessible depuis cette machine à l'​adresse ​[[http://private.localhost/]] et listera les fichiers présents dans le répertoire ''​/var/www/private'',​ en l'​occurrence notre fichier ''​test.txt''​.
-<​del>​ +
-Installation en vidéo (screencast) de ce tutoriel : http://​doc.ubuntu-fr-secours.org/​lamp/​ Internal Server Error!!! \\ +
-- [[http://​screencast.ubuntu-fr-secours.org/​screencast/​lamp/​04-Environnement_de_travail.ogg|04-Environnement_de_travail.ogg]] - 21 Mo - 15 minutes 33 sec ( pourquoi une minute de plus 8-o ). Not Found !!! \\ +
-- [[http://screencast.ubuntu-fr-secours.org/screencast/​lamp/​04-Environnement_de_travail.avi|04-Environnement_de_travail.avi]] - 39 Mo - 14 minutes 36 sec. Not Found !!! \\ +
-</​del>​+
  
 ---- ----
- ​--- ​//[[|]] Contributeur/​Mainteneur ​[[utilisateurs:​McPeter]]//+//Contributeurs : [[:​utilisateurs:​krodelabestiole]]//
  • tutoriel/lamp_repertoires_de_travail.1443449009.txt.gz
  • Dernière modification: Le 28/09/2015, 16:03
  • par 90.11.172.201