Logo du logiciel Apache 2

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.

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 :

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.

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.

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 ou 127.0.0.1 en 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, tel que défini par la directive ServerName.

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

  • tutoriel/lamp_repertoires_de_travail.txt
  • Dernière modification: Le 23/09/2019, 09:28
  • (modification externe)