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).

Debian 12 Apache MariaDB PHP Bash Ansible IaC
  • Catégorie : SysAdmin / DevOps
  • Contexte : VM VirtualBox locale
  • Livrables : Script Bash, Playbook Ansible, base MariaDB, vérifs
Voir le repository GitHub
Contexte & objectifs

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
Automatisation initiale — Script Bash

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

Vérifications manuelles
  • 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
Base MariaDB prête pour les applications
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.).

Industrialisation — Ansible (IaC)

Inventaire minimal : /etc/ansible/hostslocalhost. 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

Vérifications finales & disponibilité
  • Apache accessible : http://127.0.0.1/info.php
  • PHP interprété correctement (phpinfo)
  • MariaDB fonctionnel
  • Services redémarrent automatiquement après reboot
Plus-values & enseignements
  • 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).

Ouvrir le repo (script & playbook)