J'ai choisi ici le serveur Apache parce qu'il est très répandu et très bien documenté. Cette installation a été faite avec Apache 2.4.10. Elle peut être faite à distance par une connexion SSH, ou bien, si vous n'avez pas encore réalisé la section 7.2 Simplification du système Raspbian, elle peut être réalisée directement sur le Raspberry, une fois équipé d'un écran, d'un clavier et d'une souris.

Pour mémoire, je rappelle que l'on a configuré, dans le billet précédent, le Raspberry comme suit (mais cela peut être différent chez vous) :
mot de passe de l'utilisateur pi : « raspberry », ou de préférence votre propre mot de passe
nom de l'hôte : framboise
adresse réseau : 192.168.1.0
adresse passerelle : 192.168.1.1
adresse IP : 192.168.1.5
port SSH : 5544

1 Installation d'Apache 2.4 avec sa documentation

Vous pouvez procéder soit avec votre connexion SSH (voir le billet précédent, section 5), soit en local sur votre Raspberry ; entrez : $ sudo apt-get install apache2 apache2-doc

Vérifiez le fonctionnement de apache2 ; la commande :
$ /etc/init.d/apache2 status
ne doit pas retourner d'erreur.

Pour une vérification sur votre PC par votre réseau local, dans son navigateur, entrez l'URL :
http://192.168.1.5/

Pour une vérification sur votre Raspberry en local, dans son navigateur, entrez l'URL :
http://localhost

Dans ces deux cas, cela doit afficher la page d'essai de Apache titrée « Apache2 Debian Default Page » et débutant par : « It works! ». Si c'est cela, votre serveur fonctionne correctement. Il n'est capable actuellement d'afficher que cette page d'accueil, il vous faudra donc ajouter par la suite les fonctionnalités et outils dont vous aurez besoin.

Cette page d'essai se trouve dans le fichier /var/www/html/index.html . Le répertoire /var/www/html est par défaut la racine du serveur ; donc pour ajouter de nouveaux fichiers, hôtes, applications, etc., vous devrez les ajouter dans ce répertoire.

Par contre, si vous voulez que votre serveur gère plusieurs hôtes, ou bien que votre hôte se trouve dans un autre répertoire, par exemple dans /home, continuez avec les sections ci-dessous.

2 Création d'un hôte virtuel monsite1.fr

Si vous ne voulez avoir qu'un seul site sur votre serveur Apache, par exemple un site de stockage de fichiers avec owncloud, il ne sert à rien de créer un hôte virtuel. Mais si vous voulez y mettre plusieurs sites (stockage de fichier, blog, wiki, etc.), créer des hôtes virtuels est indispensable, car cela permet de gérer leur configuration indépendamment. Ces configurations sont faites dans des fichiers situés dans le répertoire /etc/apache2/sites-available/ . Comme votre serveur n'a qu'une seule adresse IP (locale, derrière le routeur), nos hôtes virtuels seront différenciés par leur nom.

Nous appellerons donc notre premier hôte virtuel « monsite1.fr ».

Créez le répertoire racine de votre hôte virtuel :
$ sudo mkdir /var/www/monsite1.fr

Créez une page d'essai dans ce répertoire :
$ sudo nano /var/www/monsite1.fr/index.html
en recopiant les lignes suivantes dans ce fichier html :

<html>
  <head>
    <title>Bienvenue dans l'hôte virtuel monsite1.fr</title>
  </head>
  <body>
    <h1>Page d'essai</h1>
    Cette page de monsite1.fr est affichée par Apache Virtual Host!
  </body>
</html>

Changez les permissions d'accès à cet hôte, qui sera alors accessible uniquement par le serveur apache :
$ sudo chown -R www-data:www-data /var/www/monsite1.fr

Créez le fichier de configuration de l'hôte virtuel :
$ sudo nano /etc/apache2/sites-available/monsite1.fr.conf
en recopiant les lignes suivantes dans ce fichier .conf :

<VirtualHost *:80>%%%
    ServerName monsite1.fr%%%
    ServerAlias www.monsite1.fr%%%
    ServerAdmin webmaster@monsite1.fr%%%
    DocumentRoot /var/www/monsite1.fr%%%
