SOMMAIRE

Avertissement.
Introduction.
Prérequis.
Installation de XCode d’Apple.
Installation du package CommandLineTools.
Installation de l’utilitaire GasMask.
Installation de l’éditeur Visual Studio Code.
Installer l’application Sequel Pro.
Le gestionnaire de package Homebrew.
Installation du serveur Apache.
Installer MySQL.
Installation et configuration de PHP.
Le fichier .htaccess.
Installation et configuration de xDebug.
Configuration du Virtual host d’Apache.
Mise en place de Joomla !
Créer et mettre en place un certificat SSL.
Configuration de la redirection.
Conclusion.
Sources.

AVERTISSEMENT

Je vous recommande d’effectuer le suivi de ce tutoriel sur une machine virtuelle ou sur une machine physique nouvellement installée et donc dépourvue de donnée importante. Si cela n’est pas le cas, je vous conseille vivement de sauvegarder vos données. Je ne pourrai être tenu responsable de la perte de vos données ni des dégâts occasionnés au système d’exploitation de votre ordinateur.

Retour au sommaire

INTRODUCTION

Il y a quelques temps, j’avais mis en place un petit blog avec Joomla !qui traitait de divers trucs et astuces sous divers systèmes d’exploitation. Le tout fonctionnait avec Mamp sous El Capitan. Malheureusement, je ne sais pour quelle raison, le blog a cessé de fonctionner entrainant la perte de quelques articles que je n’avais pas eu le temps de sauvegarder. Était-ce Joomla ! qui avait une défaillance ? Je ne sais pas ! Était-ce Mamp ? Peut-être ! La seule chose dont j’étais certain en 2015, est que je n’avais pas assez de connaissance (voire aucune) pour aller me plonger dans la multitude de dossiers et de fichiers qui composent un serveur Apache. De plus, lorsque l’on souhaite mettre en œuvre un serveur Web, vous aurez sans doute besoin d’utiliser le langage Php, d’utiliser le système de débogage avec xDebug, de mettre en œuvre une base de données avec MySQL. Des mots inconnus pour le commun des mortels, mais utilisés avec facilité pour une communauté d’initiés qui partagent leur savoir sur divers forums.
N’ayant pas eu, beaucoup de temps ni l’envie de comprendre comment tout cela s’articulait, j’ai décidé, cette année, de passer une semaine complète sur le sujet. L’utilisation du Terminal est obligatoire pour toutes les commandes à saisir de cet article. Mise à part Mamp qui possède une interface graphique, je n’ai pas trouvé (pas cherché en profondeur en fait !) d’équivalent qui fonctionne mieux. Cela n’a pas fait de moi un initié, mais cela m’a permis de comprendre la hiérarchie de chaque composant. 
Le but de cet article est de mettre en œuvre un serveur Web avec Apache hébergé à domicile et accessible depuis l’extérieur. Pour cela j’utiliserai un nom de domaine, acheté chez OVH, dont je suis propriétaire (formatz.net). Cela évitera d’accéder au site par l’intermédiaire de l’adresse IP publique de la box (chez SFR). Aussi, je vous conseille d’acquérir un nom de domaine chez un registra (OVH, Gandi, Domain.com…). Il y a l’embarra du choix.

Retour au sommaire

PRÉREQUIS

Pour la réalisation de ce tutoriel, j’ai mis en œuvre Mac Os Mojave. (Version 10.14.6) à l’aide d’une machine virtuelle sous VMware Fusion 11. Une adresse IP fixe a été affectée à cette machine afin de mettre en œuvre une redirection NAT à partir de la box (je reviendrai plus bas dans cet article sur ce point). Après l’installation du système, toutes les mises à jour disponibles ont été appliquées.

Image 5

Image 6

Il est indispensable d’afficher les fichiers masqués de Mac Os afin de pouvoir effectuer des vérifications, voire d’effectuer l’installation de certains packages. Pour cela, il suffit d’exécuter dans la fenêtre du Terminal la commande suivante :

defaults write com.apple.finder AppleShowAllFiles YES && killall Finder

Les dossiers et fichiers cachés seront visibles à partir du Finder.

Image 15

Cela facilitera la tâche pour les chapitres ultérieurs.

Retour au sommaire

INSTALLATION DE XCODE D’APPLE

Xcode est un environnement de développement pour MacOS, ainsi que pour iOS, WatchOS et tvOS. Il est fourni avec toute une suite logicielle (graphiques, audio, etc.) pour développeurs et programmeurs. Il permet ainsi de créer des applications utilisant toutes les fonctionnalités de MacOS. Cet environnement peut être obtenu gratuitement sur le Mac App Store. Pour notre projet de serveur Apache, nous avons besoin d'un outil de compilation fonctionnel et c’est xCode qui sera utilisé. Le téléchargement pèse environ 6Go. C’est long ! Surtout que l’installation automatique qui suit durera aussi pas mal de temps. Il faut compter presque 30 minutes pour le tout (à condition d’avoir une bonne connexion).

Image 7

Un fois installé, il suffit d’exécuter l’application, d’accepter la licence d’utilisation.

Image 7bis

Le mot de passe utilisateur est demandé. Cela prendra encore un petit peu de temps afin que l’application déploie tous les composants nécessaires à son bon fonctionnement.

Image 8

L’affichage de la fenêtre de bienvenue met un terme à l’installation des composants.

Image 9

On quitte ensuite l’application car nous n’en avons pas utilité pour le moment.

Retour au sommaire

INSTALLATION DU PACKAGE COMMANDLINETOOLS

A partir de MacOS Mojave, les en-têtes de développement ne sont pas fournis avec le système. Avant d’exécuter le package, il faut dont le télécharger. C’est xCode qui s’en chargera. Pour cela, il suffit d’ouvrir la fenêtre du Terminal. Pour rappel, l’application Terminal est située dans le dossier Utilitaires. Pour installer le package, il suffit de spécifier la commande suivante :

xcode-select --install

Image 10

Une fenêtre s’affichera afin de confirmer l’installation.

Image 11

Il faut ensuite valider le contrat de licence.

Image 12

L’installation débutera ensuite.

Image 13

Image 14

Le package nécessaire a été copié et est maintenant disponible. Il n’a toujours pas été installé. Il faut procéder à son installation manuellement. On retrouve ce package à l’emplacement suivant :

/Library/Developer/CommandLineTools/Packages/

Image 16

On exécute un double clic sur le package afin de commencer son installation.

Image 17Image 18
Image 19Image 20
Image 21

Le package est maintenant installé.

Retour au sommaire

INSTALLATION DE L’UTILITAIRE GASMASK

L’utilitaire GasMask va permettre l’utilisation rapide de plusieurs fichiers Host. Dans ce chapitre, je ne vais pas entrer dans de longues explications concernant ce fichier. Pour faire simple, il permet d’associe une adresse IP à un nom de domaine ou sous-domaine. Ce fichier est lu en priorité par le système d’exploitation avant même l’éventuel serveur DNS. L’emplacement de ce fichier est le suivant :


/etc/hosts

Image 22

Voici par exemple le contenu du fichier Host avant les modifications qui seront effectuées ultérieurement :

Image 23

Cet utilitaire est gratuit et téléchargeable à partir de l’adresse suivante :

