Serveur LAMP - Créer un/des répertoires de travail
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 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.
La mise en place de ces espaces de travail se fait grâce à la fonctionnalité d'hôte virtuel (VirtualHost) dont dispose le serveur HTTP Apache.
Prérequis
Afin de suivre ce tutoriel, il vous faut une pile LAMP ou au moins Apache installé sur une version récente d'Ubuntu.
Vous pouvez donc au choix :
- suivre la 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 apache2 (voir la 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 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 sudo si elle ne vous est pas familière.
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
.
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 permissions super utilisateur (sudo) :
sudo mkdir /var/www/public
Dans la foulée nous allons modifier les permissions de ce répertoire en suivant 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:www-data /var/www/public chmod 750 /var/www/public
Pour l'exemple nous allons y créer un fichier index.html
contenant le minimum nécessaire à l'affichage d'un message d'accueil :
nano /var/www/public/index.html
Ce qui ouvre l'éditeur nano dans lequel nous allons coller :
- 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>
Puis Ctrl+O pour sauvegarder et Ctrl+X pour quitter.
Création de l'hôte virtuel
Nous allons configurer notre hôte virtuel dans un fichier dédié /etc/apache2/sites-available/public.conf
:
sudo nano /etc/apache2/sites-available/public.conf
Ce qui ouvre l'éditeur nano dans lequel nous allons coller :
- public.conf
<VirtualHost *:80> 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>
Puis Ctrl+O pour sauvegarder et Ctrl+X pour quitter.
Il faut ensuite activer cet hôte :
sudo a2ensite public
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 :
sudo a2dissite 000-default
Puis nous pouvons redémarrer Apache afin qu'il prenne en compte notre nouvelle configuration :
sudo systemctl restart apache2
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.
Mise en place d'un espace privé
Création du répertoire de travail
De la même manière nous allons créer un répertoire /var/www/private
:
sudo mkdir /var/www/private
Puis modifier pareillement les permissions :
sudo chown $USER:www-data /var/www/private chmod 750 /var/www/private
Pour cet exemple nous n'allons pas créer de fichier index, mais seulement un fichier test.txt
:
touch /var/www/private/test.txt
Création de l'hôte virtuel
Notre hôte virtuel sera cette fois configuré dans le fichier /etc/apache2/sites-available/private.conf
:
sudo nano /etc/apache2/sites-available/private.conf
Ce qui ouvre l'éditeur nano dans lequel nous allons coller :
- private.conf
<VirtualHost *:80> ServerName private 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>
Puis Ctrl+O pour sauvegarder et Ctrl+X pour quitter.
Il faut ensuite activer cet hôte et redémarrer Apache :
sudo a2ensite private sudo systemctl restart apache2
- L'option
+Indexes
permet le listing des fichiers. - La directive Require ip ne permet l'utilisation de cet hôte que par les machines possédant l'adresse IP locale (
::1
en IPv6 ou127.0.0.1
en IPv4) ou une IP du réseau local (commençant par192.168
). - Cet hôte virtuel ne sera appelé que pour le nom de domaine
private
, tel que défini par la directiveServerName
.
Modification du fichier hosts
Pour que notre serveur soit consulté sur le nom de domaine private
il nous faut donc résoudre l'adresse IP du serveur pour ce nom de domaine côté client. La manière la plus simple de procéder est de modifier le fichier hosts.
Par ex. pour la machine locale l'adresse IP du serveur est 127.0.0.1
:
sudo nano /etc/hosts
Ce qui ouvre le fichier /etc/hosts
à la fin duquel nous allons ajouter la ligne suivante :
- hosts
127.0.0.1 private
L'espace privé sera alors accessible depuis cette machine à l'adresse http://private/ et listera les fichiers présents dans le répertoire /var/www/private
, en l'occurrence notre fichier test.txt
.
Contributeurs : krodelabestiole