#  CustomLog /var/log/apache2/monsite1.fr/access.log common%%%
#  ErrorLog /var/log/apache2/monsite1.fr/error.log%%%
</VirtualHost>

(les lignes précédées d'un # seront configurées plus tard)

Validez l'hôte :
$ sudo a2ensite monsite1.fr

Cela crée dans le répertoire /etc/apache2/sites-enabled/ un lien symbolique vers le fichier /etc/apache2/sites-available/monsite1.fr.conf

Vérifiez que ce lien existe bien ; la commande :
$ sudo ls -l /etc/apache2/sites-enabled/
retourne :
monsite1.fr.conf -> ../sites-available/monsite1.fr.conf

IMPORTANT : par défaut il existe dans /etc/apache2/sites-enabled/ le lien symbolique 000-default.conf qui pointe vers le fichier /etc/apache2/sites-available/000-default.conf. Ce lien sert à faire fonctionner l'hôte par défaut, c'est ce qui a permis d'afficher la page d'essai « Apache2 Debian Default Page » plus haut. Il faut maintenant supprimer ce lien, sinon la page d'accueil de monsitejl.fr ne pourra pas s'afficher :
$ sudo rm /etc/apache2/sites-enabled/000-default.conf
puis rechargez la configuration :
$ sudo service apache2 reload

Vérifiez que votre hôte virtuel fonctionne :

  • Sur votre Raspberry, déclarez l'hôte dans le fichier /etc/hosts par :

$ sudo nano /etc/hosts
en ajoutant la ligne
192.168.1.31 monsite1.fr
puis dans le navigateur, entrez :
http://monsite1.fr

  • ou bien, sur votre PC, déclarez l'hôte dans le fichier /etc/hosts par :

$ sudo nano /etc/hosts
et ajoutez la ligne :
192.168.1.31 monsite1.fr
puis dans le navigateur de ce PC, entrez :
http://monsite1.fr/

Dans ces deux cas, la page d'essai « Page d'essai / Cette page de monsite1.fr est affichée par Apache Virtual Host! » doit s'afficher.

3 Création d'un deuxième hôte virtuel monsite2.fr

Nous appellerons notre deuxième hôte virtuel « monsite2.fr ».

Créez le répertoire racine de votre hôte virtuel :
$ sudo mkdir /var/www/monsite2.fr

Créez la page d'essai dans ce répertoire, en recopiant celle de votre premier hôte par :
$ sudo cp monsitejl.fr/index.html monsite2.fr/

puis ouvrez le fichier :
$ sudo nano /var/www/monsite2.fr/index.html
et changez-y les occurrences du nom de l'hôte.

Changez les permissions d'accès à cet hôte :
$ sudo chown -R www-data:www-data /var/www/monsite2.fr

Créez le fichier de configuration du nouvel hôte virtuel, en recopiant celui de votre premier hôte :
$ sudo cp /etc/apache2/sites-available/monsite1.fr.conf /etc/apache2/sites-available /monsite2.fr.conf

puis ouvrez le fichier par :
$ sudo nano /etc/apache2/sites-available/monsite2.fr.conf
et changez-y les occurrences du nom de l'hôte.

Validez le nouvel hôte :
$ sudo a2ensite monsite2.fr

puis rechargez la configuration :
$ sudo service apache2 reload

Vérifiez que votre hôte virtuel fonctionne :

  • Sur votre Raspberry, déclarez l'hôte dans le fichier /etc/hosts :

$ sudo nano /etc/hosts
en ajoutant la ligne
192.168.1.31 monsite2.fr
puis dans le navigateur, entrez :
http://monsite2.fr

  • ou bien, sur votre PC, déclarez l'hôte dans le fichier /etc/hosts :

$ sudo nano /etc/hosts
et ajoutez la ligne :
192.168.1.31 monsite2.fr
puis dans le navigateur de ce PC, entrez :
http://monsite2.fr/

Dans ces deux cas, la page d'essai « Page d'essai / Cette page de monsite2.fr est affichée par Apache Virtual Host! » doit s'afficher.

4 Déplacement des hôtes virtuels dans /home

Il est intéressant de déplacer les répertoires de données de vos serveurs ailleurs que dans le répertoire par défaut /var/www/, par exemple dans la partition /home, pour y centraliser toutes vos données et pouvoir en faire une sauvegarde plus simplement.

Nous appellerons « mon serveur » le répertoire dédié à votre serveur.

Créez dans /home ce répertoire :
$ sudo mkdir /home/monserveur

Copiez le répertoire des deux hôtes déjà créés :
$ sudo cp -Rp /var/www/monsite1.fr /home/monserveur/
$ sudo cp -Rp /var/www/monsite2.fr /home/monserveur/
(pour savoir ce que signifient les options R et p, consultez la page de man : $ man cp)

Il est indispensable de vérifier que l'utilisateur et le groupe sont bien toujours www-data, par :
$ ls -l /home/monserveur/
qui retourne :
drwxr-xr-x 2 www-data www-data 4096 juin 17 17:24 monsite1.fr
drwxr-xr-x 2 www-data www-data 4096 juin 13 21:00 monsite2.fr

Il est aussi nécessaire de spécifier à apache le nouveau répertoire d'emplacement des hôtes virtuels. Dans /etc/apache2/apache2.conf, ajoutez :

<Directory /home/monserveur/>%%%
        Options Indexes FollowSymLinks%%%
        AllowOverride None%%%
        Require all granted%%%
</Directory>

Puis configurez vos hôtes virtuels pour qu'apache les trouve au nouvel endroit.:

  • Pour l'hôte monsite1.fr, par :

$ sudo nano /etc/apache2/sites-available/monsite1.fr.conf
et remplacez la ligne :
DocumentRoot /var/www/monsite1.fr
par :
DocumentRoot /home/monserveur/monsite1.fr

  • pour l'hôte monsite2.fr, par :

$ sudo nano /etc/apache2/sites-available/monsite2.fr.conf
et remplacez la ligne :
DocumentRoot /var/www/monsite2.fr
par :
DocumentRoot /home/monserveur/monsite2.fr

Il reste à modifier le contenu des pages d'essai des deux hôtes, pour pouvoir vérifier qu'apache va bien les chercher dans /home :

  • pour l'hôte monsite1.fr :

$ sudo nano /home/monserveur/monsite1.fr/index.html
en remplaçant la ligne suivante :

    Cette page de monsite1.fr est affichée par Apache Virtual Host!

par la ligne :

    Cette page de monsite1.fr dans /home/monserveur/ est affichée par Apache Virtual Host!
  • pour l'hôte monsite2.fr :

$ sudo nano /home/monserveur/monsite2.fr/index.html
en remplaçant la ligne suivante :

    Cette page de monsite2.fr est affichée par Apache Virtual Host!

par la ligne :

    Cette page de monsite2.fr dans /home/monserveur/ est affichée par Apache Virtual Host!

Les deux hôtes monsite1.fr et monsite2.fr sont maintenant accessibles sur /home/monserveur par :

  • Sur votre Raspberry, dans le navigateur, entrez :

http://monsite1.fr

  • ou bien, sur votre PC, dans dans le navigateur de ce PC, entrez :

http://monsite1.fr/

Dans ces deux cas, la page d'essai « Page d'essai / Cette page de monsite1.fr dans /home/monserveur/ est affichée par Apache Virtual Host! » doit s'afficher.

Puis faites de même pour l'hôte monsite2.fr/.

Votre serveur Apache de base avec hôtes virtuels localisés dans /home est maintenant prêt pour installer ce que vous voudrez bien y mettre. Cela fera l’objet de billets suivants, qui seront publiés dès que possible. À ce jour, vous disposez de :

Installation de Owncloud avec votre serveur Apache sous Raspberry Pi 2 en auto-hébergement

ATTENTION : à ce stade de l'installation, ce serveur Apache n'est pas encore sécurisé. IL NE DOIT DONC ABSOLUMENT PAS ÊTRE VISIBLE DEPUIS L'INTERNET. Pour cela, vérifiez que le routeur de votre réseau local ne contient AUCUNE règle de translation d'adresse (NAT) relative à l'adresse de votre Raspberry dans votre réseau local (ici, 192.168.1.5, à moins que vous en ayez mis une autre).

La sécurisation correcte du serveur Apache sera traitée dans un billet futur.