Lab 5.6 - Installation de WordPress et GLPI sur un Serveur Linux (Ubuntu 24.04)
Objectifs
À la fin de ce lab, vous serez capable de:
- Installer et configurer Apache avec plusieurs VirtualHosts
- Installer et configurer MariaDB avec plusieurs bases de données
- Installer WordPress et GLPI sur des ports distincts
- Configurer les permissions et la sécurité
- Utiliser des scripts shell pour automatiser l'installation
- Gérer les services web et bases de données
Prérequis
- Ubuntu 24.04 installé
- Accès sudo/root
- Au moins 2 GB de RAM disponible
- Au moins 5 GB d'espace disque libre
- Connexion Internet
Vue d'Ensemble
Ce guide fournit les instructions et les scripts shell pour installer WordPress et GLPI sur un serveur Linux Ubuntu 24.04. Les deux applications utiliseront des ports et des utilisateurs distincts pour éviter tout conflit.
Architecture:
- WordPress: Port 8080, base de données
wordpressdb, utilisateurwordpressuser - GLPI: Port 8081, base de données
glpidb, utilisateurglpiuser
Partie 1: Installation de WordPress
Étape 1: Créer le script d'installation
Créez un fichier script pour WordPress :
nano install_wordpress.sh
Étape 2: Contenu du script
Copiez le contenu suivant dans le fichier :
#!/bin/bash
# Mise à jour des paquets et installation des composants nécessaires
sudo apt update
sudo apt install -y apache2 php php-{mysql,xml,mbstring,curl,zip,gd} libapache2-mod-php mariadb-server wget
# Sécurisation de l'installation de MariaDB
sudo mysql_secure_installation
# Connexion à MariaDB et création de la base de données WordPress et de l'utilisateur
sudo mysql -u root <<EOF
CREATE DATABASE wordpressdb;
CREATE USER 'wordpressuser'@'localhost' IDENTIFIED BY 'securepassword1';
GRANT ALL PRIVILEGES ON wordpressdb.* TO 'wordpressuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;
EOF
# Téléchargement et extraction de WordPress
cd /tmp
wget https://wordpress.org/latest.tar.gz
sudo tar xzvf latest.tar.gz -C /var/www/html/
# Configuration des permissions
sudo chown -R www-data:www-data /var/www/html/wordpress
sudo chmod -R 775 /var/www/html/wordpress
# Création du fichier de configuration pour WordPress dans Apache
sudo bash -c 'cat <<EOT > /etc/apache2/sites-available/wordpress.conf
<VirtualHost *:8080>
ServerName localhost
DocumentRoot /var/www/html/wordpress
<Directory /var/www/html/wordpress>
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/wordpress_error.log
CustomLog ${APACHE_LOG_DIR}/wordpress_access.log combined
</VirtualHost>
EOT'
# Configuration du port 8080
echo "Listen 8080" | sudo tee -a /etc/apache2/ports.conf
# Activation de la configuration et redémarrage d'Apache
sudo a2ensite wordpress.conf
sudo a2enmod rewrite
sudo systemctl restart apache2
# Instructions pour l'installation via l'interface web
echo "Installation via l'interface web :"
echo "Ouvrez un navigateur et accédez à http://127.0.0.1:8080/wordpress"
echo "Suivez l'assistant d'installation en fournissant les informations de la base de données :"
echo "Nom de la base de données : wordpressdb"
echo "Nom d'utilisateur : wordpressuser"
echo "Mot de passe : securepassword1"
echo "Hôte de la base de données : localhost"
Étape 3: Rendre le script exécutable et l'exécuter
chmod +x install_wordpress.sh
./install_wordpress.sh
Étape 4: Réponses à mysql_secure_installation
Pendant l'exécution du script, vous serez invité à répondre aux questions pour sécuriser MariaDB. Voici les réponses recommandées :
Enter current password for root : [Appuyez sur Entrée]
Switch to unix_socket authentication [Y/n] Y
Change the root password? [Y/n] n
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] n
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y
Étape 5: Installation via l'interface web
-
Ouvrez un navigateur et accédez à http://127.0.0.1:8080/wordpress
-
Suivez l'assistant d'installation en fournissant les informations de la base de données :
- Nom de la base de données :
wordpressdb - Nom d'utilisateur :
wordpressuser - Mot de passe :
securepassword1 - Hôte de la base de données :
localhost
- Nom de la base de données :
-
Complétez l'installation en créant un compte administrateur WordPress
Étape 6: Vérification
# Vérifier que Apache écoute sur le port 8080
sudo netstat -tulnp | grep :8080
# Vérifier le statut d'Apache
sudo systemctl status apache2
# Vérifier les logs
sudo tail -f /var/log/apache2/wordpress_access.log
Partie 2: Installation de GLPI
Étape 1: Créer le script d'installation
Créez un fichier script pour GLPI :
nano install_glpi.sh
Étape 2: Contenu du script
Copiez le contenu suivant dans le fichier :
#!/bin/bash
# Mise à jour des paquets et installation des composants nécessaires
sudo apt update
sudo apt install -y apache2 php php-{apcu,cli,common,curl,gd,imap,ldap,mysql,xmlrpc,xml,mbstring,bcmath,intl,zip,bz2} libapache2-mod-php mariadb-server wget
# Sécurisation de l'installation de MariaDB (si pas déjà fait)
# sudo mysql_secure_installation
# Connexion à MariaDB et création de la base de données GLPI et de l'utilisateur
sudo mysql -u root <<EOF
CREATE DATABASE glpidb;
CREATE USER 'glpiuser'@'localhost' IDENTIFIED BY 'securepassword2';
GRANT ALL PRIVILEGES ON glpidb.* TO 'glpiuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;
EOF
# Téléchargement et extraction de GLPI
cd /tmp
wget https://github.com/glpi-project/glpi/releases/download/10.0.7/glpi-10.0.7.tgz
sudo tar xvf glpi-10.0.7.tgz -C /var/www/html/
# Configuration des permissions
sudo chown -R www-data:www-data /var/www/html/glpi
sudo chmod -R 775 /var/www/html/glpi
# Création du fichier de configuration pour GLPI dans Apache
sudo bash -c 'cat <<EOT > /etc/apache2/sites-available/glpi.conf
<VirtualHost *:8081>
ServerName localhost
DocumentRoot /var/www/html/glpi/public
<Directory /var/www/html/glpi/public>
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/glpi_error.log
CustomLog ${APACHE_LOG_DIR}/glpi_access.log combined
</VirtualHost>
EOT'
# Configuration du port 8081
echo "Listen 8081" | sudo tee -a /etc/apache2/ports.conf
# Activation de la configuration et redémarrage d'Apache
sudo a2ensite glpi.conf
sudo a2enmod rewrite
sudo systemctl restart apache2
# Instructions pour l'installation via l'interface web
echo "Installation via l'interface web :"
echo "Ouvrez un navigateur et accédez à http://127.0.0.1:8081/glpi"
echo "Suivez l'assistant d'installation en fournissant les informations de la base de données :"
echo "Nom de la base de données : glpidb"
echo "Nom d'utilisateur : glpiuser"
echo "Mot de passe : securepassword2"
echo "Hôte de la base de données : localhost"
Étape 3: Rendre le script exécutable et l'exécuter
chmod +x install_glpi.sh
./install_glpi.sh
Étape 4: Installation via l'interface web
-
Ouvrez un navigateur et accédez à http://127.0.0.1:8081/glpi
-
Suivez l'assistant d'installation en fournissant les informations de la base de données :
- Nom de la base de données :
glpidb - Nom d'utilisateur :
glpiuser - Mot de passe :
securepassword2 - Hôte de la base de données :
localhost
- Nom de la base de données :
-
Connectez-vous avec les identifiants par défaut :
- Utilisateur :
glpi - Mot de passe :
glpi
- Utilisateur :
-
Important : Changez immédiatement les mots de passe par défaut
-
Supprimez le fichier d'installation pour des raisons de sécurité :
sudo rm /var/www/html/glpi/install/install.php
Partie 3: Commandes Avancées et Sécurisation
Gestion des permissions
# Définir les permissions de fichiers de manière récursive
sudo find /var/www/html/wordpress -type f -exec chmod 644 {} \;
sudo find /var/www/html/glpi -type f -exec chmod 644 {} \;
# Définir les permissions de répertoires
sudo find /var/www/html/wordpress -type d -exec chmod 755 {} \;
sudo find /var/www/html/glpi -type d -exec chmod 755 {} \;
Configuration du pare-feu (UFW)
# Autoriser les ports nécessaires
sudo ufw allow 8080/tcp
sudo ufw allow 8081/tcp
# Vérifier le statut
sudo ufw status
Surveillance en temps réel
# Surveiller les logs Apache
sudo tail -f /var/log/apache2/access.log
sudo tail -f /var/log/apache2/wordpress_access.log
sudo tail -f /var/log/apache2/glpi_access.log
# Surveiller les processus système
htop
# Surveiller l'état de MySQL/MariaDB
sudo mysqladmin -u root -p status
Partie 4: Résolution de Problèmes
Erreur de configuration Apache
Si vous rencontrez une erreur de configuration Apache :
# Vérifier la syntaxe de la configuration
sudo apache2ctl configtest
# Voir les logs détaillés
sudo journalctl -xeu apache2.service
# Vérifier les fichiers de configuration
sudo nano /etc/apache2/sites-available/wordpress.conf
sudo nano /etc/apache2/sites-available/glpi.conf
Vérifier que les ports sont libres
# Vérifier les ports en écoute
sudo netstat -tulnp | grep :8080
sudo netstat -tulnp | grep :8081
# Alternative avec ss
sudo ss -tulnp | grep :8080
sudo ss -tulnp | grep :8081
Vérifier les permissions
# Vérifier les permissions des répertoires
ls -ld /var/www/html/wordpress
ls -ld /var/www/html/glpi
# Vérifier le propriétaire
ls -la /var/www/html/
Partie 5: Exercices Pratiques
Exercice 1: Ajouter des commentaires aux scripts
- Ouvrez les scripts
install_wordpress.shetinstall_glpi.sh - Ajoutez des commentaires (
#) expliquant chaque section du script - Expliquez ce que fait chaque commande importante
Exercice 2: Changer les ports
Modifiez les ports pour utiliser 8080 et 8082 au lieu de 8080 et 8081 :
- Modifiez les fichiers de configuration Apache
- Modifiez le fichier
ports.conf - Redémarrez Apache
- Testez l'accès aux applications
Commandes à utiliser :
# Modifier le port dans la configuration GLPI
sudo nano /etc/apache2/sites-available/glpi.conf
# Changez *:8081 en *:8082
# Ajouter le port 8082
echo "Listen 8082" | sudo tee -a /etc/apache2/ports.conf
# Redémarrer Apache
sudo systemctl restart apache2
# Vérifier
sudo netstat -tulnp | grep :8082
Exercice 3: Surveillance et monitoring
- Utilisez
htoppour surveiller les ressources pendant l'installation - Surveillez les logs Apache en temps réel
- Vérifiez l'état de MariaDB avec
mysqladmin
Questions de Réflexion
Répondez aux questions suivantes dans un document séparé :
-
Quelle est l'importance de configurer des utilisateurs et des bases de données distincts pour WordPress et GLPI ?
- Expliquez les risques de sécurité si les deux applications partageaient la même base de données
-
Que se passerait-il si WordPress et GLPI utilisaient tous les deux le port 80 ?
- Expliquez les implications techniques et les solutions possibles
-
Pourquoi est-il nécessaire de sécuriser l'installation de MariaDB pendant la configuration initiale ?
- Détaillez les risques si cette étape est ignorée
-
Quel lien existe-t-il entre la base de données et les fichiers de WordPress/GLPI téléchargés sur le serveur ?
- Expliquez comment les deux interagissent
-
Expliquez ce qui se passe lorsque vous accédez à WordPress ou GLPI via un navigateur après l'installation.
- Décrivez le flux de requête depuis le navigateur jusqu'à la base de données
Annexe 1: Méthodes de Configuration des Ports
Méthode 1: Fichier de configuration séparé (Recommandé)
# Créer un fichier de configuration pour le port
sudo bash -c 'echo "Listen 8080" > /etc/apache2/conf-available/port8080.conf'
sudo bash -c 'echo "Listen 8081" > /etc/apache2/conf-available/port8081.conf'
# Activer les configurations
sudo a2enconf port8080
sudo a2enconf port8081
# Redémarrer Apache
sudo systemctl restart apache2
Avantages :
- Plus modulaire
- Facilite la gestion des configurations
- Ne modifie pas les fichiers principaux
Méthode 2: Ajout direct dans ports.conf
# Ajouter directement dans ports.conf
echo "Listen 8080" | sudo tee -a /etc/apache2/ports.conf
echo "Listen 8081" | sudo tee -a /etc/apache2/ports.conf
# Redémarrer Apache
sudo systemctl restart apache2
Avantages :
- Simple et rapide
- Toutes les configurations de ports au même endroit
Inconvénients :
- Modifie le fichier principal
- Moins modulaire
Différence entre tee et bash -c
echo "Listen 8081" | sudo tee -a /etc/apache2/ports.conf :
- Modifie directement le fichier de configuration principal
- Simple mais moins modulaire
- Toutes les configurations au même endroit
sudo bash -c 'echo "Listen 8080" > /etc/apache2/conf-available/port8080.conf' :
- Crée un fichier de configuration séparé
- Plus modulaire et structuré
- Permet d'activer/désactiver facilement
- Ne modifie pas les fichiers principaux
Annexe 2: Sécurisation Avancée
Supprimer les fichiers d'installation
# WordPress (si présent)
sudo rm -rf /var/www/html/wordpress/wp-admin/install.php
# GLPI
sudo rm /var/www/html/glpi/install/install.php
Configurer les permissions strictes
# Permissions pour WordPress
sudo chown -R www-data:www-data /var/www/html/wordpress
sudo find /var/www/html/wordpress -type d -exec chmod 755 {} \;
sudo find /var/www/html/wordpress -type f -exec chmod 644 {} \;
# Permissions pour GLPI
sudo chown -R www-data:www-data /var/www/html/glpi
sudo find /var/www/html/glpi -type d -exec chmod 755 {} \;
sudo find /var/www/html/glpi -type f -exec chmod 644 {} \;
Configurer les sauvegardes
# Script de sauvegarde de base de données WordPress
sudo mysqldump -u wordpressuser -p wordpressdb > /backup/wordpress_$(date +%Y%m%d).sql
# Script de sauvegarde de base de données GLPI
sudo mysqldump -u glpiuser -p glpidb > /backup/glpi_$(date +%Y%m%d).sql
Résumé des Commandes Importantes
| Commande | Description |
|---|---|
sudo systemctl status apache2 | Vérifier le statut d'Apache |
sudo systemctl restart apache2 | Redémarrer Apache |
sudo apache2ctl configtest | Tester la configuration Apache |
sudo netstat -tulnp | grep :8080 | Vérifier si le port est en écoute |
sudo tail -f /var/log/apache2/access.log | Surveiller les logs en temps réel |
htop | Surveiller les processus système |
sudo mysqladmin -u root -p status | Vérifier l'état de MariaDB |
sudo ufw allow 8080/tcp | Autoriser le port dans le pare-feu |
Vérification Finale
Vérifiez que vous avez réussi à :
- Installer WordPress sur le port 8080
- Installer GLPI sur le port 8081
- Configurer les bases de données distinctes
- Accéder aux deux applications via le navigateur
- Configurer le pare-feu (UFW)
- Comprendre la différence entre les méthodes de configuration des ports
- Ajouter des commentaires aux scripts
- Répondre aux questions de réflexion
Prochaines Étapes
- Module 7: Réseau et Configuration (pour approfondir la configuration réseau)
- Module 8: Services et Démon (pour automatiser avec systemd)
- Module 9: Sécurité Système (pour sécuriser davantage les installations)
Ressources Complémentaires
Lab créé le: Décembre 2024