Dans cet article, je propose de mettre en oeuvre à nouveau un site web réalisé avec Joomla sur en ancien Mac Mini de 2019. Ce dernier a été remisé il y a quelques temps. J'ai décidé de le ressortir afin qu'il serve cet fois ci de serveur Web. Pour cela, je choisis encore MacPort car ce dernier offre un accès à des logiciels plus spécifiques ou plus anciens, que Homebrew ne propose pas toujours. Surtout sur un système ancien (de dix ans) comme Os X El Capitan. Je choisi encore Macport pour son environnement de développement totalement isolé du système natif. Tout est installé tout dans un répertoire séparé (/opt/local).
Ce dont vous avez besoin
- Un Mac qui répond aux exigences minimales d'OS X El Capitan 10.11.6.
- Un nom de domaine dont vous êtes propriétaire. (Voir OVH si nécessaire)
- Xcode (version 8.2.1).
- CommandLineTools.
- Visual Studio Code (version 1.54.1) pour El Capitan.
- L'application GasMask (version 0.8.6)
- MacPort pour El Capitan - https://www.macports.org/install.php
- Joomla V3 (Au dela de cette version, Joomla est incompatible)

Mac Mini de 2019.
CHAPITRE 1 - AFFICHER LES FICHIERS CACHÉS DU MAC MINI
Afficher les fichiers cachés
defaults write com.apple.Finder AppleShowAllFiles true
killall Finder

Affichage des fichiers cachés.
CHAPITRE 2 - INSTALLATION ET PREMIÈRE EXÉCUTION DE XCODE


Installation de Xcode.


Premère exécution de Xcode.
Fin de la première exécution de Xcode.
CHAPITRE 3 - INSTALLATION DE COMMANDLINETOOLS
xcode-select --install
xcode-select -p --> Vérification que tout est installé correctement
Installation de CommandLineTools.
CHAPITRE 4 - CRÉATION D'UN DOSSIER SITE
Création d'un dossier "Sites" dans le dossier de l'utilisateur principal ainsi que les dossiers bsalado.eu et phpmyadmin.
cd /Users/administrateur
mkdir -p Sites
cd /Users/administrateur/Sites
mkdir -p bsalado.eu
mkdir -p phpmyadmin

Création des dossiers.
CHAPITRE 5 - GÉRER LA VARIABLE PATH POUR VISUAL STUDIO CODE

Gestion de la variable PATH pour l'application Visual Studio Code.
CHAPITRE 6 - INSTALLATION DE MACPORT

Le package de Macport pour El Capitan.

Installation de MacPort.
CHAPITRE 7 - GESTION DE LA VARIABLE PATH
Gestion du PATH pour MacPorts
export PATH=/opt/local/bin:/opt/local/sbin:$PATH
Vérification du PATH
echo $PATH

Gestion de la variable PATH.
CHAPITRE 8 - INSTALLATION ET GESTION DU SERVEUR APACHE
Installation du serveur Apache
sudo port install apache2

Installation du serveur Apache.
Edition du fichier de configuration d'Apache
sudo code /opt/local/etc/apache2/httpd.conf

Edition du fichier de configuration d'Apache.
Modification à effectuer dans le fichier de configuration d'Apache
LoadModule vhost_alias_module lib/apache2/modules/mod_vhost_alias.so
LoadModule userdir_module lib/apache2/modules/mod_userdir.so
#
# Virtual hosts
Include /opt/local/etc/httpd/extra/httpd-vhosts.conf
#
# User home directories
Include /opt/local/etc/apache2/extra/httpd-userdir.conf
#
ServerName localhost:80
#
User administrateur
Group staff
#
DocumentRoot "/Users/administrateur/Sites"
<Directory "/Users/administrateur/Sites">
Options Indexes FollowSymLinks
AllowOverride All
#
#
Require all granted
#
#
</Directory>
Création des fichiers suivants httpd-vhosts.conf et httpd-userdir.conf
sudo mv /opt/local/etc/apache2/extra/httpd-vhosts.conf.orig /opt/local/etc/apache2/extra/httpd-vhosts.conf
sudo mv /opt/local/etc/apache2/extra/httpd-userdir.conf.orig /opt/local/etc/apache2/extra/httpd-userdir.conf
Création des fichiers de configuration.
Modification du fichier httpd-userdir.conf
sudo code /opt/local/etc/apache2/extra/httpd-userdir.conf
A copier dans le fichier les instructions suivantes :
# Settings for user home directories
#
# Required module: mod_authz_core, mod_authz_host, mod_userdir
#
# UserDir: The name of the directory that is appended onto a user's home
# directory if a ~user request is received. Note that you must also set
# the default access control for these directories, as in the example below.
#
UserDir Sites
#
# Control access to UserDir directories. The following is an example
# for a site where these directories are restricted to read-only.
#
<Directory "/Users/*/Sites">
AllowOverride FileInfo AuthConfig Limit Indexes
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
Require method GET POST OPTIONS
</Directory>
Modification du fichier de configurationhttpd-userdir.conf.
Modification du fichier httpd-vhosts.conf
sudo code /opt/local/etc/apache2/extra/httpd-vhosts.conf
<VirtualHost *:80>
ServerAdmin
#ServerName bsalado.eu
DocumentRoot "/Users/administrateur/Sites/bsalado.eu"
<Directory "/Users/administrateur/Sites/bsalado.eu">
Options -Indexes +FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
Modification du fichier de configuration httpd-vhosts.conf.
Vérification du fichier de configuration, arrêt et redémarrage du serveur Apache
sudo /opt/local/sbin/apachectl -t
sudo port unload apache2
sudo port load apache2

