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 14/03/2015, 06:53]
HIE [Mise en place]
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 #​ local +
- Allow from 192.168.1.0/​24 #​ reseau +
-</​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\\+
  
-  sudo mkdir /media/www-dev +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/​public +
-  sudo mkdir /​media/​www-dev/​private+
  
 +===== Prérequis =====
  
-==== Donner les droits utilisateur aux répertoires ​de travail ====+Afin de suivre ce tutoriel, il vous faut une pile [[:LAMP]] ou au moins [[:​apache2|Apache]] installé sur une version récente d'​Ubuntu.
  
-<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.\\ +Vous pouvez donc au choix : 
-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.\\ +  * 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
-'**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>​+  ou dans le cas contraire simplement installer ​le paquet [[apt>​apache2]] (voir la [[:​apache2#​installation|documentation à ce sujet]])
  
-  sudo chown -R $USER:users /​media/​www-dev+Il est aussi conseillé d'​avoir quelques rudiments concernant la ligne de commande. Si 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''​.\\  
 +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.\\  
 +Vous pouvez également consulter la documentation concernant la commande [[:​utilisateurs:​roschan:​sudo|sudo]] si elle ne vous est pas familière.
  
 +===== Mise en place d'un espace public =====
  
 +==== Création du répertoire de travail ====
  
-<note important>​Si vous n'utilisez pas /media/www/ mais un dossier personnalisé,​ attention : +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''​.
-  * 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. +
-  * 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+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 écriture. Il nous faut donc créer ce répertoire avec les [[:sudo|permissions super utilisateur]] ([[:utilisateurs:​roschan:​sudo|sudo]]) : 
 +<​code>​sudo mkdir /var/www/public</code>
  
-sudo chown $USER:users /​media/​votre_disque/​vos_sites+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 -R $USER:users  ​/media/votre_disque/vos_sites/​votre_site +<​code>​sudo chown $USER:www-data ​/var/www/public 
-</note> +chmod 750 /​var/​www/​public</code>
-==== Configuration d'​alias dans apache ====+
  
-Pour pouvoir accéder à ces répertoires,​ apache a besoin d'une *//​redirection//​*.\\ +Pour l'exemple ​nous allons y créer ​un fichier ''​index.html''​ contenant le minimum nécessaire à l'​affichage d'un message d'​accueil :
-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:\\+<code>​nano ​/var/www/​public/​index.html</code>
  
-<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>​+Ce qui ouvre l'éditeur [[:nano]] dans lequel nous allons coller :
  
-A partir de ubuntu 13.10 et apache 2.4  +<file - index.html><​html lang="​fr">​ 
-<file+<head
-## ZONE PUBLIQUE +  <​meta charset="​UTF-8">​ 
-Alias /public /media/www-dev/public +  <​meta name="​viewport"​ content="​width=device-width, initial-scale=1.0">​ 
-<Directory ​/media/www-dev/​public+  <​title>​Espace ​public</title> 
- Options Indexes FollowSymLinks MultiViews +</head
- AllowOverride All +<​body>​ 
- Require all granted +  <​h1>​Bienvenue sur notre espace public.</​h1>​ 
-</Directory>+</​body>​ 
 +</html></​file>
  
-## ZONE PRIVEE +Puis //Ctrl//+//O// pour sauvegarder et //Ctrl//​+//​X//​ pour quitter.
-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 +==== Création de l'​hôte virtuel ====
-<​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 +Nous allons [[:apache2#creation_d_hotes_virtuels|configurer notre hôte virtuel]] dans un fichier dédié ''​/etc/apache2/sites-available/public.conf''​ :
-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            # Local +
- Allow from 192.168.1.0/​24 ​      # Réseau +
- Allow from .w3.org ​             # W3C +
- Allow from sandbox.paypal.com ​  # Paypal +
-</​Directory>​ +
-</​file>​+
  
-==== Ajout de liens symboliques ====+<​code>​sudo nano /​etc/​apache2/​sites-available/​public.conf</​code>​
  
-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'​.\\ +Ce qui ouvre l'éditeur [[:nano]] dans lequel nous allons coller ​:
-Il suffit tout simplement de créer un lien symbolique dans **/​var/​www**+
  
-<note important>__Attention:__ Ne jamais faire un '//rm -rf//' sur un lien symbolique ... cette commande aura pour effet de supprimer le contenu réel de destination du lien symbolique. Utilisez juste '//rm /dossier/nom_symbolique//' comme s'il s'​agissait d'un simple fichier.\\ +<file - public.conf><​VirtualHost *:80> 
-les liens symboliques dans **/var/www** se font via '​sudo'​ et donc sont en //root:root//. **Ne changez pas ces droits !**</note>+ 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>
  
-  sudo ln -s /media/www-dev/public ​/var/www/html/public +Puis //Ctrl//+//O// pour sauvegarder et //Ctrl//+//X// pour quitter.
-  sudo ln -s /media/www-dev/private ​/var/www/html/private+
  
-Il vous faudra également effacer le fichier index.html pour que cela prenne effet :+Il faut ensuite activer cet hôte : 
 +<​code>​sudo a2ensite public</​code>​
  
-  sudo rm /var/www/html/index.html+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>​
  
-==== Éviter le 403 ====+Puis nous pouvons redémarrer Apache afin qu'il prenne en compte notre nouvelle configuration : 
 +<​code>​sudo systemctl restart apache2</​code>​
  
-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//'​)+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.
  
-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/​ ).+===== Mise en place d'​un ​espace privé =====
  
-On va donc remédier à cela en redirigeant les visiteurs automatiquement vers le répertoire ​'//​public//'​ en cas d'​erreur 403.\\ +==== Création du répertoire de travail ====
-Il suffit d'​ajouter la ligne : +
-  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). ​+De la même manière nous allons créer un répertoire ​''/​var/www/private''​ : 
 +<​code>​sudo mkdir /var/www/private</code>
  
