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 25/07/2011, 21:05]
McPeter trouver ip
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>dapper feisty gutsy hardy intrepid lucid 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 public, consultable 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.\\ +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]].
-**/var/www** est un répertoire sous droits root. Il est donc contre indiqué de travailler dans ce répertoire.+
  
-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).+===== Prérequis =====
  
-Nous allons aussi faire en sorte de rendre **/​var/​www** inaccessible de l'​extérieur ​ou du moins accessible de façon ponctuelle.+Afin de suivre ce tutoriel, il vous faut une pile [[:​LAMP]] ​ou au moins [[:​apache2|Apache]] installé sur une version récente d'​Ubuntu.
  
-===== Mise en place ===== +Vous pouvez donc au choix : 
-==== Protection ​de /var/www ====+  * 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]])
  
-Dans un premier temps nous allons donc rendre le dossier /var/www inaccessiblePour cela, on [[tutoriel:comment_editer_un_fichier|édite]] en [[:sudo|super utilisateur]] le fichier : **/​etc/​apache2/​sites-available/​default** et dans la section <​Directory /​var/​www>​ on va modifier les accès :\\ +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''​.\\  
-Changez ​:\\ +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.\\  
-<​file>​ +Vous pouvez également consulter la documentation concernant la commande [[:utilisateurs:​roschan:sudo|sudo]] si elle ne vous est pas familière.
-<​Directory /​var/​www/>​ +
- Options Indexes FollowSymLinks MultiViews +
- AllowOverride None +
- Order allow,​deny +
- Allow from all +
-</​Directory>​ +
-</​file>​ +
-en :\\ +
-<​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/​**.+===== Mise en place d'un espace public =====
  
-==== Création ​des répertoires ​de travail ====+==== Création ​du répertoire ​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\\+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''​.
  
-  sudo mkdir /media/www-dev +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]]) : 
-  sudo mkdir /media/www-dev/public +<​code>​sudo mkdir /var/www/public</​code>​
-  sudo mkdir /media/www-dev/private+
  
 +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 :
  
-==== Donner les droits utilisateur aux répertoires de travail ====+<​code>​sudo chown $USER:​www-data /​var/​www/​public 
 +chmod 750 /​var/​www/​public</​code>​
  
-<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.\\ +Pour l'exemple nous allons y créer ​un fichier ​''​index.html'' ​contenant ​le minimum nécessaire à l'affichage d'un message d'​accueil :
-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+<​code>​nano ​/var/www/​public/​index.html</​code>​
  
-==== Configuration d'alias dans apache ====+Ce qui ouvre l'éditeur [[:​nano]] ​dans lequel nous allons coller :
  
-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** ​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 ====
  
-<​file>​ +Nous allons [[:apache2#creation_d_hotes_virtuels|configurer notre hôte virtuel]] dans un fichier dédié ''​/etc/apache2/sites-available/public.conf''​ :
-## 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            # 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 ====+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>​__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.\\ +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/​public +Il faut ensuite activer cet hôte : 
-  sudo ln -s /​media/​www-dev/​private /​var/​www/​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/​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>+
  
 +Puis modifier pareillement les [[:​apache2#​permissions]] :
 +<​code>​sudo chown $USER:​www-data /​var/​www/​private
 +chmod 750 /​var/​www/​private</​code>​
  
-===== Finalisation =====+Pour cet exemple nous n'​allons pas créer de fichier index, mais seulement un fichier ''​test.txt''​ : 
 +<​code>​touch /​var/​www/​private/​test.txt</​code>​
  
-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 
 + </Directory
 + ErrorLog /​var/​log/​apache2/​error.private.log 
 + CustomLog /​var/​log/​apache2/​access.private.log combined 
 +</​VirtualHost></​file>
  
-===== Liens et ScreenCast =====+Puis //​Ctrl//​+//​O//​ pour sauvegarder ​et //​Ctrl//​+//​X//​ pour quitter.
  
-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/lamp/\\ +  * 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 ).\\ +  * 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 sec.\\+  * 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.1311620707.txt.gz
  • Dernière modification: Le 15/12/2011, 15:21
  • (modification externe)