Red Hat et dérivées version SERVEUR

Red Hat, Alma Linux : Installer et configurer un serveur LAMP (8 et 9)

Table des matières

lamp_logo



Introduction



LAMP est un acronyme :
  • Linux : Le système d'exploitation
  • Apache : Le serveur Web
  • MariaDB : Le serveur de Base de données (Fork de MySQL)
  • PHP : Le langage de script

Avec LAMP, on peut donc mettre en place un serveur Web, hébergeant un site web dynamique écrit en PHP, tout en allant chercher des données dans une base MariaDB.

Ce tutoriel est identique pour les bases Red Hat 8 et 9

Installation des prérequis



On va donc installer Apache (le paquet est httpd), Le client MariaDB, PHP, et les modules PHP permettant la connexion à la base de données + la couche SSL :

Code BASH :
dnf install httpd php mariadb php-{gd,pdo,xml,mbstring,zip,mysqlnd,opcache,json} mod_ssl openssl


L'extension php-mysqlnd installée grâce à la précédente commande permet à PHP de pouvoir communiquer avec les bases MySQL / MariaDB.

La partie base de données est traitée dans l'article dédia suivant : https://www.linuxtricks.fr/wiki/red-hat-alma-linux-installer-et-configurer-un-serveur-de-base-de-donnees-mariadb-8-et-9


Configuration du système



Si SELinux est actif, on active ce booléen permettant à httpd d'écrire dans le répertoires d'apache
Code BASH :
setsebool -P httpd_unified on

Et on autorise dans le pare-feu le protocole http (ici si la zone de l'interface est public) :
Code BASH :
firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --reload


Configuration des services



Activation et démarrage des services



On active les services concernés au démarrage :

Pour Apache :

Code BASH :
systemctl enable --now httpd.service


Pour PHP-FPM :

Code BASH :
systemctl enable --now php-fpm.service


Fichiers de configuration



Apache2



Fichier de configuration httpd.conf



Le fichier de configuration principal d'Apache est /etc/httpd/conf/httpd.conf

On peut sauvegarder le fichier original de configuration d'Apache avant toute modification :

Code BASH :
cp /etc/httpd/conf/httpd.conf ~/httpd.conf.backup


Vous pouvez aussi inclure vos propres fichiers de configuration dans /etc/httpd/conf.d/*.conf

Mise en place de site dans des VirtualHosts



On peut aussi créer des VirtualHosts pour chaque site web.
Voici une idée de config d'un site :
Code BASH :
NameVirtualHost *:80
 
<VirtualHost *:80>
    ServerAdmin webmaster@example.com
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com/public_html/
    ErrorLog /var/www/example.com/logs/error.log
    CustomLog /var/www/example.com/logs/access.log combined
</VirtualHost>


Les lignes ErrorLog et CustomLog ne sont pas nécessaires mais peuvent aider pour déboguer ou faire une analyse fine des éventuels dysfonctionnements.
On créé les ressources nécessaires :

Code BASH :
mkdir -p /var/www/example.com/public_html
mkdir /var/www/example.com/logs


Et bien sûr on recharge le démon httpd après chaque modification de configuration
Code BASH :
systemctl reload httpd.service


Vous trouverez plus d'information concernant les Virtualhosts ici : https://www.linuxtricks.fr/wiki/apache-les-virtual-hosts

PHP



Fichier de configuration php.ini



Le fichier de configuration de PHP est /etc/php.ini

Après chaque modification, il est nécessaire de recharger httpd et pfp-fpm :
Code BASH :
systemctl reload httpd

Code BASH :
systemctl restart php-fpm


Les lignes commentées sont précédées d'un point-virgule.

Quelques astuces php.ini



Vous pouvez retrouver les astuces, les personnalisations de PHP ici : https://www.linuxtricks.fr/wiki/php-configuration-et-securisation

Configuration pour un serveur web Sécurisé (SSL) avec Let's Encrypt



Un article est dédié à la mise en place de Let's Encrypt ainsi que de la modification du VirtualHost à cette adresse : https://www.linuxtricks.fr/wiki/let-s-encrypt-mise-en-place

Aller plus loin avec PHP



RHEL et dérivées : Installer une autre version de PHP grâce aux modules https://www.linuxtricks.fr/wiki/rhel-et-derivees-installer-une-autre-version-de-php-grace-aux-modules


Installer phpMyAdmin



Suite à plusieurs demandes, j'ai réalisé un article d'installation de phpMyAdmin sous CentOS 8 ici : https://www.linuxtricks.fr/wiki/centos-installer-phpmyadmin

SElinux



Si vous avez des soucis d'accès à un dossier (exemple CMS qui n'a pas les droits malgré chown ou chmod correct), il faut appliquer le contexte correct au dossier :

Code BASH :
chcon -R -t httpd_sys_rw_content_t /var/www/html/ledossier
Cette page a été vue 53614 fois