https://github.com/2ndalpha/gasmask/releases

Il suffit ensuite de glisser GasMask dans le dossier Applications.

Image 24

Pour le moment, il n’est pas nécessaire d’exécuter cet utilitaire.

Retour au sommaire

INSTALLATION DE L’EDITEUR VISUAL STUDIO CODE

Durant mon apprentissage d’une semaine, j’ai pratiquement toujours utilisé l’application Textedit. Cet éditeur de texte est fourni avec tous les systèmes d’exploitation d’Apple. Cependant, je peux assurer qu’il ne s’agit pas du meilleur éditeur pour gérer les fichiers d’un serveur Apache. Lors des tests, j’ai rencontré des problèmes d’encodage, de recherche de numéros de ligne, des guillemets au mauvais format. J’ai donc utilisé Textedit, jusqu’à ce que je découvre l’éditeur Visual Studio Code. Il est disponible sur Mac, Windows et Linux, mais nous ne nous intéressons uniquement à la version Mac. Cet éditeur est incroyablement polyvalent et qui plus est gratuit. Alors pourquoi s’en priver. Il est possible de télécharger cette application directement sur le site de l’éditeur à l’adresse suivante :

https://code.visualstudio.com

Une fois téléchargée, faire glisser l’application dans le dossier Applications du Mac.

Image 25

On exécute ensuite l’application afin de se débarrasser des messages de bienvenue dans un premier temps, puis dans un deuxième pour arriver à la fenêtre de l’éditeur lui-même.

Image 26

Maintenant que l’éditeur est correctement installé et encore ouvert, il faut effectuer quelques petites modifications afin de pouvoir l’utiliser en ligne de commandes depuis le Terminal. Pour cela, il faut :

Ouvrir la palette de commandes à l’aide de la combinaison ⇧ ⌘ P.

Image 27

Rechercher l’instruction Shell Command: Install 'code' command in PATH en saisissant les premiers caractères.

Image 28

Il faut maintenant confirmer en cliquant sur le bouton OK.

Image 29

Puis saisir le mot de passe de votre session.

Image 30

Si tout se passe correctement, on obtient un message qui stipule que le PATH a été modifié avec succès.

Image 31

Il est possible d’effectuer la vérification directement depuis la fenêtre du Terminal en écrivant la commande Code.

Image 32

On aurait pu aussi utiliser les instructions suivantes directement avec le Terminal pour obtenir le même résultat :

cat << EOF >> ~/.bash_profile
# Add Visual Studio Code (code)
export PATH="\$PATH:/Applications/Visual Studio Code.app/Contents/Resources/app/bin"
EOF

Ce nouvel éditeur est maintenant prêt à l’emploi.

Retour au sommaire

INSTALLER L’APPLICATION SEQUEL PRO

L’application PhpMyAdmin est en règle générale, l’application la plus courante pour gérer la ou les bases de données présentes dans MySQLSequel Pro tire son épingle du jeu de par son ergonomie et de sa facilité d’utilisation. De plus, cette application est gratuite et ne fonctionne que sous Mac Os. Cela tombe bien, car c’est l’environnement que j’utilise. C’est un client pour MySQL ou MariaDB qui permet de se connecter et d’interagir facilement avec des bases de données locales ou distantes. Ce client est téléchargeable depuis l’adresse suivante :

https://sequelpro.com

Image 74

Image 75

Une fois l’application téléchargée, il suffit d’ouvrir le fichier dmg obtenu et de faire glisser l’éditeur dans le dossier Applications de votre ordinateur.

Image 76

On exécute ensuite l’application afin de valider tous les messages d’avertissement potentiels et pour découvrir l’interface de l’éditeur.

Image 77

Image 78

L’application peut être maintenant quitter. Nous la retrouverons lors de l’installation de MySQL afin de modifier le mot de passe de l’utilisateur root puis lors de la création d’une base de données lors de l’implémentation de Joomla !.

Retour au sommaire

LE GESTIONNAIRE DE PACKAGES HOMEBREW

Homebrew est un logiciel de gestion de paquets pour Mac OS écrit en Ruby. Son but est de simplifier l'installation de programmes. Cela nous permet d'installer et de mettre à niveau des bibliothèques et des outils de manière simple Il est donc recommandé pour sa simplicité d'utilisation et son intégration dans l'environnement Apple. Il s’installe par défaut à l’emplacement suivant :

/usr/local

Pour installer homebrew, il suffit d’ouvrir le Terminalet d’exécuter la commande suivante. Lors de l’installation, on est amené à saisir le mot de passe de session :


/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

Image 33Image 34

Image 35

La commande suivante :

brew update

indiquera à HomeBrewde se mettre à jour.


Quant à la commande qui suit, 

brew upgrade

indiquera à HomeBrewd'installer les mises à jour pour les paquets déjà installés.


Image 36Image 37

Il est possible de désinstaller Homebrewavec la commande suivante :

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"

Pour obtenir plus d’informations concernant Homebrew, il est possible de consulter le site suivant :


https://docs.brew.sh

Image 38

L’installation de Homebrew est maintenant terminée.Comme on peut le remarquer, beaucoup d’utilitaires ont été installés. Sont-ils tous indispensables ? Non, certains de ces utilitaires ne sont pas réellement indispensables mais ils facilitent grandement l’existence. Sans Visual Studio Code, il faudra utiliser l’éditeur de texte Textedit. Comme je l’ai précisé plus haut dans cet article, il ne s’agit pas d’un éditeur adapté à la situation. Sans l’utilitaire GasMask, il faudra modifier le fichier Host dans le Terminal avec l’instruction sudo pico /etc/hosts puis redémarrer (ou flaher le dns interne) la machine afin que le fichier Host soit pris en charge. Ceci étant, les utilitaires sont désormais installés et prêts à l’emploi.

Retour au sommaire

INSTALLATION DU SERVEUR APACHE

Apache est le serveur Web le plus populaire pour la diffusion de contenu sur Internet. Il possède plus de la moitié des sites actifs sur Internet et est extrêmement puissant et flexible.
La dernière version de Mac OS 10.14 Mojave est livrée avec Apache2.4 préinstallée. Toutefois, l’utilisation de cette version avec Homebrewn’est plus une tâche facile, car Apple a supprimé certains scripts requis pour cette version. La solution consiste à installer Apache2.4 via Homebrew, puis à le configurer afin qu'il s'exécute normalement sur les ports standard à savoir le 80 et le 443.
Si déjà Apacheen cours d'exécution, il faudra d'abord l’arrêter et supprimer le script qui permet le démarrage automatique.

La commande suivante permet d’arrêter le serveur Apache:

sudo apachectl stop

Image 39


Si aucun serveur n’est en cours d’exécution, on obtient un message d’erreur comme c’est le cas ci-dessus. La commande suivante empêchera le démarrage automatique d’Apache, lors du démarrage de votre ordinateur.

sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist 2>/dev/null

On peut maintenant installer la nouvelle version fournie par Homebrew :


brew install httpd

Image 40Image 41
Image 42

A la fin de l’installation, il est précisé plusieurs informations. Les ports utilisés par défaut sont le 8080 et le 8443. C’est la directive DocumentRoot qui gère l’emplacement des sites Ces derniers seront à placer dans le dossier suivant :