-Avant Ubuntu 14.04, dans le fichier ​: /etc/apache2/sites-available/​default,​ ajouter à la suite de <​Directory ​/var/www>  la ligne : +Puis modifier pareillement les [[:apache2#​permissions]] : 
-  Allow from localhost ​           # Local +<​code>​sudo chown $USER:​www-data ​/var/www/private 
-après  +chmod 750 /var/www/private</code>
-  Allow from 127.0.0.1 ​           # Local +
-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+Pour cet exemple nous n'allons pas créer ​de fichier index, mais seulement un fichier ​''test.txt''​ : 
-  ​sudo ​/etc/init.d/apache2 force-reload+<​code>​touch /var/www/private/test.txt</code>
  
-===== Problèmes =====+==== Création de l'​hôte virtuel ​====
  
-* Cas d'une erreur sur ServerName au rechargement d'​apache\\ +Notre [[:apache2#​creation_d_hotes_virtuels|hôte virtuel]] sera cette fois configuré dans le fichier ''/​etc/​apache2/​sites-available/​private.conf''​ :
- [[:apache2|Erreur ServerName]]+
  
-* Renvoi vers votre '​livebox/​neufbox/​ClubInternet Box' avec un nom de domaine.\\ +<​code>​sudo nano /etc/apache2/​sites-available/​private.conf</​code>​
- ​[[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 \\ +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 remplacer les lignes : +
-  127.0.0.1 localhost +
-  127.0.1.1 <​hostname>​ +
-par : +
-  127.0.0.1 localhost <​hostname>​ +
-   +
-* Apache2 + Ubuntu 14.04 (et systèmes suivants) nouveau répertoire racine: +
-  +
-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: +
-**/​var/​www/​html**+
  
-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.+<file - private.conf><​VirtualHost ​*:80> 
 + ServerName private.localhost 
 + DocumentRoot "/var/www/private"​ 
 + <​Directory "/​var/​www/​private">​ 
 + Options +FollowSymLinks +Indexes 
 + AllowOverride all 
 + Require ip ::1 127.0.0.1 192.168 
 + </​Directory>​ 
 + ErrorLog /​var/​log/​apache2/​error.private.log 
 + CustomLog /​var/​log/​apache2/​access.private.log combined 
 +</​VirtualHost></​file>​
  
-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** +Puis //Ctrl//+//O// pour sauvegarder et //Ctrl//+//X// pour quitter.
-<​code>​sudo nano /etc/apache2/sites-available/000-default.conf<​/code> +
-C'est la ligne suivante: ​//DocumentRoot ​/var/www/html//\\  +
-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+Il faut ensuite activer cet hôte et redémarrer Apache ​: 
 +<​code>​sudo a2ensite private.conf 
 +sudo systemctl restart apache2</code>
  
-Installation en vidéo (screencast) de ce tutoriel ​http://doc.ubuntu-fr-secours.org/lampInternal Server Error!!! \\ +  * L'​option ''​+Indexes''​ permet le [[:apache2#​index|listing des fichiers]]. 
-[[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 !!! \\ +  * 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''​). 
-[[http://​screencast.ubuntu-fr-secours.org/​screencast/​lamp/​04-Environnement_de_travail.avi|04-Environnement_de_travail.avi]] - 39 Mo - 14 minutes 36 secNot Found !!! \\+  * Cet hôte virtuel ne sera appelé que pour le nom de domaine ''​private.localhost'',​ tel que défini par la directive ''​ServerName''​.
  
 +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''​.
  
 ---- ----
- ​--- ​//[[|]] Contributeur/​Mainteneur ​[[utilisateurs:​McPeter]]//+//Contributeurs : [[:​utilisateurs:​krodelabestiole]]//
  • tutoriel/lamp_repertoires_de_travail.1426312409.txt.gz
  • Dernière modification: Le 14/03/2015, 06:53
  • par HIE