1. Introduction
Dans un contexte BTS CIEL ou BTS SIO, tu vas souvent devoir héberger plusieurs sites web sur un même serveur Linux. Tu peux le faire manuellement avec Apache, Nginx, MariaDB et PHP, mais cela devient vite difficile à maintenir lorsque tu ajoutes plusieurs clients ou plusieurs applications.
ISPConfig simplifie énormément cette administration. Cette interface web permet de gérer :
- les sites web ;
- les bases de données ;
- les comptes FTP ;
- les certificats TLS ;
- les boîtes mail ;
- les DNS ;
- les utilisateurs clients.
Dans cette fiche, tu vas apprendre à :
- installer ISPConfig sur Debian ou Ubuntu ;
- configurer un serveur web complet ;
- ajouter un nouveau site web ;
- installer WordPress automatiquement ;
- sécuriser l’hébergement ;
- gérer plusieurs sites sur le même serveur.
L’objectif pédagogique consiste à comprendre comment fonctionne un hébergement mutualisé moderne tout en gardant une bonne maîtrise des composants Linux sous-jacents.
2. Sommaire
- Introduction
- Sommaire
- Architecture d’ISPConfig
- Préparation du serveur Debian
- Installation des composants nécessaires
- Installation d’ISPConfig
- Accès à l’interface d’administration
- Installation d’un site WordPress
- Ajouter un nouveau site web
- Gestion des certificats TLS
- Pare-feu et sécurité
- Fichiers importants
- Synthèse Markdown pour ta fiche bristol
- Bloc de configuration complet
- Vérification et dépannage
- Logs et analyse des erreurs
- Bonnes pratiques
- Pour aller plus loin
- Liens utiles
- Propositions de TP
3. Architecture d’ISPConfig
ISPConfig fonctionne comme une couche d’administration au-dessus des services Linux classiques.
Architecture typique :
Client navigateur
│
▼
ISPConfig (interface web)
│
├── Apache2 ou Nginx
├── PHP-FPM
├── MariaDB
├── Bind9
├── Postfix
├── Dovecot
└── Certbot / Let's Encrypt
ISPConfig ne remplace pas Linux. L’outil génère simplement les fichiers de configuration automatiquement.
4. Préparation du serveur Debian
Dans cette fiche, on utilise :
- Debian 13
- Apache2
- MariaDB
- PHP 8.4
- ISPConfig dernière version
Met à jour le système :
sudo apt update && sudo apt upgrade -y
Explications :
apt updatemet à jour la liste des paquets ;apt upgradeinstalle les nouvelles versions ;-yvalide automatiquement les questions.
Configure ensuite le nom du serveur :
sudo hostnamectl set-hostname srv-web
Vérifie :
hostname
Ajoute une résolution locale :
sudo nano /etc/hosts
Exemple :
127.0.0.1 localhost
192.168.1.10 srv-web.local srv-web
5. Installation des composants nécessaires
Installe les paquets principaux :
sudo apt install apache2 mariadb-server php php-fpm php-mysql php-cli php-curl php-xml php-mbstring php-zip php-gd unzip wget curl certbot python3-certbot-apache ufw -y
Voici le rôle des principaux paquets :
| Paquet | Rôle |
|---|---|
| apache2 | Serveur web |
| mariadb-server | Base de données |
| php-fpm | Exécution PHP performante |
| php-mysql | Connexion PHP/MariaDB |
| certbot | Certificats Let’s Encrypt |
| ufw | Pare-feu simplifié |
Active les services :
sudo systemctl enable apache2 mariadb php8.4-fpm
sudo systemctl start apache2 mariadb php8.4-fpm
6. Installation d’ISPConfig
Télécharge le script officiel :
wget -O installer.sh https://get.ispconfig.org
Rends-le exécutable :
chmod +x installer.sh
Lance ensuite l’installation :
sudo ./installer.sh
Le script configure automatiquement :
- Apache ;
- MariaDB ;
- PHP ;
- les virtual hosts ;
- les services mail ;
- les certificats TLS.
Tu peux aussi utiliser le mode automatique :
sudo ./installer.sh --use-nginx
Cette option installe Nginx au lieu d’Apache.
7. Accès à l’interface d’administration
Après installation :
https://IP_DU_SERVEUR:8080
Exemple :
https://192.168.1.10:8080
Compte par défaut :
Utilisateur : admin
Mot de passe : généré durant l'installation
8. Installation d’un site WordPress
8.1 Création du site dans ISPConfig
Dans l’interface :
Sites → Add new website
Paramètres importants :
| Paramètre | Exemple |
|---|---|
| Domain | monsite.local |
| PHP Mode | PHP-FPM |
| Auto Subdomain | none |
| SSL | activé |
| Let’s Encrypt | activé |
ISPConfig crée automatiquement :
/var/www/monsite.local/
Arborescence :
/var/www/monsite.local/
├── web/
├── log/
├── ssl/
├── cgi-bin/
└── tmp/
8.2 Création de la base MariaDB
Dans ISPConfig :
Sites → Databases → Add new database
Exemple :
| Paramètre | Valeur |
|---|---|
| Database Name | wordpressdb |
| User | wpuser |
| Password | motdepassefort |
8.3 Installation de WordPress
Télécharge WordPress :
cd /tmp
wget https://wordpress.org/latest.zip
unzip latest.zip
Copie les fichiers :
sudo cp -r wordpress/* /var/www/monsite.local/web/
Change les permissions :
sudo chown -R web1:client1 /var/www/monsite.local/web
Les utilisateurs web1 et client1 sont créés automatiquement par ISPConfig.
9. Ajouter un nouveau site web
Tu peux héberger plusieurs sites sur le même serveur.
Exemple :
site1.local
site2.local
blog.local
intranet.local
Chaque site possède :
- son dossier ;
- sa configuration Apache ;
- sa base MariaDB ;
- son certificat TLS ;
- ses logs.
Dans ISPConfig :
Sites → Add new website
Puis configure :
| Paramètre | Exemple |
|---|---|
| Domain | blog.local |
| PHP Version | PHP 8.4 |
| SSL | Oui |
| Let’s Encrypt | Oui |
10. Gestion des certificats TLS
ISPConfig peut utiliser Let’s Encrypt automatiquement.
Ports nécessaires :
| Port | Protocole | Rôle |
|---|---|---|
| 80 | TCP | HTTP |
| 443 | TCP | HTTPS |
Autorise les ports :
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
Active le pare-feu :
sudo ufw enable
Vérifie :
sudo ufw status
11. Pare-feu et sécurité
Autorise aussi l’administration ISPConfig :
sudo ufw allow 8080/tcp
Ports typiques :
| Port | Usage |
|---|---|
| 22 | SSH |
| 80 | HTTP |
| 443 | HTTPS |
| 8080 | ISPConfig |
Exemple complet :
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 8080/tcp
Quelques bonnes pratiques :
- désactive la connexion root SSH ;
- utilise Fail2Ban ;
- impose des mots de passe forts ;
- active les mises à jour automatiques ;
- utilise HTTPS partout.
12. Fichiers importants
| Fichier | Rôle |
|---|---|
| /etc/apache2/apache2.conf | Configuration globale Apache |
| /etc/apache2/sites-available/ | Virtual hosts |
| /etc/php/8.4/fpm/php.ini | Configuration PHP |
| /etc/mysql/mariadb.conf.d/50-server.cnf | Configuration MariaDB |
| /usr/local/ispconfig/ | Fichiers ISPConfig |
| /var/www/ | Hébergement des sites |
| /var/log/apache2/ | Logs Apache |
| /var/log/mysql/ | Logs MariaDB |
13. Synthèse Markdown pour ta fiche bristol
# ISPConfig + WordPress
## Installation
apt update && apt upgrade -y
apt install apache2 mariadb-server php php-fpm php-mysql -y
## Téléchargement ISPConfig
wget -O installer.sh https://get.ispconfig.org
chmod +x installer.sh
sudo ./installer.sh
## Interface
https://IP:8080
## Ajouter un site
Sites → Add new website
## Installer WordPress
wget https://wordpress.org/latest.zip
unzip latest.zip
## Dossier web
/var/www/monsite.local/web/
## Ports
22 SSH
80 HTTP
443 HTTPS
8080 ISPConfig
## Pare-feu
ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw allow 8080/tcp
14. Bloc de configuration complet
<VirtualHost *:80>
ServerName monsite.local
ServerAdmin admin@monsite.local
DocumentRoot /var/www/monsite.local/web
<Directory /var/www/monsite.local/web>
AllowOverride All
Require all granted
Options FollowSymLinks
</Directory>
ErrorLog /var/log/apache2/monsite-error.log
CustomLog /var/log/apache2/monsite-access.log combined
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
</VirtualHost>
<VirtualHost *:443>
ServerName monsite.local
DocumentRoot /var/www/monsite.local/web
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/monsite.local/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/monsite.local/privkey.pem
<Directory /var/www/monsite.local/web>
AllowOverride All
Require all granted
</Directory>
ErrorLog /var/log/apache2/monsite-ssl-error.log
CustomLog /var/log/apache2/monsite-ssl-access.log combined
</VirtualHost>
15. Vérification et dépannage
Vérifie Apache :
sudo systemctl status apache2
Teste la configuration :
sudo apachectl configtest
Recharge Apache :
sudo systemctl reload apache2
Teste MariaDB :
sudo systemctl status mariadb
Teste PHP :
php -v
Teste l’écoute réseau :
sudo ss -tulpn
Cette commande affiche :
- les ports ouverts ;
- les services associés ;
- les processus Linux.
16. Logs et analyse des erreurs
Logs Apache
/var/log/apache2/access.log
/var/log/apache2/error.log
Lecture temps réel :
sudo tail -f /var/log/apache2/error.log
Logs ISPConfig
/var/log/ispconfig/
Logs MariaDB
/var/log/mysql/error.log
Logs PHP-FPM
/var/log/php8.4-fpm.log
Comprendre les erreurs fréquentes
Erreur 403
Cause possible :
- permissions incorrectes ;
- mauvais propriétaire ;
.htaccessbloqué.
Erreur 500
Cause possible :
- erreur PHP ;
- module Apache manquant ;
- mauvaise directive.
Certificat TLS invalide
Cause possible :
- DNS incorrect ;
- port 80 fermé ;
- domaine inaccessible.
17. Bonnes pratiques
Utilise un utilisateur différent par site web afin d’éviter qu’un site compromis puisse accéder aux autres.
Active systématiquement HTTPS avec Let’s Encrypt.
Mets à jour régulièrement :
sudo apt update && sudo apt upgrade
Surveille les logs chaque semaine.
Évite d’installer des extensions WordPress inutiles.
Sauvegarde :
- les fichiers web ;
- les bases MariaDB ;
- les certificats TLS.
18. Pour aller plus loin
Tu peux approfondir plusieurs sujets :
- reverse proxy ;
- hébergement mutualisé ;
- conteneurisation Docker ;
- Nginx ;
- sécurité WordPress ;
- supervision Prometheus/Grafana ;
- sauvegardes automatisées.
19. Liens vers les sites officiels, MOOC et documentations
Documentation officielle ISPConfig
Documentation officielle complète d’ISPConfig avec les procédures d’administration et les options avancées.
Installation officielle ISPConfig
https://www.howtoforge.com/ispconfig-autoinstall-debian-ubuntu/
Guide officiel très utilisé dans le monde professionnel.
Documentation Apache Debian
https://wiki.debian.org/Apache
Documentation Debian officielle concernant Apache2.
Documentation MariaDB
https://mariadb.com/kb/en/documentation/
Documentation complète de MariaDB.
Documentation WordPress
https://wordpress.org/documentation
Documentation officielle WordPress.
OpenClassrooms Linux
https://openclassrooms.com/fr/courses/7170491-administrez-un-systeme-linux
Très bon cours pour comprendre l’administration Linux.
OpenClassrooms PHP/MySQL
https://openclassrooms.com/fr/courses/6175841-programmez-en-oriente-objet-en-php
Permet de mieux comprendre l’environnement WordPress.
Documentation UFW Ubuntu
https://help.ubuntu.com/community/UFW
Documentation officielle Ubuntu sur le pare-feu UFW.
20. Propositions de TP
TP 1 — Installer ISPConfig
Objectifs :
- installer Debian ;
- installer ISPConfig ;
- vérifier les services.
TP 2 — Héberger deux sites WordPress
Objectifs :
- créer plusieurs virtual hosts ;
- gérer plusieurs bases MariaDB ;
- isoler les permissions.
TP 3 — Sécuriser le serveur
Objectifs :
- configurer UFW ;
- activer HTTPS ;
- installer Fail2Ban.
TP 4 — Analyse de logs
Objectifs :
- identifier une erreur 500 ;
- comprendre les logs Apache ;
- analyser les accès HTTP suspects.
TP 5 — Hébergement mutualisé
Objectifs :
- créer plusieurs clients ISPConfig ;
- limiter les ressources ;
- gérer les accès FTP.