Vérification de la configuration d'Apache et redémarrage du serveur.
Création d'un fichier index.html dans le dossier bsalado.eu et connexion avec Safari
sudo code /Users/administrateur/Sites/bsalado.eu/index.html

Création du fichier index.html.
Contenu du fichier index.html
<html><body><h1>It works on Sites folder!</h1></body></html>
Connexion avec l'adresse http://localhost sur le navigateur Safari d'Apple.

Connexion avec Safari.
CHAPITRE 9 - INSTALLATION DE PHP
À vous de choisir la version PHP que vous souhaitez mettre en place. Pour ma part, j'installe la version 7.4.
Installation de la version 7.4 de PHP
sudo port install php74

Installation de PHP 7.4
Attention au message à la fin de l'installation !
Copier le fichier php.ini-production et renommer le en php.ini
sudo cp /opt/local/etc/php74/php.ini-production /opt/local/etc/php74/php.ini
Installation de PHP Handler pour PHP 8.3
Si vous ne l'avez pas encore fait, il faut exécuter l'application "Xcode" avant d'exécuter cette commande. Il faut aussi avoir installer "CommandLineTools". A défault, il est impossible d'installer le handler pour PHP.
sudo port install php74-apache2handler

Installation du handler.
Attention au message à la fin de l'installation !

Activation du module dans le fichier de configuration d'Apache
cd /opt/local/lib/apache2/modules
sudo /opt/local/bin/apxs -a -e -n php mod_php74.so
sudo code /opt/local/etc/apache2/httpd.conf

Ajout du module PHP dans le fichier de configuration d'Apache.
Changement à effectuer dans le fichier de configuration d'Apache
<IfModule dir_module>
DirectoryIndex index.html index.php
</IfModule>
...
<IfModule php_module>
# DirectoryIndex index.html default.php index.php
DirectoryIndex index.php
AddHandler application/x-httpd-php .php
</IfModule>
...
Rechercher cette condition et ajouter les 2 lignes
<IfModule mime_module>
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
</IfModule>
Vérification du fichier de configuration, arrêt et redémarrage du serveur Apache
sudo /opt/local/sbin/apachectl -t
sudo port unload apache2
sudo port load apache2

Vérification de la configuration d'Apache et redémarrage du serveur.
Création d'un fichier index.php dans le dossier bsalado.eu
Suppression du fichier index.html
sudo rm /Users/administrateur/Sites/bsalado.eu/index.html
Création d'un fichier index.php
sudo code /Users/administrateur/Sites/bsalado.eu/index.php

Contenu du fichier index.php.
<?php phpinfo();?>
Connexion avec Safari à l'adresse suivante http://localhost

Affichage du fichier index.php.
CHAPITRE 10 - INSTALLATION DE MYSQL
Installation de MySQL (processus long)
Attention !!!
La version 8 de MySQL pose problème. L'installation échoue systématiquement sur mon Mac Mini. Je reviens à une version précédente soit la version 5.7.
sudo port install mysql57-server

Installation de MySQL 5.7.
Attention au message à la fin de l'installation !
Initialisation et définition du premier mot de passe de MySQL. Le mot de passe dans le cadre sera utilisé lors de la modification du mot de passe.
sudo /opt/local/lib/mysql57/bin/mysqld --initialize --user=_mysql

Récupération du mot de passe de l'utilisateur root.
Démarrage du serveur MySQL et vérification du démarrage.
sudo port load mysql57-server
ps -ax | grep mysql

Initialisation d'un nouveau mot de passe d'accès à MySQL (il vous faudra saisir le mot de passe spécifié dans le cadre rouge)
sudo /opt/local/lib/mysql57/bin/mysqladmin -u root -p password