/usr/local/var/www

Puis je crée le lien afin de pouvoir accéder aux exécutables d’Apache à partir du Terminal avec la commande suivante :

brew link httpd

image 42bis
Il est possible que le lien soit déjà activé comme c’est le cas ici. 

Il ne reste plus qu’à faire en sorte que le serveur Apachedémarre automatiquement lors du démarrage de l’ordinateur. La commande est la suivante :

sudo brew services start httpd

Ou éventuellement de les faire redémarrer avec la commande suivante :


sudo brew services restart httpd

Image 43

On peut maintenant ouvrir Safari afin de vérifier le bon fonctionnement du serveur Apache avec l’adresse suivante :

http://localhost:8080

Image 44

Apache est contrôlé via la commande apachectl. Les quelques commandes utiles à connaitre sont les suivantes :


Démarrage du serveur Apache.

sudo apachectl start

Arrêter le serveur Apache.


sudo apachectl stop

Démarrage normal du serveur Apache.


sudo apachectl restart

Démarrage immédiat du serveur Apache.


sudo apachectl -k restart

Vérification du fichier de configuration du serveur Apache.


sudo apachectl -t

Connaitre la version du serveur Apache.


sudo apachectl -v

Connaitre les modules chargés par le serveur Apache.

sudo apachectl -M

Maintenant que nous avons apparemment un serveur Web opérationnel, je demande au serveur Apache de vérifier son fichier de configuration.


sudo apachectl -t

Image 45

Malgré le bon fonctionnement apparent du serveur Apache, certaines directives n’ont pas encore été établies dans le fichier de configuration du serveur. Dans ce cas, la directive ServerNamen’est pas renseignée. 
L’autre point important est que le serveur Apache fonctionne avec la session utilisateuret non en tant qu’utilisateur Root. Il faut donc configurer le dossier dans lequel il stocke son fichier de processus avec les identifiants de la session utilisateurafin qu'il soit accessible en lecture et en écriture. Si cela n’est pas réalisé, le serveur Apachedémarrera, mais pas totalement. Je pense que cela est dû essentiellement à Mac Os Mojave, car je n’ai pas eu ce type de difficulté à résoudre sous El Capitan, Sierra ou High Sierra. Le fichier de processus du serveur Apachese situe à l’emplacement suivant :


/usr/local/var/run/httpd

Pour spécifier les droits, on utilisera la commande suivante :


sudo chown -R $(whoami):staff /usr/local/var/run/httpd

image 45bis

On redémarre ensuite le serveur Apache avec la commande suivante :

sudo brew services start httpd

image 46bis

Le serveur Apachepossède un fichier de configuration, nommé httpd.confet situé à l’emplacement suivant :

/usr/local/etc/httpd/

Il faut éditer ce fichier avec l’éditeur Visual Studio Codeen ligne de commande à partir du Terminal avec la commande suivante :


code /usr/local/etc/httpd/httpd.conf

L’éditeur ouvrira le contenu du fichier httpd.conf.


Image 46

Le but n’est pas de comprendre l’intégralité de ce fichier (car je ne connais pas moi-même), mais d’effectuer des petites modifications ponctuelles au fur et à mesure de l’avancement dans cet article.
Il faut maintenant rechercher dans ce fichier la directive ServerNameen utilisant l’outil de recherche de l’éditeur.

Image 47

