Créer un Virtual Host sur un serveur Apache 2

J’aurais pu aussi appeler cet article : Créer un Virtual Host sur un serveur Apache 2 en ligne de commande dans le cadre de l’hébergement d’un ou de plusieurs sites sur un serveur dédié virtuel, mais je me suis dit que c’était un peu too much.

Vous devez vous demander : à quoi ça sert ? Eh bien cette technique permet d’héberger plusieurs petits sites sur un seul serveur, et de faire correspondre chaque dossier à un nom de domaine.

Dans cet article je vais utiliser example.com comme nom de domaine, utilisez votre propre nom de domaine à la place.

Bref, commençons.

Il vous faut d’abord vous connecter en SSH à votre serveur dédié virtuel (ou VPS). D’ailleurs pour faire tout ça il faut que vous soyez à l’aise avec la ligne de commande.

Créer la structure

sudo mkdir -p /var/www/example.com/public_html

Il vous faut ensuite mettre en place les permissions :

sudo chown -R username:username /var/www/example.com/public_html
sudo chmod -R 755 /var/www

Créer une page de démo

nano /var/www/example.com/public_html/index.html

Mettez ceci à l’intérieur.

<html>
  <head>
    <title>Bienvenue sur example.com!</title>
  </head>
  <body>
    <h1>Un site vachement original!</h1>
  </body>
</html>

Créer le Virtual Host

Copiez / Collez en ligne de commande le fichier de configuration global comme ceci :

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/example.com.conf

Vous devrez l’éditer :

sudo nano /etc/apache2/sites-available/example.com.conf

Mettez ceci à l’intérieur

<VirtualHost *:80>
    ServerAdmin admin@example.com
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com/public_html
    # La directive suivante permet aux permaliens de WordPress de fonctionner correctement
    <Directory /var/www/example.com/public_html>
        AllowOverride All
    </Directory>
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Activation du Virtual Host

sudo a2ensite example.com.conf

Désactivation de la configuration globale

sudo a2dissite 000-default.conf

Redémarrer Apache

sudo systemctl restart apache2

Https

Voilà c’est (presque) tout, ça devrait fonctionner… sur http ! Si vous voulez du https, il vous faudra installer un certificat :

sudo certbot --apache -d example.com -d www.example.com

Vous devrez au préalable installer Let’s Encrypt.

Https et WordPress

Pour faire fonctionner les permaliens de WordPress (la réecriture d’url) vous devrez modifier le fichier .conf relatif à votre nom de domaine généré par certbot. Pour ce faire, ouvrez le fichier dans Nano :

sudo nano /etc/apache2/sites-available/example-le-ssl.conf

Et ajoutez ceci à la ligne de Document Root :

<Directory /var/www/example.com/public_html>
    AllowOverride All
</Directory>

Et faites un petit redémarrage du serveur :

sudo service apache2 restart

Là c’est vraiment tout ! Bonne journée !