Initialisation du nouveau mot de passe de MySQL.
Vérification du nouveau mot de passe et connexion à MySQL.
mysql -u root -p

Connection à MySQL en saisissant le nouveau mot de passe.
Installation de PHP 7.4 pour MySQL.
sudo port install php74-mysql

Installation de PHP pour MySQL.
Sécurisation de MySQL. Répondre aux différentes questions.
sudo /opt/local/lib/mysql57/bin/mysql_secure_installation

Sécurisation de MySQL.
Modification du fichier de configuration de MySQL
sudo code /opt/local/etc/mysql57/my.cnf

Modification du fichier de configuration.
Contenu du fichier
# Use default MacPorts settings
!include /opt/local/etc/mysql57/macports-default.cnf
[client]
port=3306
socket=/opt/local/var/run/mysql57/mysqld.sock
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
[mysqld]
# ------------------------------------------------------------
# Optimisations générales
# ------------------------------------------------------------
max_connections=150
thread_cache_size=50
table_open_cache=4000
open_files_limit=65535
# ------------------------------------------------------------
# Chemins MacPorts
# ------------------------------------------------------------
basedir=/opt/local
datadir=/opt/local/var/db/mysql57
#tmpdir=/opt/local/var/tmp/mysql57
#pid-file=/opt/local/var/run/mysql57/mysqld.pid
socket=/opt/local/var/run/mysql57/mysqld.sock
character-set-server=utf8mb4
init-connect='SET NAMES utf8mb4'
# ------------------------------------------------------------
# Réseau
# ------------------------------------------------------------
port=3306
bind-address=127.0.0.1
skip-external-locking
# ------------------------------------------------------------
# Charset par défaut
# ------------------------------------------------------------
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
# ------------------------------------------------------------
# Sécurité
# ------------------------------------------------------------
#symbolic-links = 0
Pour éviter que la mise à niveau de MySQL ne bloque l'accès à la base de données en réinitialisant la méthode d'authentification par mot de passe, il est nécessaire de créer un nouvel utilisateur Admin avec le mot de passe admin, qui permettra d'accéder au serveur.Connexion à MySQL
mysql -u root -p

Connexion à MySQL.
Exécuter ensuite les 4 instructions SQL suivantes :
CREATE USER 'administrateur'@'localhost' IDENTIFIED WITH mysql_native_password BY 'P@ssW0rd-75';
GRANT ALL PRIVILEGES ON *.* TO 'administrateur'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Création d'un administrateur.
Configuration de PHP pour MySQL
PHP doit savoir où il peut trouver par défaut le socket MySQL. Cette modification est à effectuer en utilisateur Root.
sudo -i
cd /opt/local/etc/php74
cp php.ini php.ini.bak
defSock=$(/opt/local/lib/mysql57/bin/mysql_config --socket)
Création d'un fichier tmp.ini
cat php.ini | sed \
-e "s#pdo_mysql\.default_socket.*#pdo_mysql\.default_socket=${defSock}#" \
-e "s#mysql\.default_socket.*#mysql\.default_socket=${defSock}#" \
-e "s#mysqli\.default_socket.*#mysqli\.default_socket=${defSock}#" >tmp.ini

Création du fichier tmp.ini.
Vérification du fichier.
grep default_socket tmp.ini
Si tout fonctionne correctement, la commande devrait renvoyer :
pdo_mysql.default_socket=/opt/local/var/run/mysql57/mysqld.sock
mysql.default_socket=/opt/local/var/run/mysql57/mysqld.sock
mysqli.default_socket=/opt/local/var/run/mysql57/mysqld.sock
Si, comme dans cet exemple, une des 3 lignes est manquante, ajouter la manuellement dans le fichier tmp.ini à la suite des autres comme cela :

sudo code /opt/local/etc/php74/tmp.ini

Modification du fichier de configuration tmp.ini.
Le fichier doit contenir les instructions suivantes :
[pdo_mysql]
pdo_mysql.default_socket=/opt/local/var/run/mysql57/mysqld.sock
[mysql]
mysql.default_socket=/opt/local/var/run/mysql57/mysqld.sock
[mysqli]
mysql.default_socket=/opt/local/var/run/mysql57/mysqld.sock
Lorsque la mofification sera effectuée, on vérifiera à nouveau avec la commande suivante :
grep default_socket tmp.ini

Remplacement du fichier php.ini
mv tmp.ini php.ini

Vérification de la configuration du serveur Apache et redémarrage.
sudo /opt/local/sbin/apachectl -t
sudo port unload apache2
sudo port load apache2

Vérification de la configuration du serveur Apache et redémarrage.
CHAPITRE 11 - INSTALLATION DE PHPMYADMIN
Installation de PHPMyAdmin et de ces dépendances.
sudo port install phpmyadmin

