14. Héberger plusieurs sites web sur un seul serveur Ubuntu : conseils utiles

Introduction

Héberger plusieurs sites web sur un seul serveur Ubuntu est une solution économique pour les développeurs, les petites entreprises et les amateurs. Ce guide vous expliquera comment configurer des hôtes virtuels dans Apache et Nginx pour héberger plusieurs sites web sur le même serveur. À la fin de ce tutoriel, vous serez en mesure de configurer votre serveur pour gérer efficacement plusieurs domaines ou sous-domaines.


Articles précédents :

01. Introduction au serveur Ubuntu – SysOSX: AI & Cloud

02. Comment configurer votre premier serveur Ubuntu : guide du débutant – SysOSX: AI & Cloud

03. Maîtriser la ligne de commande Linux pour le serveur Ubuntu – SysOSX: AI & Cloud

04. Gérer les utilisateurs et les autorisations sur le serveur Ubuntu : guide complet – SysOSX: AI & Cloud

05. Notions de base des réseaux pour le serveur Ubuntu : guide complet – SysOSX: AI & Cloud

06. Installer et gérer des logiciels sur le serveur Ubuntu : guide complet – SysOSX: AI & Cloud

07.Appliquer les correctifs et mettre à jour le serveur Ubuntu : guide complet – SysOSX: AI & Cloud

08. Sécuriser votre serveur Ubuntu : étapes pratiques de durcissement et de protection – SysOSX: AI & Cloud

09. Audit et journalisation des serveurs Ubuntu

10. Outils de surveillance du système pour le serveur Ubuntu : guide complet – SysOSX: AI & Cloud

11. Journalisation centralisée pour le serveur Ubuntu : un guide à lire absolument – SysOSX: AI & Cloud

12. Audit et conformité pour le serveur Ubuntu : bonnes pratiques – SysOSX: AI & Cloud

13. Configurer votre serveur Ubuntu pour l’hébergement et les applications web : guide ultime – SysOSX: AI & Cloud



Prérequis

Pour suivre ce guide, assurez-vous d’avoir :

  • Un serveur Ubuntu (la version 20.04 ou ultérieure est recommandée).
  • Un compte utilisateur avec des privilèges sudo .
  • Plusieurs noms de domaine pointant vers l’adresse IP de votre serveur.
  • Des connaissances de base des commandes Linux.

Partie 1 : héberger plusieurs sites web avec Apache


Étape 1 : installer le serveur web Apache

Si Apache n’est pas déjà installé, exécutez la commande suivante :

sudo apt update && sudo apt install apache2 -y


Étape 2 : configurer des hôtes virtuels pour chaque site web

Apache utilise des hôtes virtuels pour servir plusieurs sites web depuis un seul serveur. Chaque site web disposera de son propre fichier de configuration d’hôte virtuel.

Créer des répertoires pour les sites web

  • Créez des répertoires distincts pour chaque site web :
sudo mkdir -p /var/www/website1.com /var/www/website2.com
  • Attribuez la propriété de ces répertoires à votre compte utilisateur :
sudo chown -R $USER:$USER /var/www/website1.com /var/www/website2.com

Créer des fichiers de configuration d’hôtes virtuels

  • Créez un fichier de configuration pour le premier site web :
sudo nano /etc/apache2/sites-available/website1.com.conf
  • Ajoutez la configuration suivante :
<VirtualHost *:80>
    ServerName website1.com
    ServerAlias www.website1.com
    DocumentRoot /var/www/website1.com
    ErrorLog ${APACHE_LOG_DIR}/website1_error.log
    CustomLog ${APACHE_LOG_DIR}/website1_access.log combined
</VirtualHost>

  • Créez un fichier de configuration pour le deuxième site web :
sudo nano /etc/apache2/sites-available/website2.com.conf
  • Ajoutez la configuration suivante :
<VirtualHost *:80>
    ServerName website2.com
    ServerAlias www.website2.com
    DocumentRoot /var/www/website2.com
    ErrorLog ${APACHE_LOG_DIR}/website2_error.log
    CustomLog ${APACHE_LOG_DIR}/website2_access.log combined
</VirtualHost>

Activer les hôtes virtuels

  • Activez les configurations d’hôtes virtuels :
sudo a2ensite website1.com.conf
sudo a2ensite website2.com.conf
  • Rechargez Apache pour appliquer les modifications :
sudo systemctl reload apache2

Étape 3 : tester la configuration d’Apache

  • Créez un simple fichier index.html pour chaque site web :
echo "<h1>Welcome to Website 1</h1>" > /var/www/website1.com/index.html
echo "<h1>Welcome to Website 2</h1>" > /var/www/website2.com/index.html


  • Visitez http://website1.com et http://website2.com dans votre navigateur pour vérifier la configuration.

