15%

Économisez 15% sur tous les services d'hébergement

Testez vos compétences et obtenez Réduction sur tout plan d'hébergement

Utilisez le code :

Skills
Commencer
30.10.2024
1 +1

Sites-Enabled et Sites-Available : Guide complet pour NGINX et Apache

NGINX et Apache restent les deux serveurs web les plus dominants sur Internet — et pour de bonnes raisons. Les deux sont éprouvés au combat, hautement configurables et capables de servir des sites web complexes et à fort trafic avec facilité. L’un des concepts les plus importants pour tout administrateur système gérant un serveur basé sur Linux est de comprendre comment ces serveurs web gèrent la configuration des sites web via la structure de répertoires sites-available et sites-enabled.

Que vous exécutiez un seul site web ou que vous gériez des dizaines d’hôtes virtuels sur un plan VPS Hosting, maîtriser ce modèle de configuration vous donnera un contrôle précis sur les sites actifs, ceux en préparation et la façon dont vos ressources serveur sont allouées.

Ce guide fournit une procédure pas à pas complète et détaillée sur la façon d’activer, de désactiver et de gérer les sites web en utilisant à la fois NGINX et Apache sur les systèmes Linux.

Comprendre sites-available et sites-enabled

NGINX et Apache utilisent tous deux un modèle à deux répertoires pour séparer la configuration du site de l’activation du site. Ce modèle architectural est élégant dans sa simplicité et extrêmement puissant en pratique.

sites-available

Le répertoire /etc/nginx/sites-available/ ou /etc/apache2/sites-available/ agit comme une bibliothèque de toutes les configurations de site possibles. Chaque site web que vous avez l’intention d’héberger sur le serveur obtient son propre fichier de configuration stocké ici. De manière cruciale, les fichiers dans ce répertoire ne sont pas actifs — ils définissent la configuration mais ne servent aucun trafic jusqu’à ce qu’ils soient explicitement activés.

sites-enabled

Le répertoire /etc/nginx/sites-enabled/ ou /etc/apache2/sites-enabled/ contient des liens symboliques pointant vers les fichiers de configuration dans sites-available. Seuls les sites avec un lien symbolique actif dans ce répertoire sont chargés par le serveur web et servis aux visiteurs.

Cette séparation offre plusieurs avantages clés :

  • Désactivation non destructive : Vous pouvez désactiver un site sans supprimer sa configuration.
  • Déploiement rapide : Préparer un nouveau site est aussi simple que de créer un lien symbolique.
  • Organisation claire : Toutes les configurations existent au même endroit, qu’elles soient actives ou non.

Gestion des sites web avec Apache

1. Configuration des hôtes virtuels Apache

Apache utilise les hôtes virtuels pour servir plusieurs sites web à partir d’une seule instance de serveur. Chaque site web obtient son propre fichier de configuration qui indique à Apache comment gérer les demandes entrantes pour ce domaine — y compris la racine du document, les chemins de journalisation, les alias de serveur, et plus encore.

Les fichiers de configuration pour les hôtes virtuels Apache sont stockés dans :

/etc/apache2/sites-available/

#### Création d’un fichier de configuration d’hôte virtuel

Pour créer un fichier de configuration pour un site appelé test.oo.md, exécutez :

sudo nano /etc/apache2/sites-available/test.oo.md.conf

À l’intérieur du fichier, définissez votre bloc d’hôte virtuel :

<VirtualHost *:80>
    ServerAdmin admin@test.oo.md
    ServerName your_domain_or_IP
    ServerAlias www.test.oo.md
    DocumentRoot /var/www/test.oo.md

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

> Remarque : Remplacez your_domain_or_IP par votre nom de domaine réel ou l’adresse IP de votre serveur. La directive ServerAlias permet à Apache de répondre également au sous-domaine www.

Enregistrez et quittez le fichier lorsque vous avez terminé.

2. Activer le site avec a2ensite

Une fois le fichier de configuration en place, activez le site à l’aide de la commande a2ensite (Apache 2 Enable Site) :

