Aller au contenu principal

Installer et configurer un serveur web Apache et une base de données SQL sur Debian

Niveau : Debutant⏱️ Temps estimé : 25 min
📋 Prérequis nécessaires :
  • Une machine ou serveur Debian avec un accès Internet
  • Un compte utilisateur avec privilèges sudo ou root
  • Un terminal Bash et des notions élémentaires de la ligne de commande Linux

🎯 Objectif du tutoriel​

Dans ce guide, vous allez apprendre à installer et configurer un environnement web de base sous Debian en déployant le serveur HTTP Apache2, un VirtualHost dédié pour votre application, ainsi que le système de gestion de base de données MySQL ou MariaDB sécurisé.

Pourquoi cette architecture ?

Le couple Apache et MySQL représente le socle historique et robuste de la pile LAMP. Il permet d'héberger rapidement et de manière modulaire vos sites web statiques, CMS ou applications dynamiques.


🛠️ Étape 1 : Installation et démarrage d'Apache​

Commencez par mettre à jour l'index des dépôts de paquets, puis installez Apache :

Terminal
sudo apt update
sudo apt install -y apache2

Activez et démarrez le service Apache pour qu'il s'exécute immédiatement et à chaque redémarrage du système :

Terminal
sudo systemctl enable --now apache2
Emplacements clés d'Apache sous Debian
  • Fichiers de configuration : /etc/apache2/
  • Fichiers de sites disponibles : /etc/apache2/sites-available/
  • Fichiers de sites activés : /etc/apache2/sites-enabled/
  • Racine web par défaut : /var/www/html/

⚙️ Étape 2 : Configuration d'un VirtualHost dédié​

Pour isoler la configuration de votre site web, créez un fichier VirtualHost personnalisé au lieu d'utiliser le fichier par défaut.

1. Création de l'arborescence et des permissions​

Créez le répertoire dédié à votre site et affectez-lui les droits d'accès adéquats :

Terminal
sudo mkdir -p /var/www/mon-site
sudo chown -R $USER:www-data /var/www/mon-site
sudo chmod -R 755 /var/www/mon-site

Créez ensuite une page d'accueil de test :

Terminal
echo "<!DOCTYPE html><html><head><title>Mon Site</title></head><body><h1>Serveur Apache et MySQL opérationnel !</h1></body></html>" > /var/www/mon-site/index.html

2. Déclaration du fichier VirtualHost​

Dupliquez le fichier de configuration par défaut vers un nouveau fichier :

Terminal
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/mon-site.conf

Éditez le fichier /etc/apache2/sites-available/mon-site.conf :

Exemple de fichier /etc/apache2/sites-available/mon-site.conf
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName localhost
DocumentRoot /var/www/mon-site

<Directory /var/www/mon-site>
Options -Indexes +FollowSymLinks
AllowOverride All
Require all granted
</Directory>

ErrorLog ${APACHE_LOG_DIR}/mon-site_error.log
CustomLog ${APACHE_LOG_DIR}/mon-site_access.log combined
</VirtualHost>

3. Activation du site et rechargement d'Apache​

Désactivez le site par défaut, activez votre nouveau VirtualHost, validez la syntaxe de configuration puis rechargez le service :

Terminal
sudo a2dissite 000-default.conf
sudo a2ensite mon-site.conf
sudo apache2ctl configtest
sudo systemctl reload apache2
Vérification locale

Pour tester que la page est servie correctement depuis le terminal :

curl -I http://localhost

Vous devez obtenir une réponse HTTP/1.1 200 OK.


🗄️ Étape 3 : Installation et sécurisation de la base de données​

Sous Debian, vous pouvez installer MariaDB (le fork communautaire standard et recommandé) ou MySQL Server.

Terminal
sudo apt install -y mariadb-server
sudo systemctl enable --now mariadb

Sécurisation initiale de la base de données​

Exécutez le script d'automatisation de la sécurité afin de supprimer les utilisateurs anonymes, désactiver les connexions root distantes et supprimer la base de test :

Terminal
sudo mariadb_secure_installation

🔑 Étape 4 : Création de la base de données et de l'utilisateur​

Connectez-vous à la console d'administration SQL :

Terminal
sudo mysql -u root

Exécutez les requêtes SQL suivantes pour créer la base et l'utilisateur applicatif dédié :

MySQL / MariaDB CLI
-- Création de la base de données
CREATE DATABASE mon_site CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- Création de l'utilisateur dédié
CREATE USER 'mon_utilisateur'@'localhost' IDENTIFIED BY 'votre_mot_de_passe_securise';

-- Attribution des privilèges sur la base concernée
GRANT ALL PRIVILEGES ON mon_site.* TO 'mon_utilisateur'@'localhost';

-- Application des changements
FLUSH PRIVILEGES;

-- Quitter la console MySQL
EXIT;
Règle de sécurité

Évitez d'utiliser le compte root directement dans vos fichiers applicatifs. Privilégiez systématiquement un utilisateur avec des privilèges restreints à sa base de données.


🔍 Étape 5 : Diagnostics et vérifications​

En cas d'anomalie ou de page inaccessible, utilisez les commandes de contrôle ci-dessous :

1. Statut des services​

Terminal
sudo systemctl status apache2
sudo systemctl status mariadb # ou mysql selon le paquet installé

2. Consultation des journaux d'erreurs​

Terminal
sudo tail -f /var/log/apache2/mon-site_error.log
sudo journalctl -u apache2 -e --no-pager

3. Contrôle des ports réseau en écoute​

Vérifiez qu'Apache écoute sur le port 80 (HTTP) et la base de données sur le port 3306 :

Terminal
sudo ss -tlpn | grep -E ':(80|3306)'

📋 Résumé des commandes clés​

ActionCommande
Vérifier la syntaxe Apachesudo apache2ctl configtest
Activer un VirtualHostsudo a2ensite mon-site.conf
Désactiver un VirtualHostsudo a2dissite 000-default.conf
Recharger Apache sans coupuresudo systemctl reload apache2
Connexion client MySQLmysql -u mon_utilisateur -p
Lister les ports d'écoutesudo ss -tlpn

🚀 Pour aller plus loin​

  • Sécurisation HTTPS : Mettre en place un certificat SSL gratuit via Let's Encrypt et le client certbot.
  • Support applicatif dynamique : Installer PHP (php, libapache2-mod-php, php-mysql) pour héberger des applications WordPress ou Symfony.
  • Reverse Proxy : Configurer mod_proxy et mod_proxy_http pour rediriger les requêtes vers des conteneurs applicatifs locaux (ex: Node.js ou Go sur le port 8080).