Installation de PHPMyAdmin.
Création du fichier de configuration de PHPMyAdmin et édition
cd /opt/local/www/phpmyadmin/
sudo cp config.sample.inc.php config.inc.php

Création du fichier de configuration.
Modification du fichier de configuration d'Apache
sudo code /opt/local/etc/apache2/httpd.conf

Modification du fichier de configuration d'Apache.
Instructions à ajouter dans le fichier de configuration d'Apache
# Load phpMyAdmin configuration
Include /opt/local/etc/apache2/extra/phpmyadmin.conf
Création et édition du fichier phpmyadmin.conf
sudo code /opt/local/etc/apache2/extra/phpmyadmin.conf

Création du ficgier de configuration de PHPMyAdmin.

Edition du fichier de configuration.
Instructions à ajouter dans le fichier de configuration d'Apache# Insert following
Alias /phpmyadmin /Users/administrateur/Sites/phpmyadmin
<Directory /Users/administrateur/Sites/phpmyadmin>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
<IfModule mod_authz_core.c>
Require all granted
</IfModule>
<IfModule !mod_authz_core.c>
Order allow,deny
Allow from all
</IfModule>
</Directory>
Copie de PHPMyAdmin dans le dossier de l'utilisateur
sudo cp -R /opt/local/www/phpmyadmin/ /Users/administrateur/Sites/phpmyadmin

Copie de PHPMyAdmin dans le dossier de l'utilisateur.
Installation des dépendances de PHPMYADMIN
sudo port install php74-iconv
sudo port install php74-mbstring

Installation des dépendances de PHPMyAdmin.
Vérification de la configuration du serveur Apache et redémarrage du serveur
sudo /opt/local/sbin/apachectl -t
sudo port unload apache2
sudo port load apache2

Redémarrage du serveur Apache.
Augmentation des droits de l'utilisateur root (Utiliser le mot de passe défini dans le chapitre "Installer MySQL")
mysql -u root -p
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
EXIT;

Augmentation des droits de l'utilisateur root.
Connexion à PHPMyAdmin avec Safari.
http://localhost/phpmyadmin

On obtient uniquement cet affichage, si votre version de Os X El Capitan n'est pas à jour. Il faut au minimum la version 11.1.2 du navigateur Safari pour que PHPMyAdmin s'affiche correctement.
Après avoir effectué les différentes mises à jour, on obtient un affichage classique.

Connexion à PHPMyAdmin.
ATTENTION!!! Lors de la connexion, un message d'erreur apparait dû à une incompatibilité de PHP 7.4 et PHPMyAdmin. Pour palier à cela, il est préférable d'utiliser l'application WorkBench.

Message d'erreur lors de la connexion à MySQL.
Ajout d'une clé de chiffrement.

Ajout de la clé de chiffrement à PHPMyAdmin.
Edition du fichier de configuration et ajout de l'option de clé de chiffrement.
sudo code /Users/administrateur/Sites/phpmyadmin/config.inc.php
$cfg['blowfish_secret'] = 'FzISUJ9~a<bCZ`]t@q4lJ{93.rnCO@YV';
Il est possible d'utiliser une clé de chiffrement à partir du site suivant :

Mise en place de la clé de chiffrement.
Configuration ensuite des fonctionnalités de PHPMyAdmin




CHAPITRE 12 - INSTALLATION DE WORKBENCH
Téléchargement des anciennes versions de l'application à l'adresse suivante : https://dev.mysql.com/downloads/mysql/

Téléchargement d'une version de Workbench pour El Capitan (10.11).
Installation de l'application

Installation dans le dossier Applications.
Exécution de l'application

Exécution de MySQL Workbench à partir du dossier Applications du Mac.
Effectuer un clic droit pour modifier la connexion à MySQL.

Modification de la connexion existante.
Écriture des différents paramètres

Mise en place des différents paramètres de la connexion.
Essai de connexion à MySQL

Connexion réussie.
Connexion à MySQL

Connexion à MySQL.

Connexion établie à MySQL.
CHAPITRE 13 - INSTALLATION DE JOOMLA
Avant d'installer Joomla, il faut penser à créer une base de données. J'appellerai cette table joomla_DB. Il est possible de créer cette table soit à partir de l'application WorkBench, soit à partir de PHPMyAdmin ou soit à partir de MySQL.
Création de la table à partir de MySQL.

Création de la base de données joomla_DB.
Téléchargement de Joomla.


Copie des fichiers dans le dossier bsalado.eu
sudo cp -R /Users/administrateur/Downloads/Joomla_3/ /Users/administrateur/Sites/bsalado.eu
Connexion au site avec l'adresse http://localhost/bsalado.eu





Fin de l'installation de Joomla!.