Ubuntu 22.04 : installer un serveur LAMP (Linux Apache MariaDB PHP)

Présentation de LAMP

Dans ce tutoriel, je vais vous expliquer comment installer un serveur LAMP sur Ubuntu 22.04.

LAMP signifie Linux Apache MariaDB PHP, c’est un ensemble de logiciel que l’on retrouve très souvent quand on souhaite faire fonctionner un serveur Web.

Avec LAMP vous pouvez faire fonctionner :

  • Les CMS les plus connu comme WordPress
  • GLPI
  • Nextcloud
  • Les applications utilisant Symfony, CakePHP

Pour la partie Linux, je vais utiliser la distribution Ubuntu 22.04.

En plus de l’installation des composants, je vais vous donner quelques explications dans ce tutoriel ainsi quelques éléments de configuration.

Je ne vais pas parler dans ce tutoriel de l’installation de Ubuntu et on va directement passer à la partie logiciel AMP.

Apache2 – Serveur Web

Apache2 va être le service Web, il va être en charge de traiter les requêtes HTTP et HTTPS.

Installation d’Apache2 sur Ubuntu 22.04

Pour installer Apache2 entrer la commande suivante :

sudo apt install apache2

Confirmer l’installation des paquets, on peut ajouter -y à la commande d’installation pour ne pas avoir de confirmation

Patienter pendant l’installation d’Apache2 …

Le serveur Apache2 est installé.

Tester le fonctionne d’Apache 2

Le plus simple pour tester le fonctionnement c’est d’accéder au serveur.

Lancer un navigateur et entrer l’adresse IP du serveur comme url http://w.x.y.z

Vous devriez arriver sur la page suivante :

La page d’index se trouve dans le dossier suivant : /var/www/html

Ce dossier contient le contenu du site par défaut.

Les fichiers de configuration d’Apache2

Les fichiers de configuration d’Apache se trouve à l’emplacement suivant sur Ubuntu 22.04 : /etc/apache2

Le fichier principal de configuration d’Apache2 est apache2.conf.

Sur Ubuntu et Debian on retrouve plusieurs dossiers du genre :

  • xxxxx-available
  • xxxxx-enabled

Dans les dossiers xxxxx-available on va trouver des éléments de configuration disponible non appliqué à Apache2 et dans le dossier xxxxx-enabled on va trouver les configurations qui sont chargées.

Généralement pour appliquer une configuration, on fait un lien symbolique du fichier qui se trouve dans xxxxx-available dans le dossier xxxxx-enabled.

Quelques commandes utiles pour Apache2

Voici une liste de commandes pour Apache2 :

Afficher l’état du service :

sudo systemctl status apache2

Recharger la configuration d’Apache2

sudo systemctl reload apache2

Arrêter le service Apache2 :

sudo systemctl stop apache2

Démarrer le service Apache2 :

sudo systemctl start apache2

Redémarrer le service Apache2 :

sudo systemctl restart apache2

Activer le service Apache2 au démarrage de Ubuntu :

sudo systemctl enable apache2

Tester la configuration des fichiers Apache2 :

sudo apachectl configtest

Apache2 : créer un virtualhost basé sur le nom

L’ajout d’un virtualhost permet de faire fonctionner plusieurs sites Internet sur un même serveur Web Apache2.

Le fait que cela soit basé sur le nom (URL) permet à plusieurs virtualhosts d’utiliser la même adresse IP et les port 80 et 443. Apache2 va utiliser le url (nom de domaine) pour traiter les requêtes et fournir le bon contenu.

Pour illustrer ce tutoriel, je vais créer un virtualhost basé sur le nom qui aura pour url lamp.rdr-it.com

Commencer par créer un dossier qui va recevoir les fichiers :

sudo mkdir /var/www/lamp

Dans le dossier /etc/apache2/sites-available, on va créer un fichier qui va contenir la configuration du site Internet.