On n’aperçoit dans l’éditeur, que la directive ServerNameest placé en commentaire (un # devant chaque ligne indique un commentaire). Plutôt que de supprimer le #, je préfère ajouter une ligne supplémentaire avec la directive suivante :

ServerName localhost

Image 48

Après avoir sauvegardé le fichier puis refermer l’éditeur, on peut lancer une vérification du fichier de configuration du serveur Apache.

sudo apachectl -t

Image 49


Il n’y a plus de problème. On peut redémarrer le serveur Apacheavec son fichier de configuration modifié avec la commande suivante :

sudo apachectl restart

Image 50

J’en ai parlé plus haut dans cet article du fait qu’il y a d’autres réglages à effectuer. Notamment l’emplacement du site qui n’est pas réellement accessible (/usr/local/var/www). Il est préférable de créer un dossier "Sites" dans le dossier utilisateur (utilisateur de la session en cours). Cela rendra un accès facile aux divers fichiers du site. Si l’on veut modifier l’emplacement du site, il faut impérativement spécifier à Apache le nouvel emplacement à l’aide de la directive DocumentRoot. On commence par créer un nouveau dossier "Sites" soit directement par le Finder, soit par le Terminal.

Par le Finder :

Image 51

Image 52

Par le Terminal :

On utilise la commande de création d’un dossier après avoir vérifié que l’on se situe bien dans le dossier utilisateur avec la commande pwd.

Mkdir Sites

Image 53

La commande ls permet ensuite de vérifier la présence du dossier.

Image 54

La modification du fichier de configuration d’Apache s’impose avec commande suivante :


code /usr/local/etc/httpd/httpd.conf

et on recherche la directive DocumentRoot.

Image 55

On procède à la modification de la directive. En profite ensuite de visualiser la balise Directoryafin de procéder à la même modification.

Image 56

Dans le même bloc Directory, je modifie l’instruction AllowOverridequi est fixé à None. Je remplace par All. Attention !!! Il existe plusieurs instructions AllowOverridedans le fichier de configuration du serveur. Il faut prendre le bon !

Image 58

Image 59

Étant donné que le fichier de configuration du serveur Apache est ouvert, j’en profite pour effectuer d’autres petites modifications. Par défaut, le port d’écoute du serveur est le 8080. Je remplace cette valeur par la valeur standard qui est le 80. Je remplace donc l’instruction Listen 8080 par Listen 80.

Image 57

Le serveur Apache pointe maintenant vers un dossier personnel appelé Sites. Cependant, un problème subsiste toujours. Par défaut, le serveur Apache est exécuté en tant que User Daemon et Group Daemon. Cela causera des problèmes d’autorisation lorsque l’on essayera d’accéder aux fichiers du dossier Sites. Deux paramètres permettent de définir l'utilisateur et le groupe (Useret Group) sous lequel le serveur Apache s'exécutera. Il faut modifier ces paramètres afin qu'ils correspondent à votre compte d'utilisateur avec un groupe appelé Staff. On profite que le fichier de configuration du serveur Apache soit encore ouvert afin d’effectuer les modifications.

Image 63

Image 64

Il faut maintenant effectuer une dernière modification. Il s’agit de dé-commenter (enlever un #) devant la ligne suivante :


#LoadModule rewrite_module lib/httpd/modules/mod_rewrite.so

Pour donner une explication rapide, ce module permet d’activer la réécriture des liens URL. Une fois ce module activé, on peut configurer les réécritures d'URL en créant un fichier .htaccess dans le répertoire racine de votre site par défaut.


On commence par rechercher la ligne dans le fichier de configuration, puis on procède à la suppression du symbole # situé devant la ligne.

Image 83

Image 84

On enregistre les modifications effectuées puis on quitte l’éditeur. Étant donné que plusieurs modifications ont été apportées au fichier de configuration du serveur Apache, il est préférable d’effectuer une vérification de ce même fichier avant de redémarrer le serveur. La commande est la suivante :


sudo apachectl -t

Si la commande retourne le message Syntax OK,  on redémarre le serveur Apache avec la commande suivante :


sudo apachectl restart

Image 50

Le bon fonctionnement du serveur Apache est spécifié dans le Moniteur d’activité. Cette application se situe dans le dossier Utilitaires. Effectuer une recherche avec httpd dans la zone Processeur pour y découvrir les opérations en cours.

Image 66

Pour conclure ce chapitre, on peut créer un petit fichier html dans le dossier Site en utilisant, dans une fenêtre du Terminal les instructions suivantes :

echo "<h1>Mon serveur Apache fonctionne !!! Etonnant !!!</h1>" > ~/Sites/index.html

Image 67

Image 68

On exécute maintenant Safari en utilisant l’adresse suivante :


http://localhost/index.html

Image 69

D’autres modifications seront apportées au fichier de configuration du serveur Apache au fur et à mesure de l’avancement dans cet article. De ce chapitre, il faut retenir que le serveur Apachepossède (pour le moment) un fichier de configuration.

Serveur Apache ---------->  /usr/local/etc/httpd/httpd.conf

Retour au sommaire

INSTALLER MYSQL

C’est la partie la plus simple de cet article. Dans une fenêtre du Terminal, on exécute la procédure d’installation avec la commande suivante :

brew install mysql@5.7

Image 70Image 71

On effectue ensuite le lien avec la commande suivante :

brew link mysql@5.7 -- force

Image 72

Et enfin, on démarre les services de MySQLavec la commande suivante :

brew services start mysql@5.7

Image 73
Les services MySQL sont maintenant fonctionnels. Cependant, le système de base de données ne compte qu’un seul utilisateur appelé root sans aucun mot de passe. Il est vivement recommandé d’associer un mot de passe à cet utilisateur afin de résoudre le problème de sécurité d’accès à votre système de base de données. C’est l’application Sequel Pro avec laquelle j’effectue cette tâche. On commence donc par exécuter l’application.

Image 78

Image 79

Une fois connecté, on sélectionne l’option Utilisateurs.

Image 80

Il suffit maintenant de sélectionner l’utilisateur dans la colonne de gauche (dans notre cas, l’utilisateur root), de définir un nouveau mot de passe et d’appliquer le tout.

Image 81

Il est possible de consulter le Moniteur d’activité de la machine afin de vérifier la présence de MySQL.

Image 82

Retour au sommaire

INSTALLATION ET CONFIGURATION DE PHP

PHP est un langage de programmation libre, principalement utilisé pour produire des pages Web dynamiques via un serveur http, mais pouvant également fonctionner comme n'importe quel langage interprété de façon locale. PHP est un langage impératif orienté objet. PHP a permis de créer un grand nombre de sites web célèbres, comme Facebook, Wikipédia, etc… Il est considéré comme une des bases de la création de sites web dits dynamiques mais également des applications web. Voici la définition que donne le site Wikipedia.
Avant de procéder à l’installation d’une ou plusieurs versions de PHP, je recommande de vérifier la version active à l’aide de la commande suivante :

php -v

Image 85

Apparemment, après avoir installé toutes les mises à jour de Mojave, la version 7.1 de PHPest active. Les versions PHP5.6 et 7.0 sont obsolètes et supprimés de Brew. Je ne m’attarderai donc pas avec ces versions. Donc si vous voulez installer PHP5.6 ou PHP7.0, vous devrez exécuter la commande qui suivante :

brew tap exolnet/homebrew-deprecated

Brew supporte officiellement PHP7.1 à 7.3. J’installerai donc les versions, 7.2 et 7.3. Il y aura donc 3 versions différentes présentes sur la machine.

Pour installer une version de PHP, on utilisera une des commandes suivantes :

brew install php5.6
brew install php7.0
brew install php7.1
brew install php7.2
brew install php7.3


On commence donc par l’installation de la version PHP7.2 avec la commande suivante :

brew install php7.2

Image 86Image 87
Image 88Image 88

La première version prend beaucoup de temps. L’installation des autres versions se déroulera plus rapidement. On peut maintenant installer PHP 7.3 avec la commande suivante :

brew install php@7.3

Le déroulement de l’installation s’effectue normalement et plus rapidement que la version installée précédemment.

Mac Os Mojave a modifié certaines autorisations de ces fichiers. Il n’est pas possible pour le moment de les modifier. Il est important d’effectuer la modification de ces autorisations avec les commandes suivantes :

sudo chown -R $(whoami):staff /usr/local/include/php/
sudo chown -R $(whoami):staff /usr/local/lib/php/
sudo chown -R $(whoami):staff /usr/local/etc/php/

Image 90

Un autre petit problème lié à HomeBrew maintenant. Pour je ne sais quelle raison, HomeBrew ne copie pas les fichiers spécifiques ou chaque version de PHP peut les trouver. Il faut pour cela résoudre le problème manuellement en fonction des versions qui auront été installées. Étant donné que seules les versions PHP 7.2 et 7.3 ont été installées, j’utilise les commandes suivantes :

cd $(brew --prefix php@7.2)
cp -R .bottle/* /usr/local/
cd $(brew --prefix php@7.3)
cp -R .bottle/* /usr/local/

Chaque version de PHP installée possède son propre fichier de configuration. La liste suivante présente les fichiers de chaque version ainsi que leur emplacement respectif :

/usr/local/etc/php/5.6/php.ini
/usr/local/etc/php/7.0/php.ini
/usr/local/etc/php/7.1/php.ini
/usr/local/etc/php/7.2/php.ini
/usr/local/etc/php/7.3/php.ini

Toutes les versions de PHPsont paramétrées pour démarrer un serveur PHP-FPM(je ne rentre pas dans le détail) qui écoute sur le port 9000. Cela ne peut évidemment pas fonctionner. De plus, le port 9000 devra être disponible pour XDebugqui sera quant à lui installé plus loin dans cet article. Pour spécifier un numéro de port à chaque version de PHP, il existe une convention qui utilise le numéro de version PHP. Ainsi, la version PHP7.2 écoutera sur le port 9072, la version PHP7.3 sur le port 9073 et ainsi de suite.
Un peu comme le serveur Apache, il faut que PHP s’exécute avec le bon nom d’utilisateur (nom d’utilisateur de la session active) et le bon nom de groupe. Je procède à la modification de la version PHP7.2 à l’aide de la commande suivante :

code /usr/local/etc/php/7.2/php-fpm.d/www.conf

Image 91

Image 92

On modifie ensuite le port d’écoute.

Image 93

Image 94

On sauvegarde le fichier puis on quitte l’éditeur. La configuration de la version PHP 7.2 est pour le moment terminée.

Concernant la configuration de la version PHP 7.3, il suffit de procéder de la même manière.

code /usr/local/etc/php/7.3/php-fpm.d/www.conf

On effectue les modifications suivantes :

user=benoitsalado
group = staff

Listen = 127.0.0.1:9073

Une fois les différentes configurations terminées, on peut démarrer les services système PHP-FPMpour les deux versions de PHPqui ont été installées avec les commandes suivantes :

Pour la version PHP 7.2
brew services start php@7.2

Pour la version PHP7.3
brew services start php@7.3

On force maintenant PHP7.3 pour être la version par défaut de notre ordinateur avec les commandes suivante :

brew unlink php

brew link --overwrite --force php@7.3

On peut maintenant vérifier quelle est la version utilisée par défaut en utilisant la commande suivante :


php-v

Encore une fois, le Moniteur d’activités spécifie le bon démarrage des services PHP.

Image 96

Différentes versions de PHP sont maintenant installées. Mais, elles ne fonctionnent pas encore de concert avec le serveur Apache. Il faut donc modifier la configuration de ce dernier. On édite le fichier de configuration du serveur Apache avec la commande suivante :

code /usr/local/etc/httpd/httpd.conf

Il faut dans un premier temps, dé-commenter (supprimer le symbole #) les modules suivants :

#LoadModule deflate_module lib/httpd/modules/mod_deflate.so
#LoadModule mime_magic_module lib/httpd/modules/mod_mime_magic.so
#LoadModule expires_module lib/httpd/modules/mod_expires.so
#LoadModule proxy_module lib/httpd/modules/mod_proxy.so
#LoadModule proxy_http_module lib/httpd/modules/mod_proxy_http.so
#LoadModule proxy_fcgi_module lib/httpd/modules/mod_proxy_fcgi.so

Je ne donne pas d’explication sur ces différents modules. On trouve beaucoup d’informations à leur sujet sur Internet.

On recherche à nouveau, dans le fichier de configuration du serveur Apache, la directive Directory modifiée plus haut dans cet article.

On ajoute à la suite les 3 lignes suivantes :

<FilesMatch "\.php$">
       SetHandler "proxy:fcgi://localhost:9073/"
</FilesMatch>

Image 97

Ces trois nouvelles lignes permettent de spécifier au serveur Apached’utiliser par défaut la version PHP7.3.

On enregistre les modifications apportées au serveur Apache et on effectue une vérification du fichier de configuration du serveur Apache avec la commande suivante :

sudo apachectl -t

Si le serveur renvoie le message  Syntax OK,  on redémarre le serveur Apache avec la commande suivante :

sudo apachectl restart

On peut maintenant vérifier si PHP fonctionne correctement en créant un fichier de même type, avec les instructions suivantes (à écrire dans une fenêtre du Terminal) : 

cat << EOL > ~/Sites/index.php
       <?php phpinfo();
EOL

Le fichier index.phpa été créé dans le dossier Sites.

Image 98

On peut maintenant ouvrirSafariafin de vérifier le bon fonctionnement de PHPavec l’adresse suivante :

http://localhost/index.php

Image 99

Les instructions PHP sont bien prises en compte. La version utilisée est la version PHP 7.3.8.

On peut utiliser la commande suivante afin d’obtenir la version utilisée par défaut :

php -v

Image 85

Ou si l’on souhaite obtenir des informations détaillées concernant une version spécifique, on utilisera la commande suivante :

brew info php@7.2

Image 100

On peut maintenant affiner quelques réglages de chaque version de PHP. Par exemple, spécifier la zone géographique ou l’on se trouve et plein d’autres paramètres. Comme la version PHP 7.3 est la version actuelle, j’édite son fichier de configuration avec la commande suivante :

code /usr/local/etc/php/7.3/ php.ini

et on modifie les lignes suivantes :

Image 119

On sauvegarde le fichier puis on quitte l’éditeur. On relance ensuite le service en utilisant la commande suivante :

brew services restart php@7.3

J’ai procédé à la modification de paramètres simples. Il appartient à chaque concepteur d’effectuer les modifications en fonction des besoins. Il existe des sites spécialisés sur le sujet qui donneront des explications sur les différents paramètres présents dans ce fichier.


De ce chapitre, il faut retenir que chaque version PHP possède ses propres fichiers de configuration

Version PHP 5.6 ----------> /usr/local/etc/php/5.6/php-fpm.conf -----> Version obsolète
Version PHP 5.6 ----------> /usr/local/etc/php/5.6/php.ini


Version PHP 7.0 ----------> /usr/local/etc/php/7.0/php-fpm.conf -----> Version obsolète
Version PHP 7.0 ----------> /usr/local/etc/php/7.0/php.ini


Version PHP 7.1 ----------> /usr/local/etc/php/7.1/php-fpm.conf -----> Version obsolète
Version PHP 7.1 ----------> /usr/local/etc/php/7.1/php.ini


Version PHP 7.2 ----------> /usr/local/etc/php/7.2/php-fpm.conf -----> Version obsolète
Version PHP 7.2 ----------> /usr/local/etc/php/7.2/php.ini


Version PHP 7.3 ----------> /usr/local/etc/php/7.3/php-fpm.conf -----> Version obsolète
Version PHP 7.3 ----------> /usr/local/etc/php/7.3/php.ini

Retour au sommaire

LE FICHIER .HTACCESS

Le fichier .htaccess est le nom par défaut du fichier de configuration du répertoire Apache. Il est utilisé pour personnaliser une configuration spécifique, des directives et divers paramètres à l’intérieur d’un dossier.

Afin de faire comprendre le rôle de ce fichier, je vais tenter de demander au serveur Apache d’utiliser une version de PHP 7.2 à l’intérieur d’un dossier que je nommerai test. Par l’intermédiaire d’un fichier PHP, je demanderai à afficher la version utilisée.

Création du dossier test dans Sites.

Image 101

Création du fichier index.php dans le dossier test avec les instructions suivantes :

cat << EOF > ~/Sites/test/index.php
<?php phpinfo();
EOF

Image 102

Création du fichier .htaccess dans le dossier test avec les instructions suivantes :

cat << EOF > ~/Sites/test/.htaccess
<FilesMatch "\.php$">
SetHandler "proxy:fcgi://localhost:9072/"
</FilesMatch>
EOF

On peut maintenant faire le test avec Safari.

http://localhost/index.php

Image 103

La version PHP 7.3 est utilisée. Il s’agit de la version définie par défaut dans le fichier de configuration du serveur Apache. On utilise maintenant l’adresse suivante :

http://localhost/test/index.php

Image 105

La version PHP 7.2 est utilisée. Il s’agit de la version définie dans le fichier .htaccess situé dans le dossier test.

Le rôle du fichier .htaccess ne concerne pas uniquement le changement de la version PHP à employer. On peut par exemple, demander la saisie des identifiants à un utilisateur pour accéder à une page précise. On peut redéfinir une page web spécifique en cas d’erreur et effectuer une redirection vers cette page. Il existe en fait une multitude de possibilités. 

L'utilisation des fichiers .htaccess peut être entièrement désactivée dans la configuration du serveur Apache, en définissant la directive AllowOverridede la manière suivante :

AllowOverride = None

Dans ce cas, le serveur Apache ne tiendra pas compte de la présence du fichier.

Si l’on se contente de l’accès au site d’Internet par l’intermédiaire d’une adresse de type :

http://mon_site_web

ce n’est pas la peine de lire la suite. Il faut maintenant créer les pages Web de votre site !

Retour au sommaire

INSTALLATION ET CONFIGURATION DE XDEBUG

J’ai commencé mon apprentissage de la programmation dans les années 80. DBase III+ (d’Ashton Tate) fût le premier langage sur lequel j’ai fait mes premières armes. Cette application possédait un micro-langage et permettait l’utilisation de base de données relationnelles. Associé au compilateur Clipper, c’était génial pour l’époque… Puis arriva DBase IV (avec pas mal de problèmes), puis la version V. Je suis ensuite passé sur d’autres langages tel que le Pascal, le C, le Lisp, le Visual Basic et j’en passe.

Là où je veux en venir, est que lorsque l’on fait du développement, il est toujours essentiel d’utiliser ce que l’on appelle un déboguer. PHP n’échappe donc pas à la règle. Le déboguer pour PHP se nomme xDebug. Un premier point (fastidieux celui-là) sera d’installer xDebug autant de fois qu’il y a de versions PHP installées. Je rappelle que trois versions sont présentes (PHP 7.1, PHP 7.2 et PHP 7.3) dans cet article. Le deuxième point est d’installer la version xDebug correspondante à la version de PHP. Le troisième point, est qu’il faut que la version PHP soit active pour lui associer son déboguer.

HomeBrew n’intègre pas le débuguer. Il devra être installé avec PECL. On peut considérer PECL comme étant est un référentiel pour les extensions PHP, fournissant un répertoire de toutes les extensions connues.

Je commence par installer xDebug pour la version de PHP 7.2. Comme je l’ai précisé plus haut dans ce chapitre, il faut commencer par rendre courante la version de PHP 7.2. Cela se fait avec les instructions suivantes :

brew unlink php
brew link --force --overwrite php@7.2

Image 106

On peut maintenant vérifier que la version PHP 7.2 est bien active avec la commande suivante :

php -v

Image 107

Il existe un site de référence qui permet de télécharger (par l’intermédiaire de PECL) la version de xDebug qui correspond à la version PHP active. Pour cela on consulte le site à l’adresse suivante :

https://xdebug.org/download.php

Hormis les versions Alpha ou Beta, xDebug 2.7.2 correspond à notre version PHP 7.2. On ne télécharge pas xDebug à partir de ce site, car c’est PECL qui va s’en charger. Il procèdera aussi à son installation. On utilise maintenant la commande suivante :

pecl install xdebug-2.7.2

PECL procède à l’installation des fichiers. Cela peut paraitre impressionnant quant au déroulement du nombre de lignes qui défilent dans la fenêtre du Terminal.

Image 108

On peut voir aussi, que cette même version peut aussi être utilisée pour les versions de PHP 7.3.

Image 109

A la fin de l’installation de xDebug, une ligne importante est affichée.

Image 110

On garde précieusement la ligne visible dans le Termina, car on aura besoin de recopier cette instruction dans le fichier ini de PHP 7.2. On procède donc immédiatement à la modification de ce fichier avec la commande suivante :

code /usr/local/etc/php/7.2/php.ini

et on ajoute les lignes suivantes à la fin du fichier :

[xdebug]
xdebug.remote_enable=1
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.remote_autostart=0
xdebug.idekey=PHPSTORM

Image 111

Puis l’instruction Zend du Terminal.

Zend_extension=/usr/local/Cellar/php@7.2/7.2.21/pecl/20170718/xdebug.so

Image 112

On enregistre le fichier et on quitte l’éditeur. On peut maintenant revenir à la version PHP 7.3 avec les instructions suivantes :

brew unlink php@7.2
brew link --force --overwrite php@7.3

Image 113

On relance maintenant les services pour la version PHP 7.2.

brew services restart php@7.2

Image 114

On procède exactement de la même manière pour installer xDebug pour la version PHP 7.3 à la seule différence qu’il n’y a pas lieu de passer sur une autre version étant donné que la version PHP 7.3 est la version active. Voici dans l’ordre, les différentes instructions :

Installation de la version xDebug.
pecl install xdebug-2.7.2

code /usr/local/etc/php/7.3/php.ini

Étant donné que l’on utilise la version PHP 7.3 fournie par défaut dans Mojave, il y a une petite modification à effectuer tout en haut du fichier. Il faut placer en commentaire avec un ; la ligne suivante :

Image 115

Image 116

On ajoute les lignes suivantes à la fin du fichier. (Pour PHP 7.2 et 7.3, il s’agit du même Zend)

[xdebug]
Zend_extension=/usr/local/Cellar/php/7.3.8/pecl/20180731/xdebug.so
xdebug.remote_enable=1
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.remote_autostart=0
xdebug.idekey=PHPSTORM

On enregistre et on quitte l’éditeur.

On redémarre les services de la version PHP 7.3.
brew services restart php@7.3

On peut maintenant faire la vérification que xDebug est actif dans la fenêtre d’information de la page PHP avec Safari.

Image 117

Image 118

Retour au sommaire

CONFIGURATION DU VIRTUAL HOST D’APACHE

Apache divise ses fonctionnalités et ses composants en unités distinctes pouvant être personnalisées et configurées indépendamment. L'unité de base qui décrit un site ou un domaine est appelée hôte virtuel. Cette désignation permet à l’administrateur d’utiliser un serveur pour héberger plusieurs domaines ou sites sur une même interface ou IP, à l’aide d’un mécanisme de correspondance. Ceci est pertinent pour quiconque souhaite héberger plus d'un site dans le même serveur. Ainsi, chaque domaine configuré enverra le visiteur à un répertoire spécifique. Il ne sera jamais indiqué que le même serveur est également responsable des autres sites. Ce schéma est flexible sans limitation logicielle tant que le serveur peut gérer la charge.

Afin de démontrer les explications ci-dessus, il suffit de créer deux sites dans deux dossiers distincts. Je placerai un fichier index.html à l’intérieur de ces deux dossiers.

Création des deux dossiers que je nomme site1 et site2.

Image 120

Je crée ensuite un fichier index.html, qui contiendra les instructions suivantes :

<html>
     <head>
          <title>Bienvenue sur le site1!</title>
     </head>
     <body>
          <h1>Tu as reussi! L hote virtuel example1.com fonctionne</h1>
     </body>
</html>

J’enregistre ensuite le fichier dans le dossier site1

Image 121

Je procède de la même façon pour la création du deuxième fichier avec les instructions suivantes :

<html>
     <head>
          <title>Bienvenue sur le site2!</title>
     </head>
     <body>
          <h1>Tu as reussi! L hote virtuel example2.com fonctionne</h1>
     </body>
</html>

J’enregistre le fichier dans le dossier site2

Image 122

Pour ce qui est de la préparation, c’est terminé.

Afin de pouvoir utiliser virtual host d’Apache, il faut procéder à la modification du fichier de configuration du serveur. On commence par éditer le fichier :

code /usr/local/etc/httpd/httpd.conf

et on dé-commente les lignes suivantes :

#LoadModule vhost_alias_module lib/httpd/modules/mod_vhost_alias.so
#Include /usr/local/etc/httpd/extra/httpd-vhosts.conf

Image 123

Image 124

On enregistre le fichier, puis on quitte l’éditeur.

Il faut maintenant effectuer la principale modification dans le fichier de configuration du virtual host. Ce dernier est nommé httpd-vhosts.conf. Ce fichier est situé à l’emplacement suivant :

/usr/local/etc/httpd/extra/

On édite le fichier de configuration avec la commande suivante :

code /usr/local/etc/httpd/extra/httpd-vhosts.conf

Par défaut, le fichier se présente de la manière suivante :

Image 125

On commence par commenter toutes les lignes.

Image 126

Une fois toutes les lignes existantes commentées, on peut commencer à placer les nouvelles directives.

Je souhaite utiliser l’adresse exemple1.lan pour accéder au site1 et exemple2.lan pour accéder au site2. On commence par l’adresse exemple1.lan en ajoutant les instructions suivantes dans le fichier de configuration :

<VirtualHost *:80>

     DocumentRoot "/Users/benoitsalado/Sites/Site1"
     ServerName exemple1.lan
     ServerAlias srv1.lan serveur1.lan www.srv1.local

          <Directory "/Users/benoitsalado/Sites/">
               AllowOverride All
               DirectoryIndex index.html index.php
               Require all granted

               <FilesMatch "\.php$">
                    SetHandler "proxy:fcgi://127.0.0.1:9073/"
               </FilesMatch>

          </Directory>

</VirtualHost>

Pour résumer ces instructions simplement. On se sert de la directive ServerName afin de spécifier au serveur virtuel l’adresse qui sera employée. La directive ServerAlias permet aussi de spécifier un ou plusieurs raccourcis pour accéder au même dossier. Dans cet exemple trois alias sont mis en place (je ne conseille pas les alias en www, mais comme il s’agit d’un exemple…). Pour les autres instructions, elles sont à découvrir sur Internet.

Image 127

On ajoute maintenant les instructions pour exemple2.lan.

<VirtualHost *:80>

     DocumentRoot "/Users/benoitsalado/Sites/Site2"
     ServerName exemple2.lan
     ServerAlias srv2.lan serveur2.lan www.srv2.local

          <Directory "/Users/benoitsalado/Sites/">
               AllowOverride All
               DirectoryIndex index.html index.php
               Require all granted

               <FilesMatch "\.php$">
                    SetHandler "proxy:fcgi://127.0.0.1:9073/"
               </FilesMatch>

          </Directory>

</VirtualHost>

Image 128

Le fichier de configuration du virtual host d’Apache est maintenant terminé. On enregistre le fichier et on quitte l’éditeur. On effectue la vérification des fichiers de configuration avec la commande suivante :

sudo apachectl -t

On relance ensuite le serveur Apache avec la commande suivante :


sudo apachectl restart

Si l’on tente de se connecter avec Safari au site1 en utilisant l’adresse http://exemple1.lan, voici ce que l’on obtient :

Image 129

Il manque la modification du fichier host. C’est avec l’application Gas Mask que j’effectue la modification. L’avantage de GasMask est qu’il effectuera automatique un dscacheutil lors de la sauvegarde du fichier host. Cette utilitaire permet aussi de créer une multitude de fichiers host prêt à l’emploi. On passer de l’un à l’autre très facilement en activant le fichier host souhaité. Voilà comment procéder.
On commence par exécuter l’utilitaire. Au premier démarrage l’utilitaire vous affiche automatiquement le contenu du fichier host.

Image 130

Comme on ne modifiera pas le fichier original, on crée un nouveau fichier de la manière suivante :

Image 131

L’utilitaire effectue une copie de l’original. Je nomme le nouveau fichier host, Etat 1.

Image 132

J’ajoute maintenant les nouvelles données au fichier et je sauvegarde le fichier.

Image 133

La dernière étape consiste à activer le fichier.

Image 134

L’Etat 1 est maintenant actif.

Image 135

Si l’on tente de se connecter avec Safari au site1 en utilisant l’adresse http://exemple1.lan, voici maintenant ce que l’on obtient :

Avec l’adresse http://exemple1.lan

Image 136


Avec l’adresse http://srv1.lan
Image 137

Avec l’adresse http://serveur1.lan
Image 138

Avec l’adresse http://www.srv1.local
Image 139

Si l’on tente de se connecter avec Safari au site2 en utilisant l’adresse http://exemple2.lan, voici maintenant ce que l’on obtient :
Image 140

Cela sera idem avec les adresses http://srv2.lan, http://serveur2.lan, http://www.srv1.local 
Je viens d’exposer la méthode de création et d’activation des Virtual Hosts pour des domaines locaux. Créer de nouveaux hosts est une pratique classique et simple. Avec un peu de d’expérience, on pourra placer non seulement des domaines, mais aussi leurs sous-domaines.

 Retour au sommaire

MISE EN PLACE DE JOOMLA !

Avant de mettre en place Joomla !, il est impératif de créer au préalable une base données. Pour cela, on utilisera l’application Sequel Pro vue plus haut dans cet article. On commence par exécuter l’application et on se connecte avec les identifiants de l’utilisateur root.

Image 141

Une fois connecté, on crée une nouvelle base de données. Pour mon exemple, je nomme cette base de données formatz.

Image 142

Image 143

Une fois la base de données créée, on peut quitter l’application. 
Dans le dossier Sites, je crée un nouveau dossier que je nomme formatz.

Image 144

A partir du site Joomla !, (https://www.joomla.fr), je télécharge la dernière version.

Image 145

Je copie ensuite les fichiers obtenus dans le dossier formatz créé précédemment.

Image 146

Je modifie le fichier virtual host avec les instructions suivantes. Le fichier

<VirtualHost *:80>
     DocumentRoot "/Users/benoitsalado/Sites/formatz"
     ServerName formatz.net
     ServerAlias formatz.net www.formatz.net
     <Directory "/Users/benoitsalado/Sites/">
          AllowOverride All
          DirectoryIndex index.php
          Require all granted
          <FilesMatch "\.php$">
               SetHandler "proxy:fcgi://127.0.0.1:9073/"
          </FilesMatch>
     </Directory>
</VirtualHost>

On édite le fichier de configuration avec l’instruction suivante :

code /usr/local/etc/httpd/extra/httpd-vhosts.conf

Image 147

On modifie maintenant le fichier host (Etat 1) avec l’utilitaire GasMask. Ne pas oublier d’activer Etat 1.

Image 148

On redémarre maintenant le serveur Apache avec la commande suivante :

sudo apachectl restart

Image 149

On peut maintenant utiliser l’adresse suivante afin de commencer la configuration de Joomla !.

http://formatz.net/administrator

Image 150

Image 151

Image 152

Image 153

Joomla ! est maintenant configuré. Il est possible maintenant d’accéder au blog par l’intermédiaire de l’adresse suivante :

http://formatz.net/ ouhttp://www.formatz.net/

Image 154

L’implémentation de Joomla ! est maintenant effectuée.

Retour au sommaire

 METTRE EN PLACE UN CERTIFICAT SSL

Un certificat SSL est un fichier de données qui lie une clé cryptographique aux informations d'une organisation ou d'un individu. Installé sur un serveur, le certificat active le cadenas et le protocole https (via le port 443) dans les navigateurs, afin d'assurer une connexion sécurisée entre le serveur web et le navigateur.
Généralement, le SSL est utilisé pour sécuriser les transactions bancaires, le transfert de données et les informations de connexions, telles que les noms d'utilisateur et les mots de passe. Récemment, le SSL est devenu la norme pour sécuriser l'utilisation de sites web.
Les certificats SSL lient ensemble :

- Un nom de domaine, un nom de serveur et un nom d’hôte.
- L'identité de l'organisation (nom d'entreprise) et le lieu.

Donc, pour mettre en place un certificat SSL, nous avons besoin d’installer un utilitaire appelé Certbot. Il est possible de l’installer à partir du package HomeBrew. Son installation s’effectue avec la commande suivante :

brew install letsencrypt

Image 155

Pour la mise en place du certificat SSL, il est préférable d’arrêter le serveur Apache. Pour cela, on exécute la commande suivante :

sudo apachectl stop

Il est nécessaire d'effectuer la modification de la configuration du serveur Apache. On modifie le port d'écoute puis on décommente le module SSL.

Pour cela on utilise la commande suivante :

code /usr/local/etc/httpd/httpd.conf  

image 166

image 167

On enregistre ensuite le fichier puis on quitte l'éditeur.

Je vérifie la configuration du serveur Apache avec la commande suivante :

sudo apachectl -t

Je modifie maintenant le contenu du fichier de configuration du virtual host avec la commande suivante :

code /usr/local/etc/httpd/extra/httpd-vhosts.conf

pour y placer les instruction suivantes :

<VirtualHost *:80>
     DocumentRoot "/users/benoitsalado/Sites/formatz"
     ServerName formatz.net
     ServerAlias www.formatz.net
     <Directory "/users/benoitsalado/Sites">
          AllowOverride All
          DirectoryIndex index.php 
          Require all granted
          <FilesMatch "\.php$">
               SetHandler "proxy:fcgi://127.0.0.1:9073/"
          </FilesMatch>
     </Directory>
</VirtualHost>

Image 156

Je vérifie à nouveau la configuration du serveur Apache avec la commande suivante :

sudo apachectl -t

Il faut impérativement obtenir le message Syntax OK sinon la demande de certificat n’aboutira pas.
On utilise maintenant la commande de demande du certificat avec l’instruction suivante :

sudo certbot --apache

La demande de certificat oblige de spécifier une adresse de messagerie valide.

Image 160
Puis d’accepter le contrat de licence.

Image 161
A des fins commerciales, il est demandé l'autorisation d'utiliser l'adresse mail spécifiée plus haut. Pour ma part, je ne l'accepte pas.

Image 162
Il est demandé ensuite de spécifier pour quel nom de domaine on souhaite un certificat. Pour mon exemple, je choisis l’option 2.

Image 163
La demande de certificat commence.

Image 164

Des informations complémentaires sont fournies. On vous stipule par exemple, que le certificat est valable 3 mois. Il faudra donc penser à le renouveler.

Image 165
Le certificat a été automatiquement distribué. Les dossiers concernés sont les suivants :

/etc/letsencrypt/live/www.formatz.net/
/etc/letsencrypt/live/www.formatz.net/
/etc/letsencrypt/live/www.formatz.net/

Afin de pouvoir utiliser le site avec une adresse de typpe https, il faut maintenant modifier le fichier de configuration du virtual host avec la commande suivante :

code /usr/local/etc/httpd/extra/httpd-vhosts.conf 

et apporter les modifications suivantes : (Attention, ne pas copier les instructions)

<VirtualHost *:80>
    DocumentRoot "/Users/administrateur/Sites"
    ServerName www.formatz.net
    Redirect permanent / https://www.formatz.net
</VirtualHost>

<VirtualHost *:443>
    DocumentRoot "/Users/administrateur/Sites/formatz"
    ServerName www.formatz.net
    <Directory "/Users/administrateur/Sites">
         AllowOverride All
         DirectoryIndex index.php index.html
         Require all granted

         <FilesMatch "\.php$">
              SetHandler "proxy:fcgi://127.0.0.1:9073/"
         </FilesMatch>
    </Directory>

    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/www.formatz.net/cert.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/www.formatz.net/privkey.pem
    SSLCertificateChainFile /etc/letsencrypt/live/www.formatz.net/chain.pem
    SSLProtocol all -SSLv2 -SSLv3
    SSLHonorCipherOrder on
    SSLCompression off
    SSLOptions +StrictRequire
   SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM- SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA

    Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"

   #LogLevel warn

   #ErrorLog /usr/local/var/log/httpd/error_log/www.formatz.net-error.log
   #CustomLog /usr/local/var/log/httpd/error_log/www.formatz.net-access.log combined

</VirtualHost>

Image 169

On enregistre le fichier puis on vérifie la configuration du serveur Apache avec la commande suivante :

sudo apachectl -t

Si la commande retourne le message Syntax OK,  on redémarre le serveur Apache avec la commande suivante :

sudo apachectl restart

Si tout à fonctionné correctement, l'accès au site s'effectue dorénavant en https.

image 170

image 171

Retour au sommaire

CONFIGURATION DE LA REDIRECTION

Il faut maintenant rediriger les requêtes entrantes à la bonne machine. Pour que cela fonctionne correctement dans le temps, il est nécessaire d'appliquer une adresse IP fixe au serveur web.

image 172

Une fois l'adresse IP renseignée, il faut paramétrer la redirection (NAT) afin que la box puisse rediriger les demandes à la bonne machine. Pour ma part, j'utilise une box de chez SFR. Cela se paramètre de la manière suivante :

On se connecte à la box par l'intermédiaire d'un navigateur et on spécifie les identifiants de connexion.

image 173

On paramètre maintenant, la redirection NAT de la box.

image 174

Les ports 80 et 443 sont maintenant ouverts. La redirection s'effectuera directement vers la machine qui possède l'adresse IP 192.168.1.2.
L'accès depuis l'extérieur est aussi possible. Cependant, si vous possédez un nom de domaine (c'est mon cas chez OVH), il faudra penser à rediriger l'url vers l'adresse IP publique de votre box.

image 175

Si vous ne possédez pas de nom de domaine, l'accès s'effectue à partir de l'adresse IP publique directement dans votre navigateur.

image 176

 Retour au sommaire

CONCLUSION

C'est la fin de ce long dossier, dans lequel j'ai tenté de décrire les différentes étapes afin de mettre en oeuvre un site web hébergé à domicile. Nous avons pu voir le long de ces nombreux chapitres les prérequis et les différentes étapes de configuration pour obtenir un serveur Apache qui fonctionne correctement. Encore une fois, je ne suis pas un spécialiste des serveurs web, du php. Il faudra peut-être faire des modifications à ce dossier si votre projet diffère. En programmation, comme ailleurs, rien n'est plus formateur que de découvrir, chercher les choses par soi-même. Réaliser des projets sera la solution idéale pour renforcer vos connaissances et concrétiser tout ce que vous avez appris. Je ne peux que vous encourager à commencer dès maintenant un projet web. C'est de loin la solution la plus motivante pour progresser rapidement. 

Retour au sommaire

SOURCES

Site Web : https://pecl.php.net
Site Web : https://www.dionysopoulos.me
Site Web : https://getgrav.org/blog/macos-mojave-apache-multiple-php-versions
Site Web : https://xdebug.org/download.php
Site Web : https://httpd.apache.org/docs/current/vhosts/
Site Web : https://www.globalsign.fr
Site Web : https://certbot.eff.org/lets-encrypt/osx-apache

Retour au sommaire