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
utilisateurs:mcpeter:tuto_perso [Le 25/06/2019, 01:24]
McPeter déplacement sur rép /tuto_perso/ de mon utilisateur
— (Version actuelle)
Ligne 1: Ligne 1:
-{{tag>​serveur tutoriel}} 
  
----- 
- 
- 
-====== Serveur LAMP - Créer un/des répertoires de travail ====== 
- 
-<note warning>​2019/​06/​25 - Cette page est mise dans mon répertoire utilisateur d'​ubuntu-fr. Elle n'a absolument pas la finalité donnée sur la page https://​doc.ubuntu-fr.org/​tutoriel/​lamp_repertoires_de_travail. J'en ai été l'​auteur original, mais les modifications apportées sortent complètement du cadre initial de ce tutoriel. Des utilisateurs cherchant encore cette base, pourront la trouver dans "​MES"​ pages utilisateur (ci-dessous). ​ 
-Cette page est donc en quelque-sorte une archive "​visible"​. Je tacherais de la maintenir à jour</​note>​ 
-===== Présentation ===== 
- 
-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 cela, on [[tutoriel:​comment_editer_un_fichier|édite]] en [[:​sudo|super utilisateur]] le fichier : **/​etc/​apache2/​sites-available/​default** (ou à partir de Ubuntu 14.04, le 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/​**. 
- 
- 
-==== 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 
-  sudo mkdir /​media/​www-dev/​public 
-  sudo mkdir /​media/​www-dev/​private 
- 
- 
-==== Donner les droits utilisateur aux répertoires de travail ==== 
- 
-<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.\\ 
-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 
- 
- 
- 
-<note important>​Si vous n'​utilisez pas /media/www/ mais un dossier personnalisé,​ attention : 
-  * 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 
- 
-sudo chown $USER:users /​media/​votre_disque/​vos_sites 
- 
-sudo chown -R $USER:​users ​ /​media/​votre_disque/​vos_sites/​votre_site 
-</​note>​ 
-==== Configuration d'​alias dans apache ==== 
- 
-Pour pouvoir accéder à ces répertoires,​ apache a besoin d'une *//​redirection//​*.\\ 
-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>​ :\\ 
- 
-<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>​ 
- 
-A partir de ubuntu 13.10 et apache 2.4  
-<​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 
-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 
-<​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 
-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 ==== 
- 
-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 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.\\ 
-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 
-  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 : 
- 
-  sudo rm /​var/​www/​html/​index.html 
- 
-==== Éviter le 403 ==== 
- 
-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//'​) 
- 
-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/​ ). 
- 
-On va donc remédier à cela en redirigeant les visiteurs automatiquement vers le répertoire '//​public//'​ en cas d'​erreur 403.\\ 
-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). ​ 
- 
-Avant Ubuntu 14.04, dans le fichier : /​etc/​apache2/​sites-available/​default,​ ajouter à la suite de <​Directory /​var/​www> ​ la ligne : 
-  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. 
-  sudo service apache2 force-reload 
- 
-===== Problèmes ===== 
- 
-* Cas d'une erreur sur ServerName au rechargement d'​apache\\ 
- ​[[:​apache2|Erreur ServerName]] 
- 
-* Renvoi vers votre '​livebox/​neufbox/​ClubInternet Box' avec un nom de domaine.\\ 
- ​[[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 \\ 
- ​[[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. 
- 
-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** 
-<​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]]//​