sudo a2ensite test.oo.md.conf

Cette commande crée automatiquement un lien symbolique de sites-available vers sites-enabled :

/etc/apache2/sites-enabled/test.oo.md.conf -> /etc/apache2/sites-available/test.oo.md.conf

Le site est maintenant en attente d’être servi, mais les modifications ne prendront effet qu’après le rechargement d’Apache.

3. Tester la configuration Apache

Avant de recharger Apache, validez toujours la syntaxe de votre configuration pour détecter les erreurs :

sudo apachectl configtest

Un résultat réussi affichera :

Syntax OK

S’il y a des erreurs, Apache décrira le problème et le numéro de ligne — corrigez-les avant de continuer.

4. Recharger Apache pour appliquer les modifications

sudo systemctl reload apache2

L’utilisation de reload au lieu de restart est préférée dans les environnements de production car elle applique la nouvelle configuration sans interrompre les connexions actives.

5. Désactiver un site avec a2dissite

Pour mettre un site hors ligne sans supprimer sa configuration, utilisez la commande a2dissite :

sudo a2dissite test.oo.md.conf

Cela supprime le lien symbolique de sites-enabled. Le fichier de configuration dans sites-available reste intact. Rechargez Apache pour appliquer :

sudo systemctl reload apache2

Gestion des sites web avec NGINX

1. Configuration du bloc serveur NGINX

NGINX utilise les blocs serveur — l’équivalent fonctionnel des hôtes virtuels d’Apache. Les fichiers de configuration du bloc serveur sont stockés dans :

/etc/nginx/sites-available/

#### Création d’un fichier de configuration de bloc serveur

Pour créer un fichier de configuration pour test.oo.md, exécutez :

sudo nano /etc/nginx/sites-available/test.oo.md

Définissez votre bloc serveur à l’intérieur du fichier :