sudo nano /etc/apache2/sites-available/lamp.rdr-it.com.conf

Voici le contenu du fichier :

Eléments à éditer :

  • Ligne 2 : ServerName est le nom du domaine du site Internet
  • Ligne 5 : DocumentRoot indique le chemin où les fichiers du sites sont stockés sur le serveur (correspond au dossier créé précédemment).
  • Ligne 7 et 8 : Nom des fichiers de logs Apache2

On va maintenant créer un lien symbolique du fichier dans le dossier /etc/apache2/sites-enables pour activer la configuration du virtualhost.

sudo ln -s /etc/apache2/sites-available/lamp.rdr-it.com.conf /etc/apache2/sites-enabled/

Tester la configuration d’Apache 2 :

sudo apachectl configtest

Si aucune erreur bloquante est retournée, redémarrer le service Apache2 :

sudo systemctl restart apache2

Vous avez maintenant un site qui peut répondre à l’URL http://lamp.rdr-it.com.

Pour que le virtualhost fonctionne, vous devez faire pointer le nom domaine vers l’IP du serveur Apache2 et créer un fichier index.html à minima.

Ajouter les règles UFW pour Apache2

Si vous avez activer le pare-feu sur Ubuntu 22.04 avec UFW, vous devez ajouter des règles pour autoriser le trafic vers les port 80 et 443 de Apache.

Pour cela plusieurs solutions :

Utiliser les applications :

sudo ufw allow Apache Full

Par ports pour autoriser le trafic sur le port 80 et 443 :

sudo ufw allow 80
sudo ufw allow 443

MariaDB – Serveur de base de données

On va maintenant passer au serveur de Base de données qui va permettre de stocker les données, dans ce tutoriel, je vais utiliser MariaDB, pour MySQL c’est quasiment le même chose.

Installer MariaDB sur Ubuntu 22.04

Pour installer le serveur de base de données MariaDB entrer la commande suivante :

sudo apt install mariadb-server -y

Sur la capture, je n’avais pas mis l’option -y, j’ai du confirmer le choix.

Une fois l’installation terminée, vérifier le fonctionnement du serveur MariaDB :

sudo systemctl status mariadb

Le serveur MariaDB est installé et fonctionnel.

Création d’une base de données et d’un utilisateur

Maintenant, on va créer une base de données (lamp) et un utilisateur (lamp) sur le serveur MariaDB.

Pour commencer, il faut se connecter au serveur MariaDB avec la commande suivante :

sudo mysql

Maintenant, on va utiliser le langage SQL pour la création de la base de données, l’utilisateur et l’affectation des droits.

Pour créer la base de données :

CREATE DATABASE lamp;

Pour vérifier que la base de données a été créée, entrer la requête suivante :

SHOW DATABASES;

On va maintenant créer l’utilisateur lamp qui aura pour mot de passe lamp-password et qui pourra se connecter depuis n’importe quelle adresse IP :

CREATE USER 'lamp'@'%' IDENTIFIED BY 'lamp-password';

Le % permet de se connecter depuis n’importe quelle adresse IP, pour limiter la connexion en local remplacer par localhost.

Il faut maintenant donner les droits sur la base de données à l’utilisateur, pour cela passer les requêtes suivantes :

GRANT ALL PRIVILEGES ON lamp.* TO 'lamp'@'%';
FLUSH PRIVILEGES;

La première requête donne tous les droits sur tables (.*) de la base de données lamp à l’utilisateur ‘lamp’@’%’

La second requête permet de recharger les droits.

Sur MariaDB, un utilisateur est identifié par son login et d’où il peut se connecter, c’est pour cela que l’utilisateur est xxx@yyy et pas juste xxx, ce qui permet d’attribuer des droits différents en fonction d’où se connecte l’utilisateur.

Pour afficher les autorisations d’un utilisateur :

SHOW GRANTS FOR 'lamp'@'%';

Compléments sur MariaDB

