6
septembre
2022
Réinstallation du serveur Web Apache2 sur Linux Mint 21 et installation de PHP 8.1
16:34

Réinstallation du serveur Web Apache2 sur Linux Mint 21 et installation de PHP 8.1

6 septembre 2022 16:34

Après être passé à Linux Mint 21 "Vanessa", basé sur la base de paquets Ubuntu Jammy, Apache2 a cessé de fonctionner.
La façon dont j'ai restauré le serveur Web est décrite ci-dessous.

Problèmes de démarrage du serveur Web Apache2

Le problème était le suivant : après la réinstallation de Linux Mint, le service « apache2 » n'a pas démarré :
sudo service apache2 start
Le travail pour Apache2.service a échoué car le processus de contrôle s'est terminé avec un code d'erreur.
Voir "systemctl status apache2.service" et "journalctl -xeu apache2.service" pour plus de détails.
Les journaux montrent que le service ne trouve pas le fichier de configuration /etc/apache2/apache2.conf.

Une tentative de réparation en réinstallant n'a abouti à rien :
sudo apt-get update && sudo apt-get purge apache2 && sudo apt-get install apache2

De plus, après avoir complètement désinstallé Apache2, des traces de l'ancienne installation de « which apache2 » sont restées

  • devrait afficher une ligne vide, mais la sortie était différente, pointant vers le dossier /usr/sbin.

Résoudre le problème

1) Supprimez l'ancienne version

sudo apt-get purge apache2

2) Supprimer les traces de l'installation précédente

sudo apt-get autoremove
sudo rm /usr/sbin/apache2

3) Ajouter un référentiel PPA "ondrej/apache2" et mettez à jour le cache du package :

Commentaire. Si le système d'exploitation est Debian, alors il n'a pas la commande "apt-add-repository" par défaut.

uniquement sur Debian, les autres n'ont pas besoin d'être exécutés en premier :

sudo apt-get install software-properties-common
sudo apt-get update

Sur Ubuntu et Linux Mint :

sudo apt-add-repository ppa:ondrej/apache2
sudo apt-get mise à jour

4) Installez Apache2

sudo apt-get install apache2

5) Vérifiez la configuration

sudo apache2ctl configtest

Message d'erreur :
AH00558 : apache2 : impossible de déterminer de manière fiable le nom de domaine complet du serveur, à l'aide de 127.0.0.1. Définissez globalement la directive 'ServerName' pour supprimer ce message

Vous devez spécifier le nom ou l'adresse IP du serveur Web dans la directive 'ServerName' du fichier de configuration

sudo nano /etc/apache2/apache2.conf

Plus près du début du fichier, ajoutez la ligne

ServerName linux-pc

où linux-pc est le nom affiché dans le terminal après le symbole @

Enregistrez la configuration Ctrl+O, Ctrl+X

6) Démarrez le service Apache2 :

sudo service apache2 start

7) Vérifiez le fonctionnement du serveur Web en ouvrant le navigateur et en vous rendant à l'adresse, en ajoutant toujours le préfixe http://

Par exemple,http://linux-pc

8) Configurez les hôtes virtuels dans le dossier « /etc/apache2/sites-available »

Exemple de fichier de test (contenu sans commentaires grep -v "^[[:blank:]]#" test.conf) :

<VirtualHost *:80>
ServerName test
ServerAdmin webmaster@localhost
DocumentRoot /home/user/test/
<Directory "/home/user/test">
Options Indexes MultiViews
AllowOverride None
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/errortest.log
CustomLog ${APACHE_LOG_DIR}/accesstest.log combined
</VirtualHost>

9) créez des liens symboliques à partir du répertoire activé par les sites :

cd /etc/apache2/sites-enabled

sudo ln -s ../sites-available/test.conf test.conf

Nous vérifions :

ls -l

10) Ajouter un alias dans le fichier hosts

sudo nano /etc/hosts

127.0.0.1 test

Ctrl+O, Ctel+X

12) Relisez la configuration ou redémarrez le service Apache2 comme suit :

sudo service apache2 reload

13) Nous vérifions le fonctionnement du site Internet en allant sur http://test

14) Si le contenu du fichier est affiché à la place du résultat du travail PHP (puisque le site est en langage PHP),

vous devez réinstaller le module PHP pour Apache2

Tout d'abord, découvrons quels modules PHP pour Apache2 sont disponibles pour l'installation :

apt-cache search libapache2-mod-php*

Par exemple, il existe des modules pour Apache2 : php 7.4 et php8.1

Ensuite, nous décidons quel php est nécessaire pour le projet. Par exemple, si le moteur de template Twig possède une ancienne version, sélectionnez 7.4, sinon 8.1

libapache2-mod-php8.1 - langage de script embarqué en HTML, exécuté côté serveur (module Apache 2)
libapache2-mod-php7.4 - package de transition

J'installe d'abord php de la version appropriée et php pour la ligne de commande.

sudo apt-get install php8.1 php8.1-cli

J'attribue php 8.1 comme « maître » s'il y a plusieurs configurations parallèles et versions de php

sudo update-alternatives --config php

Je supprime le module libapache2-mod-php8.1 avec libapache2-mod-php(cette astuce résout de nombreux problèmes) :

sudo apt purge libapache2-mod-php8.1 libapache2-mod-php

J'installe immédiatement un seul module libapache2-mod-php8.1 :

sudo apt install libapache2-mod-php8.1

Nous autorisons le lancement du module php8.1 pour Apache avec la commande :

sudo a2enmod php8.1

La console affiche des messages sur l'enregistrement réussi du module

Considering dependency mpm_prefork for php8.1:

Considering conflict mpm_event for mpm_prefork:

Considering conflict mpm_worker for mpm_prefork:

Module mpm_prefork already enabled

Considering conflict php5 for php8.1:

Module php8.1 already enabled

15) Ouvrez le site Web à l'adresse http://test. Si quelque chose ne fonctionne pas, vérifiez les journaux

su -
cd /var/log/apache2
tail errortest.log

16)Le programme doit être débogué. les erreurs sont souvent associées à l'incompatibilité des anciennes versions des frameworks (fournisseur) avec la nouvelle version de php 8.1.
D'autres problèmes sont résolus localement, dans le code du programme PHP, sur la base de l'analyse des logs du répertoire /var/log/apache2.


Mise à jour du 22/11/22 : Activation de PHP 8.1 dans le serveur web Apache2

Si la commande apt upgrade indique que PHP 8.1 dans Apache2 n'est pas activé par défaut

NOTICE: Not enabling PHP 8.1 FPM by default.

NOTICE: To enable PHP 8.1 FPM in Apache2 do:

NOTICE: a2enmod proxy_fcgi setenvif

NOTICE: a2enconf php8.1-fpm

NOTICE: You are seeing this message because you have apache2 package installed.

Activez PHP 8.1 dans Apache2 :

sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php8.1-fpm
sudo systemctl reload apache2

Vérification de la version PHP :

php --version

Statut du service « Le gestionnaire de processus PHP 8.1 FastCGI » :

systemctl status php8.1-fpm

Le résultat de la commande phpinfo() ;
PHP Version 8.1.2-1ubuntu2.8



Publications connexes