LAMP – Déploiement & automatisation (Bash ➜ Ansible)





Serveur LAMP prêt à l’emploi
Mise en place d’un serveur LAMP sur Debian 12 (VM VirtualBox), d’abord automatisé par script Bash, puis industrialisé avec Ansible (Infrastructure as Code). Environnement reproductible, services actifs, stack prête à héberger des applis (ex. TestLink).
- Catégorie : SysAdmin / DevOps
- Contexte : VM VirtualBox locale
- Livrables : Script Bash, Playbook Ansible, base MariaDB, vérifs
Déployer un serveur LAMP sur Debian 12, l’automatiser au maximum et garantir la reproductibilité de l’environnement pour héberger des applis web (ex. TestLink).
- VM Debian 12 (VirtualBox)
- Vérification réseau :
ping -c 2 google.com
- Utilisation de sudo pour les installations
Script install_lamp.sh
: met à jour le système, installe Apache/MariaDB/PHP et active les services.
#!/bin/bash
echo "Mise à jour du système..."
apt update && apt upgrade -y
echo "Installation des paquets LAMP..."
apt install -y apache2 mariadb-server php php-mysql libapache2-mod-php \
php-xml php-mbstring unzip wget
echo "Activation et démarrage des services..."
systemctl enable apache2
systemctl enable mariadb
systemctl start apache2
systemctl start mariadb
Exécution : chmod +x install_lamp.sh && sudo ./install_lamp.sh
- Apache actif :
systemctl status apache2
- Test PHP :
echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php # Naviguer : http://[IP_VM]/info.php
- MariaDB actif :
systemctl status mariadb
CREATE DATABASE testlink;
CREATE USER 'testlink_user'@'localhost' IDENTIFIED BY 'monmotdepasse';
GRANT ALL PRIVILEGES ON testlink.* TO 'testlink_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
La stack est prête à héberger des applis (TestLink, CMS, etc.).
Inventaire minimal : /etc/ansible/hosts
→ localhost
. Test : ansible all -m ping
(pong).
Playbook lamp.yml
:
- name: Déploiement d’un serveur LAMP
hosts: localhost
become: yes
tasks:
- name: Mise à jour de l’index des paquets
apt: update_cache=yes
- name: Installation des paquets LAMP
apt:
name:
- apache2
- mariadb-server
- php
- php-mysql
- libapache2-mod-php
- php-xml
- php-mbstring
- unzip
- wget
state: present
- name: Activation et démarrage d’Apache
service: { name: apache2, state: started, enabled: yes }
- name: Activation et démarrage de MariaDB
service: { name: mariadb, state: started, enabled: yes }
- name: Création d’un fichier info.php pour tester PHP
copy:
dest: /var/www/html/info.php
content: "<?php phpinfo(); ?>"
Exécution : ansible-playbook lamp.yml --ask-become-pass
- Apache accessible :
http://127.0.0.1/info.php
- PHP interprété correctement (phpinfo)
- MariaDB fonctionnel
- Services redémarrent automatiquement après reboot
- Automatisation : fin des installations manuelles, exécution fiable.
- Reproductibilité : même environnement à chaque run (script ou playbook).
- Fiabilité : services activés et vérifiés.
- Extensibilité : base pour CMS, TestLink, etc.
- Approche DevOps : passage Bash ➜ Ansible (IaC).