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 19/07/2018, 23:18]
McPeter Suppression doc vétuste
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 ​vétuste}} +{{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 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.0 +
- </​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/​**.+
  
 +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]].
  
-==== Création des répertoires de travail ​====+===== Prérequis =====
  
-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, etcLibre à vous de choisir le lieu ... qu'il reste cohérent quand même :-P\\+Afin de suivre ce tutoriel, il vous faut une pile [[:LAMP]] ou au moins [[:​apache2|Apache]] installé ​sur une version récente d'​Ubuntu.
  
-  sudo mkdir /​media/​www-dev +Vous pouvez donc au choix : 
-  ​sudo mkdir /​media/​www-dev/​public +  ​* 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) 
-  ​sudo mkdir /​media/​www-dev/​private+  ​* ou dans le cas contraire simplement installer le paquet [[apt>​apache2]] (voir la [[:​apache2#​installation|documentation à ce sujet]])
  
 +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.
  
-==== Donner les droits utilisateur aux répertoires de travail ​====+===== Mise en place d'un espace public =====
  
-<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.\\ +==== Création du répertoire ​de travail ====
-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.\\ +
-'​**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>​+
  
-  sudo chown -R $USER:​users ​/media/www-dev+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''​.
  
 +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>​
  
 +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 :
  
-<note important>Si vous n'​utilisez pas /media/www/ mais un dossier personnalisé,​ attention : +<code>sudo chown $USER:​www-data ​/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. +chmod 750 /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+Pour l'​exemple nous allons y créer un fichier ''​index.html''​ contenant le minimum nécessaire à l'​affichage d'un message d'​accueil ​:
  
-sudo chown $USER:​users ​/media/votre_disque/vos_sites+<​code>​nano ​/var/www/public/​index.html</​code>​
  
-sudo chown -R $USER:​users ​ /​media/​votre_disque/​vos_sites/​votre_site +Ce qui ouvre l'éditeur [[:​nano]] ​dans lequel nous allons coller :
-</​note>​ +
-==== Configuration d'alias dans apache ====+
  
-Pour pouvoir accéder à ces répertoiresapache a besoin d'une *//​redirection//​*.\\ +<file - index.html><​html lang="​fr">​ 
-Cette *//redirection//​* se présente sous la forme : http://​nom_de_domaine.tld/nom_de_redirection\\ +<​head>​ 
-Ces *//redirections//* s'​appellent des **Alias**.\\ +  <meta charset="​UTF-8">​ 
-Il nous faut donc ajouter deux alias, un  pour **public** et un pour **private**.+  <meta name="​viewport"​ content="​width=device-widthinitial-scale=1.0"> 
 +  <​title>​Espace public</title> 
 +</head> 
 +<​body>​ 
 +  <​h1>​Bienvenue sur notre espace public.</h1> 
 +</body> 
 +</html><​/file>
  
-[[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>​ :\\+Puis //Ctrl//+//O// pour sauvegarder ​et //Ctrl//+//X// pour quitter.
  
-<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>​+==== Création de l'hôte virtuel ====
  
-A partir de 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 +
- Require all granted +
-</​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 +
- <​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 +Ce qui ouvre l'​éditeur [[:nano]] dans lequel nous allons coller :
-<​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 +<file - public.conf><​VirtualHost *:80> 
-Alias /private /media/www-dev/private + DocumentRoot "/var/www/public"​ 
-<​Directory /media/www-dev/private+ <​Directory ​"/var/www/public"​
- Options ​Indexes ​FollowSymLinks ​MultiViews + Options ​+FollowSymLinks 
- AllowOverride ​All + AllowOverride ​all 
- Order deny,allow + Require ​all granted 
- Deny from all + </Directory>​ 
- Allow from 127.0.0.1 ​           # Local + ErrorLog /​var/​log/​apache2/​error.public.log 
- Allow from 192.168.1.0/24       # Réseau + CustomLog /​var/​log/​apache2/​access.public.log combined 
- Allow from .w3.org              # W3C +</VirtualHost></​file>​
- Allow from sandbox.paypal.com   # Paypal +
-</Directory> +
-</​file>​+
  
-==== Ajout de liens symboliques ====+Puis //​Ctrl//​+//​O//​ pour sauvegarder et //​Ctrl//​+//​X//​ pour quitter.
  
-A présent les espaces sont valides, mais non visibles 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'​.\\ +Il faut ensuite activer cet hôte : 
-Il suffit tout simplement de créer un lien symbolique dans **/var/www**+<​code>​sudo a2ensite ​public</code>
  
-<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.\\ +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 : 
-les liens symboliques dans **/​var/​www** se font via 'sudo' et donc sont en //​root:​root//​. **Ne changez pas ces droits !**</note>+<​code>​sudo a2dissite 000-default</code>
  
-  sudo ln -s /​media/​www-dev/​public /​var/​www/​html/​public +Puis nous pouvons redémarrer Apache afin qu'il prenne en compte notre nouvelle configuration : 
-  sudo ln -s /​media/​www-dev/​private /​var/​www/​html/private+<​code>​sudo systemctl restart apache2</code>
  
-Il vous faudra également effacer le fichier index.html pour que cela prenne effet :+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.
  
-  sudo rm /​var/​www/​html/​index.html+===== Mise en place d'un espace privé =====
  
-==== Éviter le 403 ====+==== Création du répertoire de travail ​====
  
-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 s'il tente d'​accéder *par miracle* ​<-- faut le savoir :-P à votre répertoire '//​private//'​)+De la même manière nous allons créer un répertoire ''​/​var/​www/​private''​ : 
 +<​code>​sudo mkdir /​var/​www/​private</​code>
  
-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).+Puis modifier pareillement les [[:apache2#​permissions]] ​: 
 +<​code>​sudo chown $USER:​www-data /​var/​www/​private 
 +chmod 750 /var/www/private</code>
  
-On va donc remédier à cela en redirigeant les visiteurs automatiquement vers le répertoire ​'//public//' ​en cas d'erreur 403.\\ +Pour cet exemple nous n'allons pas créer de fichier index, mais seulement un fichier ​''​test.txt'' : 
-Il suffit d'ajouter la ligne +<code>​touch ​/var/www/private/test.txt<​/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). ​+==== Création de l'hôte virtuel ====
  
-Avant Ubuntu 14.04, ​dans le fichier ​/​etc/​apache2/​sites-available/​default, ajouter à la suite de <​Directory /​var/​www> ​ la ligne : +Notre [[:​apache2#​creation_d_hotes_virtuels|hôte virtuel]] sera cette fois configuré ​dans le fichier ​''​/​etc/​apache2/​sites-available/​private.conf'' ​:
-  Allow from localhost ​           # Local +
-après  +
-  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. +<​code>​sudo nano /etc/apache2/sites-available/​private.conf</​code>​
-  ​sudo service ​apache2 ​force-reload+
  
-===== Problèmes =====+Ce qui ouvre l'​éditeur [[:nano]] dans lequel nous allons coller :
  
-Cas d'une erreur sur ServerName ​au rechargement d'​apache\\ +<file - private.conf><​VirtualHost ​*:80> 
- [[:apache2|Erreur ServerName]]+ 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>​
  
-* Renvoi vers votre '​livebox/neufbox/ClubInternet Box' avec un nom de domaine.\\ +Puis //Ctrl//+//O// pour sauvegarder ​et //​Ctrl//​+//​X//​ pour quitter.
- ​[[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 \\ +Il faut ensuite activer cet hôte et redémarrer Apache ​
- ​[[tutoriel:​comment_editer_un_fichier|Éditez]] en [[:​sudo|super utilisateur]] le fichier : **/​etc/​hosts** ​et remplacer les lignes ​+<code>sudo a2ensite private.conf 
-  ​127.0.0.1 localhost +sudo systemctl restart ​apache2</code>
-  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 celavous ne devriez pas avoir à nouveau ce problème avec les mises à jour futures.+  * 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''​.
  
-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** +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''​.
-<​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//​+
  
 ---- ----
- ​--- ​//[[|]] Contributeur/​Mainteneur ​[[utilisateurs:​McPeter]]//+//Contributeurs : [[:​utilisateurs:​krodelabestiole]]//
  • tutoriel/lamp_repertoires_de_travail.1532035128.txt.gz
  • Dernière modification: Le 19/07/2018, 23:18
  • par McPeter