Voici quelques informations supplémentaires sur MariaDB.

Les fichiers de configuration se trouve dans le dossier suivant : /etc/mysql

Pour des raisons de compatibilité, le nom du dossier est mysql

Dans les commandes, on peut soit utiliser mysql ou mariadb.

Les fichiers des bases de données se trouvent dans : /var/lib/mysql.

Les logs de MariaDB se trouvent dans le dossier : /var/log/mysql.

PHP

Dernier composant du stack LAMP est PHP, qui est un langage de programmation / script très utiliser dans le développement.

Avec Apache, il y a deux façon de faire fonctionner PHP :

  • Module PHP qui intègre PHP à travers un module Apache qui nécessite aucune configuration
  • PHP-FPM qui fonctionne comme un service indépendant et qui permet plus de souplesse et de configuration

Dans ce tutoriel, je vais vous montrer les deux.

Personnellement je préfère utiliser de PHP-FPM qui utilise un service séparé qui permet de dissocier Apache de PHP.

De plus l’utilisation de PHP-FPM permet de faire fonctionner plusieurs versions différentes de PHP simultanément.

Au moment de la rédaction de se tutoriel, sur les dépôts Ubuntu 22.04, la version fournit est PHP 8.1

Si vous souhaitez d’autre version de PHP, il faut passer par le dépôt ppa:ondrej/php.

Installer de PHP en tant que module Apache

Pour installer PHP entrer la commande suivante :

sudo apt install php libapache2-mod-php php-mysqli -y

Une fois l’installation terminée, entrer la commande suivante pour tester PHP :

php -v

Cette commande permet d’afficher la version de PHP

On va maintenant tester PHP à travers Apache avec un fichier php que l’on va mettre dans le dossier /var/www/html.

Créer le fichier phpinfo.php

sudo nano /var/www/html/phpinfo.php

Copier le contenu suivant dans le fichier :

Depuis un navigateur aller à l’adresse suivante : http://ip-lamp-server/phpinfo.php

La page suivante s’affiche :

Server API nous indique Apache 2.0 Handler, ce qui indique que le module PHP de Apache a été utilisé

PHP-FPM avec Apache2

Maintenant, on va voir comment passer avec PHP-FPM avec Apache2.

Si vous avez installer le Module PHP d’Apache on va d’abord le désactiver :

sudo a2dismod php8.1

Redémarrer Apache :

sudo systemctl restart apache2

Pour valider que le Module PHP est désactivé affiche la page phpinfo.php, vous devriez avoir le code la page car le code PHP n’est plus interprété.

Installer PHP-FPM :

sudo apt install php php-fpm php-mysql

Vérifier que le service php-fpm est démarré :

sudo systemctl status php8.1-fpm

Pour fonctionner, il faut activer deux modules sur Apache :

sudo a2enmod proxy_fcgi proxy

Redémarrer Apache pour la prise en compte des nouveaux modules :

sudo systemclt restart apache2

On va pouvoir passer à la configuration du virtualhost, avant on va afficher les processus PHP :

ll /run/php

Ici, j’ai seulement un processus pour PHP 8.1 en FPM (php8.1-fpm.sock)

Maintenant, il faut indiquer à Apache que les fichiers .php doivent être traité par php-fpm.

Cette directive se fait dans les fichiers des virtualhost.

Ici, on va modifier le virtualhost par défaut :

sudo nano /etc/apache2/sites-available/000-default.conf

Dans la partie VirtualHost ajouter :

Tester la configuration de Apache :

sudo apachectl configtest

Redémarrer Apache :

sudo systemctl restart apache2

Afficher de nouveau la page phpinfo.php.

Ici on peut voir au niveau de Server API que l’on a FPM/FastCGI


Vous savez maintenant comment un installer un serveur LAMP sur Ubuntu 22.04.

Ce tutoriel doit pouvoir être appliquer sur Ubuntu 20.04 et Debian.




Laisser un commentaire