====== Éléments d’installation d'un application LAMP ======
===== Avant-propos =====
Les applications WEB de type **LAMP** (Linux, Apache, Mysql, PHP) constituent depuis plusieurs décennies l'essentiel des applications.
Même si certains éléments ont changé, avec notamment la montée en puissance de **docker** et de **nodeJS** , il reste pertinent de se pencher sur les bases.
A part le tronc commun, Linux étant déjà installé, on considérera qu'on utilise une distribution Linux Debian 11 (Bullseye)
===== Le serveur Web =====
Le plus utilisé reste **apache**, très adaptable et qui reste la solution de référence, avec toutefois des performances un peu en retrait de son principal concurrent **nginx**. Le langage PHP est utilisé sous forme de module lancé par le démon apache.
==== Sur Debian 11 Bullseye ====
sudo apt install apache2 php php-mbstring php-gd php-mysql
le **DocumentRoot** d'apache est sur Debian 11 : **/var/www/html** dans lequel on devra extraire (avec **tar** ou unzip) les fichiers de l'archive de l'application, directement ou bien dans un sous-répertoire.
===== la base de données =====
On installera **mariadb** ou **mysql**.
apt install mariadb-server
Il est fortement recommandé de lancer la procédure suivante pour améliorer la sécurité des comptes **mariadb**
mysql_secure_installation
===== L'application =====
==== la récupération ====
Le plus simple consiste à récupérer l'URL pour télécharger l'archive (**.tar.gz**, **.tgz** ou **.zip**) depuis le site web de l'application au moyen de la commande **wget**. ainsi pour **wordpress** :
wget https://wordpress.org/latest.tar.gz # pour l'archive tar.gz
wget https://wordpress.org/latest.zip # pour l'archive zip
Le standard en matière d'archivage sous Linux étant les fichiers **.tar.gz**, il est recommandé d'utiliser ce format plutôt que le format **.zip** qui s'il est utilisable, nécessite d’installer l'application **unzip** ou **zip** pour extraire l'archive.
Il est également pertinent de se positionner dans la racine du serveur web pour récupérer l'archive pour simplifier les opérations ultérieures
==== l'extraction ====
On se positionnera dans la racine du serveur web pour effectuer l'extraction.
tar xvfz latest.tar.gz
==== les droits ====
Il est fortement recommandé, pour réduire les problèmes de sécurité, de changer possesseur, groupe et droits pour les fichiers et répertoires de l'application de façon à ce qu'il soient possédés par l'utilisateur **root**, ce qui empêchera les modifications intempestives.
cd /var/www/html/appli
chown -R root:root .
chmod -R 755 .
L'application web aura également besoin d'écrire des fichiers pour stocker la configuration, les éléments dynamiques, les éléments téléchargés, les plugins et thèmes divers. Il conviendra donc de donner au serveur web la possibilité d'écrire dans les répertoires en question.
Le plus simple consiste à changer **possesseur** et **groupe** pour rendre répertoires et fichiers modifiables par l'utilisateur qui lance le service **apache** (**www-data** pour une Debian)
ainsi par example :
chown -R www-data:www-data /var/www/html/appli/config /var/www/html/appli/plugins ...
==== Le paramétrage ====
La partie finale ainsi que le paramétrage s'effectuent habituellement à l'aide d'un navigateur pointant sur le répertoire d'installation ( http://adresse-ip/appli ) ou bien sur un fichier spécifique à l'installation (par exemple : http://adresse-ip/appli/setup.php)
La plupart des scripts ou programmes d'installation sont à même de détecter les problèmes lors de l'installation :
* des modules **php** manquants
* des droits inadaptés
On remédiera aux problèmes rencontrés en installant les paquets manquants puis en redémarrant le serveur apache