server {
    listen 80;
    server_name test.oo.md www.test.oo.md;

    root /var/www/test.oo.md;
    index index.html index.htm;

    access_log /var/log/nginx/test.oo.md_access.log;
    error_log  /var/log/nginx/test.oo.md_error.log;

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

> Directives clés expliquées :

> – listen 80 — Indique à NGINX d’écouter le trafic HTTP sur le port 80.

> – server_name — Définit les noms de domaine auxquels ce bloc répond.

> – root — Définit le répertoire racine du document pour les fichiers du site.

> – try_files — Tente de servir le fichier ou le répertoire demandé ; retourne une erreur 404 s’il n’est pas trouvé.

2. Activer le site en créant un lien symbolique

Contrairement à Apache, NGINX ne fournit pas de commande intégrée comme a2ensite. Au lieu de cela, vous créez manuellement le lien symbolique :

sudo ln -s /etc/nginx/sites-available/test.oo.md /etc/nginx/sites-enabled/

Cela lie le fichier de configuration dans le répertoire sites-enabled, ce qui le rend éligible pour être chargé par NGINX.

3. Tester la configuration NGINX

Testez toujours votre configuration NGINX avant de recharger :

sudo nginx -t

Un test réussi retourne :

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Si des erreurs sont signalées, examinez les lignes indiquées dans votre fichier de configuration et corrigez-les avant de continuer.

4. Recharger NGINX pour appliquer les modifications

sudo systemctl reload nginx

Comme avec Apache, reload applique gracieusement les modifications de configuration sans interrompre les connexions actives — toujours préféré à un redémarrage complet restart dans les environnements en direct.

5. Désactiver un site dans NGINX

Pour désactiver un site, supprimez son lien symbolique du répertoire sites-enabled :

sudo rm /etc/nginx/sites-enabled/test.oo.md

Puis rechargez NGINX pour appliquer la modification :

sudo systemctl reload nginx

Le fichier de configuration dans sites-available est préservé et peut être réactivé à tout moment.

Référence rapide : Gestion des sites Apache vs. NGINX

TâcheCommande ApacheCommande NGINX
Créer un fichier de configurationnano /etc/apache2/sites-available/site.confnano /etc/nginx/sites-available/site
Activer le sitesudo a2ensite site.confsudo ln -s /etc/nginx/sites-available/site /etc/nginx/sites-enabled/
Tester la configurationsudo apachectl configtestsudo nginx -t
Recharger le serveur websudo systemctl reload apache2sudo systemctl reload nginx
Désactiver le sitesudo a2dissite site.confsudo rm /etc/nginx/sites-enabled/site

Bonnes pratiques pour la gestion des sites avec NGINX et Apache

1. Un fichier de configuration par site

Créez toujours un fichier de configuration dédié pour chaque domaine ou sous-domaine dans le répertoire sites-available. Mélanger plusieurs sites dans un seul fichier crée des maux de tête de maintenance et rend le dépannage considérablement plus difficile.

2. Testez toujours avant de recharger

Faites une habitude non négociable d’exécuter apachectl configtest ou nginx -t avant chaque rechargement. Une erreur de syntaxe dans un fichier de configuration peut mettre hors ligne tous les sites du serveur — pas seulement celui que vous modifiez.

3. Utilisez le contrôle de version pour les fichiers de configuration

Pour les serveurs hébergeant plusieurs sites ou des configurations complexes, suivez vos fichiers de configuration avec Git :

cd /etc/nginx/sites-available/
git init
git add .
git commit -m "Initial configuration snapshot"

Cela vous donne un historique complet des modifications et la possibilité de revenir instantanément à un état connu et bon.

4. Appliquez toujours HTTPS avec des certificats SSL

Servir les sites sur du HTTP simple n’est plus acceptable. Configurez des certificats SSL pour chaque site que vous gérez. Let’s Encrypt fournit des certificats gratuits et auto-renouvelables qui s’intègrent parfaitement à Apache (via mod_ssl et Certbot) et NGINX.

Après avoir obtenu un certificat, mettez à jour votre bloc serveur ou hôte virtuel pour écouter sur le port 443 et rediriger tout le trafic HTTP vers HTTPS.

5. Configurez une journalisation complète

Définissez toujours les directives access_log et error_log pour chaque site. Les journaux sont votre première ligne de défense lors du diagnostic des problèmes, de l’investigation des incidents de sécurité ou de l’analyse des modèles de trafic. Stockez les journaux dans des fichiers spécifiques au site plutôt que de vous fier au journal global par défaut.

6. Utilisez un nommage de fichier descriptif et cohérent

Nommez vos fichiers de configuration d’après le domaine qu’ils servent (par exemple, example.com.conf pour Apache, example.com pour NGINX). Cela rend immédiatement évident quel fichier correspond à quel site lors de la gestion d’un serveur avec de nombreux hôtes virtuels.

Choisir le bon environnement d’hébergement

Les techniques de configuration couvertes dans ce guide s’appliquent quel que soit votre configuration d’hébergement, mais votre choix d’environnement serveur a un impact significatif sur les performances et la flexibilité.

  • Hébergement web partagé — Idéal pour les débutants ou les petits sites où la configuration du serveur est gérée pour vous. NGINX ou Apache est pré-configuré, et vous interagissez avec les sites via un panneau de contrôle.
  • Hébergement VPS — Le juste milieu pour les développeurs et les administrateurs système qui ont besoin d’un accès root complet pour configurer NGINX ou Apache exactement comme décrit dans ce guide. Vous avez un contrôle total sur sites-available, sites-enabled, et tous les autres aspects du serveur.
  • Serveurs dédiés — Meilleur pour les sites web à fort trafic ou les applications nécessitant des performances maximales et une isolation. Vous gérez l’ensemble du serveur, y compris la configuration du serveur web, sans partage de ressources.
  • VPS avec cPanel
15%

Économisez 15% sur tous les services d'hébergement

Testez vos compétences et obtenez Réduction sur tout plan d'hébergement

Utilisez le code :

Skills
Commencer