Étape 4 : sécuriser les sites web avec SSL/TLS

Installer Certbot

Installez Certbot avec le plugin Apache :

sudo apt install certbot python3-certbot-apache -y

Obtenir des certificats SSL

Exécutez Certbot pour chaque site web :

sudo certbot --apache -d website1.com -d www.website1.com
sudo certbot --apache -d website2.com -d www.website2.com

Certbot configurera automatiquement SSL pour les deux sites web et redirigera le trafic HTTP vers HTTPS.


Partie 2 : héberger plusieurs sites web avec Nginx


Étape 1 : installer le serveur web Nginx

Si Nginx n’est pas déjà installé, exécutez :

sudo apt update && sudo apt install nginx -y


Étape 2 : configurer des blocs de serveur pour chaque site web

Nginx utilise des blocs de serveur (similaires aux hôtes virtuels d’Apache) pour servir plusieurs sites web depuis un seul serveur.

Créer des répertoires pour les sites web

  • Créez des répertoires distincts pour chaque site web :
sudo mkdir -p /var/www/website1.com /var/www/website2.com
  • Attribuez la propriété de ces répertoires à votre compte utilisateur :
sudo chown -R $USER:$USER /var/www/website1.com /var/www/website2.com

Créer des fichiers de configuration de blocs de serveur

  • Créez un fichier de configuration pour le premier site web :
sudo nano /etc/nginx/sites-available/website1.com

  • Ajoutez la configuration suivante :
server {
    listen 80;
    server_name website1.com www.website1.com;

    root /var/www/website1.com;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }

    error_log /var/log/nginx/website1_error.log;
    access_log /var/log/nginx/website1_access.log;
}

  • Créez un fichier de configuration pour le deuxième site web :
sudo nano /etc/nginx/sites-available/website2.com

  • Ajoutez la configuration suivante :
server {
    listen 80;
    server_name website2.com www.website2.com;

    root /var/www/website2.com;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }

    error_log /var/log/nginx/website2_error.log;
    access_log /var/log/nginx/website2_access.log;
}

Activer les blocs de serveur

  • Créez des liens symboliques pour activer les blocs de serveur :
sudo ln -s /etc/nginx/sites-available/website1.com /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/website2.com /etc/nginx/sites-enabled/

  • Testez la configuration de Nginx :
sudo nginx -t
  • Rechargez Nginx pour appliquer les modifications :
sudo systemctl reload nginx

Étape 3 : tester la configuration de Nginx

  • Créez un simple fichier index.html pour chaque site web :
echo "<h1>Welcome to Website 1</h1>" > /var/www/website1.com/index.html
echo "<h1>Welcome to Website 2</h1>" > /var/www/website2.com/index.html

  • Visitez http://website1.com et http://website2.com dans votre navigateur pour vérifier la configuration.

Étape 4 : sécuriser les sites web avec SSL/TLS

Installer Certbot

Installez Certbot avec le plugin Nginx :

sudo apt install certbot python3-certbot-nginx -y

Obtenir des certificats SSL

Exécutez Certbot pour chaque site web :

sudo certbot --nginx -d website1.com -d www.website1.com
sudo certbot --nginx -d website2.com -d www.website2.com

Certbot configurera automatiquement SSL pour les deux sites web et redirigera le trafic HTTP vers HTTPS.


Références

Conclusion

Héberger plusieurs sites web sur un seul serveur Ubuntu est un moyen pratique et économique de gérer des applications web ou des domaines. Que vous utilisiez Apache ou Nginx, le processus consiste à créer des répertoires, à configurer des hôtes virtuels ou des blocs de serveur, et à sécuriser vos sites web avec des certificats SSL/TLS via Certbot. En suivant ce guide, vous pourrez héberger efficacement plusieurs domaines ou sous-domaines, en vous assurant que votre serveur est optimisé pour l’évolutivité et la sécurité.

Apache et Nginx sont tous deux de puissants serveurs web, et le choix entre les deux dépend souvent de vos besoins précis. Apache offre de nombreuses options de configuration et une grande compatibilité, tandis que Nginx excelle en performances et en gestion des connexions simultanées. Quel que soit votre choix, ce guide vous donne les connaissances de base pour gérer efficacement plusieurs sites web.


Restez à l’écoute pour le prochain sujet : Gérer le stockage et les disques sur un serveur Ubuntu Dans ce prochain guide, vous apprendrez à configurer l’initialisation des disques, à créer des partitions pour différents systèmes de fichiers et à étendre les disques, y compris leur montage dans le système de fichiers. Ne le manquez pas !