Fiche installation ISPconfig et WordPress

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

  1. Introduction
  2. Sommaire
  3. Architecture d’ISPConfig
  4. Préparation du serveur Debian
  5. Installation des composants nécessaires
  6. Installation d’ISPConfig
  7. Accès à l’interface d’administration
  8. Installation d’un site WordPress
  9. Ajouter un nouveau site web
  10. Gestion des certificats TLS
  11. Pare-feu et sécurité
  12. Fichiers importants
  13. Synthèse Markdown pour ta fiche bristol
  14. Bloc de configuration complet
  15. Vérification et dépannage
  16. Logs et analyse des erreurs
  17. Bonnes pratiques
  18. Pour aller plus loin
  19. Liens utiles
  20. 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 update met à jour la liste des paquets ;
  • apt upgrade installe les nouvelles versions ;
  • -y valide 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 :

PaquetRôle
apache2Serveur web
mariadb-serverBase de données
php-fpmExécution PHP performante
php-mysqlConnexion PHP/MariaDB
certbotCertificats Let’s Encrypt
ufwPare-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ètreExemple
Domainmonsite.local
PHP ModePHP-FPM
Auto Subdomainnone
SSLactivé
Let’s Encryptactivé

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ètreValeur
Database Namewordpressdb
Userwpuser
Passwordmotdepassefort

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ètreExemple
Domainblog.local
PHP VersionPHP 8.4
SSLOui
Let’s EncryptOui

10. Gestion des certificats TLS

ISPConfig peut utiliser Let’s Encrypt automatiquement.

Ports nécessaires :

PortProtocoleRôle
80TCPHTTP
443TCPHTTPS

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 :

PortUsage
22SSH
80HTTP
443HTTPS
8080ISPConfig

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

FichierRôle
/etc/apache2/apache2.confConfiguration globale Apache
/etc/apache2/sites-available/Virtual hosts
/etc/php/8.4/fpm/php.iniConfiguration PHP
/etc/mysql/mariadb.conf.d/50-server.cnfConfiguration 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 ;
  • .htaccess bloqué.

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.
Retour en haut