Introduction
Cet article traite de l'hébergement de Joomla sur un ordinateur personnel sous Linux à des fins de test et de développement. Les versions de Linux couvertes appartiennent à la famille Debian-Ubuntu, et plus précisément Linux Mint. Les autres distributions sont similaires mais ont une syntaxe de commandes et des emplacements de fichiers différents.
Vous devez installer un ensemble de paquets logiciels souvent appelé pile LAMP. Les lettres font référence à Linux, Apache, MySQL et PHP. Vous pouvez installer les logiciels soit à l'aide de l'interface graphique (GUI), soit en ligne de commande dans une fenêtre de Terminal. Ce sont deux façons différentes d'utiliser le Gestionnaire de paquets Synaptic.
Installer Apache avec l'interface graphique
Depuis le menu système, marqué du logo LM, sélectionner Administration / Gestionnaire de paquets Synaptic. Le système vous demandera votre mot de passe. Saisir votre mot de passe de connexion pour ouvrir l'interface graphique. En haut à droite se trouve un bouton Rechercher. Le sélectionner et saisir apache puis sélectionner Rechercher. Cocher la case apache2 et dans l'étiquette contextuelle sélectionner Marquer pour installation. Une autre boîte contextuelle affichera une liste de paquets supplémentaires requis pour prendre en charge apache. Sélectionner Marquer :

Sélectionner le bouton Appliquer dans la barre d'outils supérieure, puis le bouton Appliquer dans la boîte de dialogue Résumé. Apache sera installé et configuré, le processus se terminant par une boîte de dialogue Modifications appliquées. Sélectionner Fermer.
Vous pouvez confirmer qu'Apache est installé et fonctionne en ouvrant votre navigateur, Firefox par défaut dans une nouvelle installation de Linux Mint, et en saisissant localhost dans la barre d'URL. Vous devriez voir la page par défaut d'Ubuntu Apache2 :

