Créer un Virtual Host sur un serveur Apache 2

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 !