Installer un serveur WEB (LAMP) de type Apache¶
1. Objectif du cours¶
Installer et vérifier un serveur LAMP (Linux, Apache, MariaDB/MySQL, PHP) sur une machine Debian : mise à jour du système, installation des composants, sécurisation de MariaDB, test PHP et contrôles fonctionnels.
2. Notions et définitions essentielles¶
- LAMP : pile logicielle composée de Linux (OS), Apache (serveur Web), MySQL/MariaDB (SGDB relationnel) et PHP (langage serveur).
- Apache : serveur Web qui traite et répond aux requêtes HTTP.
- MariaDB : fork open source de MySQL, compatible et utilisé comme gestionnaire de bases de données.
- phpinfo() : fonction PHP affichant la version, les modules chargés et la configuration PHP.
- unix_socket (MariaDB) : méthode d'authentification permettant à l'utilisateur système root de se connecter au root de MariaDB sans mot de passe.
3. Fonctionnement et principes¶
- La pile LAMP combine un OS, un serveur Web, une base de données et un langage serveur pour héberger des applications Web dynamiques : Apache reçoit les requêtes HTTP, PHP exécute la logique applicative, MariaDB stocke les données.
- Flux typique : client → Apache → PHP (génère contenu dynamique) → MariaDB (lecture/écriture des données).
- Avant toute installation, mettre à jour les référentiels puis appliquer les mises à jour du système pour éviter conflits et vulnérabilités.
- La sécurisation de MariaDB (assistant interactif) adapte notamment l'authentification du compte root et supprime comptes et bases non nécessaires pour réduire la surface d'attaque.
- Tester l'installation côté serveur (statut du service, adresse IP) et côté client (page par défaut Apache, page test PHP) valide le bon fonctionnement.
4. Commandes et manipulations¶
Regroupées par procédure (seules commandes présentes dans le PDF) : - Mise à jour du système : - sudo apt-get update et sudo apt-get upgrade — actualiser la liste des paquets puis appliquer les mises à jour. - Installation et vérification d'Apache : - sudo apt-get install apache2 — installer Apache. - systemctl status apache2 — vérifier que le service est actif (active (running)). - Récupération de l'IP réseau : - ip a — afficher les adresses IP configurées. - Installation de PHP et extensions : - sudo apt-get install php — installer PHP. - sudo apt-get install curl — installer l'extension cURL (communication HTTP/FTP). - Installation et sécurisation de MariaDB : - sudo apt-get install mariadb-server — installer MariaDB. - mysql_secure_installation — lancer l'assistant interactif de sécurisation (définir mot de passe root, supprimer anonymes, interdire root distant, supprimer base de test, recharger privilèges). - Commandes SQL de base pour tester MariaDB : - mysql -u root -p — se connecter à MariaDB en root. - create database NOM ; — créer une base. - use NOM — utiliser une base. - create table ... , insert into ..., select * from ... — opérations basiques de table et vérification. - quit — quitter MariaDB. - Test PHP via fichier web : - cd /var/www/html ; touch test.php ; nano test.php — créer/éditer test.php contenant phpinfo() ensuite vérifier via navigateur. - Répertoire racine Web mentionné : /var/www/html.
5. Sécurité et bonnes pratiques¶
- Exécuter systématiquement mysql_secure_installation après l'installation de MariaDB.
- Définir un mot de passe root robuste pour MariaDB si on bascule l'authentification depuis unix_socket.
- Répondre positivement aux actions recommandées par l'assistant : suppression des utilisateurs anonymes, interdiction de la connexion root à distance, suppression de la base de test, rechargement des tables de privilèges.
- Préparer l'installation en vérifiant la compatibilité des versions (PHP, Apache, MariaDB) avec les applications cibles.
- Planifier mises à jour hors production, documenter versions et configurations, tester sur un environnement de développement avant le déploiement.
- Organiser les fichiers Web dans /var/www/html et contrôler les permissions pour éviter accès non autorisés.
6. Points essentiels à retenir pour le TSSR¶
- LAMP = ensemble cohérent pour héberger des applications Web ; chaque couche a un rôle distinct et complémentaire.
- Toujours mettre à jour les référentiels puis appliquer les upgrades avant d'installer de nouveaux paquets.
- Installer Apache en premier, puis PHP, puis MariaDB ; sécuriser MariaDB ensuite.
- Sur MariaDB 10.4+, le compte root utilise par défaut l'authentification unix_socket ; l'assistant propose de basculer vers mot de passe si nécessaire.
- Vérifier côté serveur (statut du service, adresse IP) et côté client (page par défaut Apache, fichier phpinfo()) pour valider l'installation.
- cURL est utile pour que PHP puisse effectuer des requêtes HTTP/FTP vers d'autres serveurs.
- Placer les fichiers web publics sous /var/www/html et documenter l'arborescence pour la maintenance.
- Supprimer les comptes et bases de test inutiles pour réduire les risques.
7. Tableau récapitulatif¶
| Élément | Rôle principal | Indicateur de bon fonctionnement | Emplacement/config |
|---|---|---|---|
| Apache | Traiter les requêtes HTTP | Page par défaut accessible via l'IP | service géré par systemd |
| PHP | Exécuter code côté serveur | Affichage phpinfo() sur test.php | modules listés par phpinfo() |
| MariaDB | Stocker données relationnelles | Connexion root et création de DB opérationnelle | auth root par unix_socket (10.4+) |
| cURL | Communication HTTP/FTP depuis PHP | Extension présente dans phpinfo() | installé comme paquet séparé |
| Répertoire web | Héberger fichiers publics | index ou test.php accessible | /var/www/html |
8. Vérifications pratiques¶
- Confirmer que le service Apache est actif (statut système montrant "active (running)").
- Accéder via un navigateur à l'adresse IP de la machine ; voir la page par défaut "Apache2 Debian".
- Vérifier l'adresse IP locale de la machine affichée par la commande réseau.
- Créer un test.php avec phpinfo() et accéder via navigateur pour voir la version PHP, modules et configuration.
- Se connecter à MariaDB, créer une base, une table, insérer une ligne et exécuter une requête SELECT pour valider lecture/écriture.
- Exécuter l'assistant de sécurisation MariaDB et confirmer les actions recommandées (suppression anonymes, interdiction root distant, suppression base test, rechargement des privilèges).
9. Flashcards Anki¶
Que signifie l'acronyme LAMP ? :: Linux, Apache, MySQL/MariaDB et PHP Quel composant de la pile gère les requêtes HTTP ? :: Apache Quel logiciel relationnel open source est utilisé dans ce cours ? :: MariaDB Quelle commande met à jour la liste des paquets disponibles ? :: sudo apt-get update Quelle commande installe Apache sur Debian selon le cours ? :: sudo apt-get install apache2 Où placer les fichiers Web accessibles publiquement par défaut ? :: /var/www/html Quelle fonction PHP affiche la version, les modules et la configuration ? :: phpinfo() Comment se connecte-t-on à MariaDB en tant que root depuis le terminal ? :: mysql -u root -p Quelle méthode d'authentification protège root sur MariaDB 10.4+ par défaut ? :: authentification unix_socket Quelle extension facilite la communication HTTP/FTP depuis PHP ? :: cURL