La page contient des informations utiles sur les emplacements de fichiers qui pourraient ne pas être aussi facilement accessibles plus tard, aussi vous pourriez vouloir imprimer cette page sur papier ou dans un fichier pdf.
Installer PHP avec la ligne de commande
Il est probablement préférable d'installer PHP en utilisant la ligne de commande. L'une des raisons est qu'au moment de la rédaction, le Gestionnaire de paquets Synaptic ne propose que PHP8.1 bien que PHP8.2 soit disponible depuis un certain temps et puisse être installé à partir d'un dépôt tiers. Il existe une bonne description de la procédure dans ce tutoriel, avec des sections Démarrage rapide et Détaillée.
Fermer d'abord l'interface graphique du Gestionnaire de paquets Synaptic, puis ouvrir une fenêtre de Terminal et saisir les commandes suivantes une à la fois :
sudo add-apt-repository ppa:ondrej/php
sudo apt update
sudo apt install php8.2 php8.2-cli php8.2-{bz2,curl,mbstring,intl}
sudo apt install php8.2-fpm
sudo a2enconf php8.2-fpm
sudo systemctl reload apache2
Dans votre navigateur, vérifiez que la page par défaut de localhost fonctionne toujours.
Installer MySQL ou MariaDb
Vous pouvez chercher sur le web des informations sur chacun de ces packs de base de données. MySQL est le choix traditionnel mais a été racheté par Oracle et est désormais moins populaire. MariaDB est un remplacement Open Source équivalent avec des fonctionnalités supplémentaires. Les deux fonctionnent avec Joomla! 5 mais il n'est pas facile de passer de l'un à l'autre. Les tables doivent être exportées puis importées. Joomla! 5 nécessite des versions minimales spécifiques que Linux Mint propose via le Gestionnaire de paquets Synaptic.
Ouvrez l'interface graphique du Gestionnaire de paquets Synaptic et recherchez mysql-server ou mariadb-server. Cochez la case de l'élément se terminant par -server. Sélectionnez Marquer pour installation puis Appliquer dans la barre d'outils en haut. Vous pouvez ouvrir le panneau Détails pour voir ce qui se passe pendant l'installation. Sélectionnez Fermer une fois terminé.
Vous pouvez tester si votre base de données fonctionne en saisissant mysql dans la ligne de commande. Ceci est identique pour MySQL et MariaDB. Vous devriez voir un message d'erreur Access denied, ce qui est normal car cela indique que l'installation de votre base de données fonctionne réellement.
Installer phpMyAdmin
phpMyAdmin est un outil de gestion de base de données avec interface graphique dont vous aurez besoin pour créer et gérer vos bases de données. Dans l'interface graphique du Gestionnaire de paquets Synaptic, recherchez phpmyadmin. Cochez sa case et sélectionnez Marquer pour installation. Après le téléchargement, une invite vous demande de sélectionner le Webserver à reconfigurer automatiquement. Cochez la case apache2 puis cliquez sur le bouton Suivant. À l'écran de configuration suivant, laissez la case Configure database... cochée et sélectionnez Suivant.
Choisissez un mot de passe applicatif pour l'utilisateur phpmyadmin. Test : dans votre navigateur, saisissez localhost/phpmyadmin dans la barre d'URL. Vous devriez voir l'écran de connexion de phpMyAdmin. Avec l'identifiant phpmyadmin et le mot de passe saisi lors de l'installation, vous pourrez vous connecter. Mais vous ne pourrez créer aucune base de données ! Pour résoudre ce problème, vous devez modifier le fichier de configuration en tant que root dans la fenêtre de Terminal :
sudo nano /etc/phpmyadmin/config.inc.php
Trouvez les deux lignes contenant // $cfg['Servers'][$i]['AllowNoPassword'] = TRUE; et retirez les barres obliques en début de ligne pour les décommenter. Les deux !
Ensuite, connectez-vous à mysql depuis la ligne de commande et créez un nouvel utilisateur auquel vous accordez tous les privilèges :
sudo mysql
CREATE USER 'admin'@'localhost' IDENTIFIED BY '';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION;
exit
Retournez ensuite dans phpMyAdmin et essayez de vous connecter avec l'identifiant admin et aucun mot de passe. Vous devriez voir toutes les bases de données et pouvoir en créer de nouvelles.
Priorité des fichiers d'index
L'emplacement par défaut des pages web sur Ubuntu/Linux Mint est /var/www/html. Si vous listez le contenu de ce répertoire, vous verrez qu'il contient index.html, qui contient le contenu de la page par défaut d'Apache2 sous Ubuntu. Créez un fichier nommé index.php dans ce répertoire avec le contenu suivant :
<?php echo phpinfo();
Rechargez localhost. Il n'y a aucun changement ! Saisissez localhost/index.php dans la barre d'URL et vous verrez une page contenant les informations de version de PHP. Ce comportement est contrôlé par la configuration par défaut d'Apache, qui peut être modifiée en activant le module dir d'Apache et en éditant sa configuration :
sudo a2enmod dir
sudo nano /etc/apache2/mods-enabled/dir.conf
Déplacez index.php au début de la liste. Puis redémarrez Apache :
sudo systemctl restart apache2
Cette fois, en utilisant localhost seul dans la barre d'URL, vous devriez voir le contenu du fichier index.php, une page d'informations PHP.
Hôtes virtuels
Dans une installation Linux par défaut, les fichiers système se trouvent dans le dossier racine (/) et les fichiers de données utilisateur dans le dossier personnel (/home/monidentifiant). Cela représente un risque potentiel car l'utilisateur Apache par défaut, www-data, peut ne pas avoir les droits appropriés pour créer des fichiers dans l'espace de l'utilisateur. La meilleure solution est de créer des hôtes virtuels.
Tout d'abord, un module est nécessaire pour permettre à Apache de basculer son utilisateur et son groupe pour s'adapter à chaque utilisateur :
sudo apt-get install libapache2-mpm-itk
sudo a2enmod mpm_itk
Ensuite, faites une copie du fichier de configuration du site par défaut et modifiez-le :
cd /etc/apach2/sites-available
sudo cp 000-default.conf identifiant.localhost.conf
sudo nano identifiant.localhost.conf
Le fichier de configuration du site par défaut contient des commentaires expliquant son contenu. Ils ont été omis dans l'illustration ci-dessous. Décommentez la ligne ServerName et remplacez toutes les occurrences de username par votre propre identifiant.
<VirtualHost *:80>
ServerName username.localhost
ServerAdmin webmaster@localhost
DocumentRoot /home/username/public_html
<IfModule mpm_itk_module>
AssignUserId username username
</IfModule>
<Directory /home/username/public_html/ >
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Activez le nouveau site et redémarrez Apache :
sudo a2ensite identifiant.localhost
sudo systemctl reload apache
Ajoutez une entrée dans le fichier /etc/hosts pour ajouter une entrée pour le nouvel hôte virtuel. Sinon, votre navigateur le cherchera sur internet.
sudo nano /etc/hosts
Une fois terminé, cela ressemblera à ceci :
127.0.0.1 localhost
127.0.0.1 username.localhost
127.0.1.1 hostname
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
Nom d'hôte : C'est le nom que vous avez donné à votre ordinateur lors de l'installation de Linux. Vous en aurez besoin sous peu. Vous pouvez le modifier si vous le souhaitez - mais il est préférable de vous renseigner d'abord à ce sujet.
Si tout se passe bien, avec une URL de la forme identifiant.localhost, vous verrez une liste du contenu de votre répertoire public_html. L'affichage public du contenu des répertoires est considéré comme une mauvaise pratique, un risque de sécurité, et est généralement interdit par un autre paramètre de configuration d'Apache. Cependant, pour un site personnel sur un ordinateur personnel utilisé pour le développement et les tests, c'est très utile. De nombreux sites différents peuvent être configurés dans différents sous-répertoires. Par exemple, des sites Joomla 4 et Joomla 5, des forums, des wikis, etc. Lorsque vous avez beaucoup de sites de test, il est difficile de se souvenir de tous les noms de sous-répertoires !
Accès au réseau domestique
Si vous avez un autre ordinateur sur votre réseau domestique, vous souhaiterez probablement accéder également à votre site Linux depuis celui-ci. Pour que cela fonctionne, vous avez besoin d'un autre hôte virtuel. Copiez et modifiez celui que vous venez de créer :
cd /etc/apache2/sites-available
sudo cp identifiant.localhost.conf identifiant.conf
sudo nano identifiant.conf
Remplacez le ServerName de identifiant.localhost par identifiant.hostname, puis activez le nouvel hôte virtuel et redémarrez Apache.
sudo a2ensite username
sudo apachectl restart
Allez sur votre autre ordinateur sur le réseau domestique et modifiez son fichier hosts personnel. Par exemple, sur un Mac, modifiez /private/etc/hosts et ajoutez la ligne suivante au bas du fichier :
192.168.178.20 username.hostname www.username.hostname
Où 192.168.178.20 est l'adresse IP de votre ordinateur Linux.
Maintenant, depuis votre second ordinateur, vous devriez pouvoir accéder au serveur web de votre ordinateur Linux en saisissant username.hostname dans la barre d'URL de votre navigateur.
Remarques sur les partitions
Les logiciels installés à l'aide du Gestionnaire de paquets Synaptic se trouvent généralement dans le répertoire racine de Linux (/). Les données utilisateur sont situées dans le répertoire personnel (/home). Dans une installation simple, ces répertoires se trouvent sur la même partition physique du disque.
Dans une installation plus complexe, par exemple avec la possibilité de démarrer différents systèmes d'exploitation (Windows ou Linux) ou différentes versions du même système d'exploitation, la racine et les données utilisateur se trouvent souvent sur des partitions distinctes. Cela permet d'accéder aux mêmes données utilisateur depuis chaque système d'exploitation.
Il y a un inconvénient : un site Joomla situé dans un répertoire /home/username a besoin de données de base de données qui se trouvent généralement dans le répertoire racine, plus précisément dans /var/lib/mysql. Vous pouvez déplacer le répertoire de données MySQL/MariaDB vers un emplacement accessible aux deux systèmes d'exploitation, soit dans la partition /home, soit dans une partition séparée. Ce tutoriel décrit comment modifier le répertoire de données MySQL sous Ubuntu et Debian Linux. Cela doit être fait pour chaque système d'exploitation, mais n'est pas abordé ici.