Développer pour WordPress : MAMP et MAMP Pro avec SSL

Développer pour WordPress : MAMP et MAMP Pro avec SSL


Lorsqu’on gère des sites web WordPress en local, il existe pas mal de solutions différentes pour mettre en place un environnement de travail. Vous aurez toujours besoin des mêmes outils de départ : un serveur web, un serveur de base de données et PHP. Découvrez comment configurer tout ça, et bien plus, avec MAMP et MAMP Pro.

Dans mon article de la semaine dernière je couvrais la mise en place de l’environnement de développement idéal pour WordPress sous Windows.

Cet article couvrait l’installation et la configuration de base de :

  • Git
  • MAMP / MAMP Pro
  • WP-CLI

Si vous ne l’avez pas déjà fait, n’hésitez pas à aller le consulter. Pour l’article de cette semaine nous continuerons donc sur cette lancée pour voir la mise en pratique concrète de tous ces outils.

Première étape, le logiciel MAMP / MAMP Pro pour gérer le serveur web, la base de données et PHP.

Processus de travail

Pour rappel, comme expliqué dans mon article précédent, voici le processus à la création d’un nouveau site. En gras ce que je couvrirai dans cet article :

  • La configuration de MAMP et MAMP Pro à l’ajout d’un nouveau site
  • L’installation d’un certificat SSL en local pour servir votre environnement de développement en HTTPS
  • La création du site et l’installation de WordPress avec WP-CLI
  • L’automatisation de cette installation et de la configuration de base de WordPress avec WP-CLI, avec des exemples concrets
  • La mise en place du versioning grâce à Git
  • La mise en production de modifications avec Git
  • Les autres outils utilisés pour la gestion du site

En bonus : plus de détails sur ces outils, des exemples concrets, des scripts qui vont vous économiser beaucoup de temps, etc.

Ajouter votre site sur MAMP

MAMP – Version gratuite

Configurer votre site

Si vous travaillez avec la version gratuite de MAMP et que vous avez suivi mon précédent article, je vous conseille de faire pointer votre dossier racine sur le dossier où se trouvera tous vos sites.

Par exemple si votre structure de dossier est :

d:\dev\sites

Et qu’à l’intérieur de celui-ci vous avez un dossier pour chaque site Internet, faites pointer MAMP vers ce dossier sites. Si vous n’avez qu’un seul site à gérer, faites pointer MAMP vers ce dossier directement.

Aucune autre configuration n’est nécessaire. À la création d’un nouveau site créez simplement un dossier dans sites du nom de votre site Internet.

En accédant à localhost, qui pointera donc par exemple vers d:\dev\sites vous verrez alors apparaître la liste des sites présents dans ce dossier.

Affichage de la liste des dossiers sous forme de sites dans localhost

En cliquant sur le lien qui vous amène à ce dossier, vous pourrez voir son contenu et travailler avec WordPress, etc. directement depuis ce dossier.

Mettre en place SSL sur localhost

Avant de commencer

Soyons clair dès le départ : aucun navigateur ne fera confiance à un certificat auto-signé qui pointe vers un nom de domaine appelé localhost.

Mais pour peu que vous soyez prêt à passer outre l’avertissement de Chrome ou Firefox en accédant à https://localhost, vous pourrez effectivement définir un certificat SSL à utiliser. Et ce sans aucun risque.

Il peut être utile de tester certaines fonctionnalités en SSL, par exemple pour accéder à une API externe qui force l’accès à partir d’un site en HTTPS.

Cependant, il se peut que certaines fonctionnalités ne marchent pas parfaitement avec un certificat auto-signé sur localhost (la fonction PHP file_get_contents par exemple, qui renvoi une erreur OpenSSL indiquant que le certificat ne peut pas être validé).

Créer un certificat avec OpenSSL

Première étape, créer notre certificat. Pour se faire nous utiliserons openssl. Vous avez plusieurs manières de faire sous Windows pour l’installer, le mieux est d’utiliser un émulateur de bash Linux.

Vous pouvez installer Ubuntu pour Windows 10 ou simplement utiliser le Git Bash, installé avec Git, dont je parlais dans mon article précédent. C’est ce que je ferai.

Pour faire simple, nous installerons le certificat dans le dossier de configuration d’Apache sous MAMP. Rendez-vous donc dans C:\MAMP\conf\apache et faites Clic droit > Git Bash Here.

Puis entrez la commande suivante pour créer la clé de certificat et protéger la clé avec un mot de passe. Ce dernier est important, on le réutilisera plus tard donc gardez le en tête :

$ openssl genrsa -des3 -out server.key 1024
Generating RSA private key, 1024 bit long modulus (2 primes)
..................................................................+++++
.........................................................+++++
e is 65537 (0x010001)
Enter pass phrase for server.key:
Verifying - Enter pass phrase for server.key:

Nous avons donc créé une clé appelée server.key dans C:\MAMP\conf\apache. Maintenant nous allons créer le fichier de requête de signature du certificat :

$ openssl req -new -key server.key -out server.csr
Enter pass phrase for server.key:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:CH
State or Province Name (full name) [Some-State]:Etat, canton, département, etc.
Locality Name (eg, city) []:Ville, village, localité
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Nom de votre société
Organizational Unit Name (eg, section) []:Développement
Common Name (e.g. server FQDN or YOUR name) []:localhost
Email Address []:support@monsite.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

openssl vous demandera d’entrer le mot de passe de la clé saisi plus haut. Ensuite entrez les informations de votre certificat (pays, lieu, société, etc.) pour générer le fichier server.csr.

Puis nous allons générer le certificat server.crt :

$ openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
Signature ok
subject=C = CH, ST = "Etat, canton, d\C2\82partement, etc.", L = "Ville, village, localit\C2\82", O = Nom de v
otre soci\C2\82t\C2\82, OU = D\C2\82veloppement, CN = localhost, emailAddress = support@monsite.com
Getting Private key
Enter pass phrase for server.key:

Saisissez à nouveau le mot de passe de votre clé pour finaliser la génération du fichier.

Dernière étape, pour que ça fonctionne avec Apache, supprimer le mot de passe de votre clé privée.

$ cp server.key server.tmp
$ openssl rsa -in server.tmp -out server.key
Enter pass phrase for server.tmp:
writing RSA key

Il ne se passe rien lorsque vous tapez une commande openssl

Sous Git Bash, si rien ne se passe à l’exécution d’une des commandes ci-dessus et si vous ne parvenez pas à stopper l’exécution avec Ctrl+C, je pense pouvoir vous aider.

Commencez par ouvrir le Gestionnaire des tâches et mettez fin au processus openssl.exe pour terminer l’exécution de la commande en attente.

Ensuite, il vous suffit de préfixer toutes les commandes mentionnées plus haut dans cet article par la commande winpty. Par exemple :

winpty openssl genrsa -des3 -out server.key 1024

winpty est en fait une couche supplémentaire d’émulation. Il va ouvrir une console Unix masquée, y exécuter votre commande (ici openssl genrsa ...) et retourner le résultat. Il permet d’exécuter des commandes natives Unix sans risque de problème.

Git Bash utilise mintty comme émulateur, si celui-ci peut gérer l’essentiel des commandes, les applications non développées spécifiquement pour MSys ou Cygwin peuvent ne pas fonctionner.

mintty a plein d’autres avantages (confort d’utilisation, visuel, etc.) mais dans certains cas, il est nécessaire de préfixer l’exécution des commandes par winpty

Ajouter le certificat à la configuration d’Apache

Pour cette étape, il faudra modifier le fichier de configuration d’Apache que vous trouverez dans C:\MAMP\conf\apache\httpd.conf.

Ouvrez le fichier et commencez par rechercher la ligne :

#LoadModule ssl_module modules/mod_ssl.so

Et dé-commentez-la en supprimant le préfixe #. Certaines configurations d’Apache (du moins sous Mac) disposent d’un sous dossier extras où vous trouverez la configuration SSL dans le fichier httpd-ssl.conf.

Dans mon cas, pas de dossier extras et pas de fichier https-ssl.conf dans l’installation de base de MAMP.

Si vous êtes dans le même cas, nous allons ajouter les infos de configuration SSL à la fin du fichier httpd.conf.

Listen 443

NameVirtualHost *:443

<VirtualHost *:443>
    DocumentRoot "d:/dev/sites"
    ServerName localhost
    SSLEngine on
    SSLCertificateFile "C:/MAMP/conf/apache/server.crt"
    SSLCertificateKeyFile "C:/MAMP/conf/apache/server.key"
</VirtualHost>

En gros, on créer un hôte virtuel également appelé localhost, mais sur le port 443 (HTTPS) au lieu du port 80. Pour cet hôte, vous pourrez définir un DocumentRoot spécifique à la version HTTPS (le chemin vers votre dossier de vos sites).

Dans cette définition, on applique également le chemin vers les 2 fichiers de certificats avec SSLCertificateFile et SSLCertificateKeyFile.

Enregistrez ce fichier.

Installer le certificat auto-signé sous Windows

Une fois le certificat généré double-cliquez sur le fichier server.crt. Là, cliquez sur Installer un certificat.

Installer un certificat auto-signé sous Windows

Choisissez Ordinateur local, faites Suivant.

Puis cochez Placer tous les certificats dans le magasin suivant et cliquez sur Parcourir.

Choisir le magasin de certificat à l'installation sous Windows

Dans la liste, choisissez le magasin Autorités de certification racines de confiance pour s’assurer que Windows fasse confiance à ce certificat.

Ensuite faites Suivant, puis Terminer. Acceptez l’installation pour valider l’installation du certificat.

Tester l’installation

Redémarrez les serveurs dans MAMP pour prendre les nouveaux réglages en compte. Accédez maintenant à l’adresse :

https://localhost

Et en fonction de votre navigateur, vous pourriez-voir ce genre de message (ici sous Google Chrome) :

Comme on est des guedins, on accepte de vivre dangereusement

Passez outre l’avertissement en cliquant sur Afficher les paramètres avancés puis sur Continuer vers le site localhost (dangereux).

Vous pourrez à partir de là travailler en SSL sous localhost !

MAMP Pro – Version payante

MAMP Pro

Avant de couvrir les réglages sous MAMP Pro, qu’est-ce qui pourrait vous amener à passer de MAMP à MAMP Pro ?

Soyons clair tout de suite : si vous ne gérez qu’un seul site, vous aurez peu d’intérêt à utiliser la version professionnelle payante de MAMP.

Par contre, si comme moi vous en gérez plusieurs et qu’il vous arrive fréquemment d’en créer de nouveau, MAMP Pro possède quelques avantages bien pratiques.

Hôtes virtuels

Le premier avantage de MAMP Pro est la possibilité de créer des hôtes pour chacun de vos sites. Ces hôtes sont ensuite accessibles via une adresse personnalisée que vous aurez définie.

Cette option vous permet d’accéder à un site non pas en tapant son chemin complet, par exemple :

http://localhost/monsite

Mais simplement en entrant un faux nom de domaine que vous aurez défini, par exemple :

http://monsite.local

C’est un détail mais ça permet déjà de séparer les différents sites et de disposer d’une adresse plus propre.

Version de PHP spécifique à chaque hôte

Dans MAMP, il est possible de définir la version de PHP que vous souhaitez utiliser. Mais cette version est définie pour l’ensemble de l’application et de votre serveur web et vous n’avez que 2 versions à choix.

Choix de la version de PHP dans MAMP

Avec MAMP Pro, vous pouvez gérer la version de PHP pour chaque hôte que vous créez avec pas mal plus de choix.

Vous me direz : à quoi ça sert ? Et bien si vous avez des sites qui ont 1-2 ans (voir plus) et qui fonctionnent chez l’hébergeur sur une ancienne version de PHP (5.6, 7.1, etc.), il se peut qu’ils ne fonctionnent pas comme il faut sur votre serveur web qui tourne avec la version 7.2.

Dans ce cas que faire ? Conserver tous vos sites sur une ancienne version de PHP, peut-être même plus maintenue chez certains hébergeurs ?

Je travaille avec PHP 7.3 sur certains sites, quand je veux installer la dernière version de Prestashop en local celle-ci n’est pas compatible avec la version la plus moderne de PHP.

Il faut donc pouvoir gérer ce genre de cas particuliers également !

Possibilité d’installer du SSL en local par hôte

Comme démontré plus haut, vous pouvez mettre en place du SSL sous localhost, mais comme pour la version de PHP, celui-ci est global à votre installation de MAMP.

Et MAMP Pro vous met à disposition des outils pour le faire de manière beaucoup plus simple et immédiate.

Vous pouvez générer un certificat auto-signé, l’installer sur votre poste et lui faire confiance pour l’utiliser sur votre hôte personnalisé.

Cela vous permettra d’être au plus proche de la version de production et peut éviter certains problèmes de contenu mixtes lors de la migration de votre hébergement (sites HTTPS avec certaines ressources pointant vers une adresse non sécurisée).

…un tas d’autres réglages

Chaque hôte dispose de ses propres réglages (oui je me répète un peu), que ce soit pour Apache, Nginx, PHP, les accès aux bases de données etc.

L’idée de MAMP Pro est d’émuler au plus proche l’environnement de votre serveur en vous permettant de gérer chaque réglage indépendamment pour chaque hôte.

Votre hébergeur ne vous permet pas de modifier certains réglages PHP ? Ou certaines extensions ne sont pas installées ? Pas de soucis, reproduisez ces réglages sur l’hôte concerné et évitez les problèmes !

Et quelques autres services

MAMP Pro est livré avec d’autres services qu’il est possible d’activer, notamment :

  • DynDNS : Qui vous permet de faire pointer un nom de domaine personnalisé vers votre site en local pour y accéder depuis l’extérieur
  • Memcached : Service de mise en cache d’informations sous la forme clé > valeur.
  • SMTP : Permet d’exécuter un serveur STMP pour tester l’envoi d’e-mail. Par exemple si vous avez installé un formulaire de contact sur votre site en local, vous pourrez le tester avec ce service.

Hé, c’est aussi possible avec MAMP en version gratuite !

Oui, créer des hôtes virtuels pour chacun de vos sites, définir un certificat SSL spécifique par hôte, gérer des versions de PHP différentes, etc. est parfaitement possible avec MAMP sans installer MAMP Pro.

MAMP Pro, après tout, n’est qu’un package qui vous permet de gérer l’installation et la configuration d’Apache, MySQL et PHP de manière avancée. Mais ces 3 outils sont gratuits et open source.

Comme je l’ai démontré plus haut en installant du SSL sur localhost, il est parfaitement possible d’utiliser les capacités offertes par les outils installés par MAMP et faire toutes ses configurations soi-même.

Mais il est tout aussi possible d’installer Apache, MySQL et PHP soi-même, de gérer les fichiers de configuration et de mettre en place des systèmes manuellement pour intégrer toutes les fonctionnalités offertes par MAMP Pro.

Cependant, vu le coût de MAMP Pro, j’ai vite choisi mon camp : il offre une interface simplifiée qui, pour du développement local, devrait fonctionner dans la quasi-totalité des situations.

Savoir comment faire est important et comprendre à quoi sert MAMP et ce qu’il fait concrètement aussi, mais cet outil offre un certain confort qui permet d’éviter de fouiller tous les jours dans les fichiers de config.

Est-ce que vous devriez passer à MAMP Pro ?

Si cette liste de fonctionnalités présentées ci-dessus ne vous parlent pas du tout et ne représentent pas des cas que vous avez déjà eu… la version gratuite vous suffira amplement !

Sinon, je pense que vous êtes à même de voir la plus-value offerte par cette application, le tout pour environ CHF 70.00, et si cette mise à jour s’avère réellement utile dans votre cas.

Et si vous êtes sous MacOS, vous bénéficierez de MAMP Pro 5, une version plus évoluée, plus robustes et avec encore d’autres options.

Créez votre site sur MAMP Pro

Création du dossier

Commencez par créer le dossier dans lequel votre site sera installé. Vous pouvez le créer avec WP-CLI directement, ou créer votre dossier puis installer WordPress à l’intérieur par la suite.

Mais pour faire fonctionner un hôte virtuel, il faut qu’il pointe vers un dossier existant.

Ajout de l’hôte

Ajouter l’hôte en cliquant sur le + en bas de la fenêtre :

Donnez-lui un nom, par exemple monsite.local et choisissez le dossier de votre site dans Document root.

Vous avez aussi la possibilité de créer directement la base de données liées, mais nous nous occuperons de tout ça plus tard avec WP-CLI.

Pour l’extension de votre hôte, vous constaterez ici que j’utilise la fausse extension de nom de domaine .local. Il m’arrive aussi d’utiliser .dev.

Il se trouve que Chrome ou Firefox vont tenter de force le HTTPS sur les noms en .dev (et d’autres à ce que j’ai découvert), mais pas sur les noms en .local.

Il s’agit donc ici plus d’une précaution générale, pour éviter ce genre de comportement si j’installe le site web sans certificat SSL.

Ajout d’un certificat SSL

Cette étape est optionnelle, mais comme mentionné plus haut, Chrome ou Firefox risque de forcer l’accès en HTTPS à votre hôte nouvellement créé.

Et puis ça peut être utile de s’approcher au plus près de la version qui sera installée sur votre hébergeur (parce que si vous hébergez un site sans SSL en 2019, bonjour le référencement et la sécurité moisie !).

Les certificats auto-signés, du moins sous Windows, peuvent réserver bien des surprises ! En réalisant ce tutoriel et en faisant plusieurs fois certaines opérations, certains de mes sites ne fonctionnaient plus en HTTPS.

J’ai testé pas mal de moyen d’installer et de faire d’un certificat auto-signé, un certificat vérifié et de confiance. Mais quoi qu’il arrive, dans certains cas mon certificat n’était plus valide pour Chrome ou Firefox et je devais passer en HTTP, supprimer le certificat, créer un nouveau certificat, l’installer et l’appliquer à nouveau.

J’espère que vous aurez plus de chance que moi sur ce point !

Créer un certificat auto-signé

Plusieurs possibilités pour installer un certificat, passer manuellement par openssl dans le Git Bash comme expliqué plus haut, le faire depuis le Powershell et convertir le pfx en certificat et clé utilisable par Apache, etc.

Nous allons faire au plus simple : en utilisant les fonctionnalités intégrées de MAMP Pro.

Dans les réglages de votre hôte, cliquez sur l’onglet SSL, cochez SSL, puis sur Create self-signed certificate :

Là, MAMP Pro va vous demander d’entrer les informations générales de votre certificat, à savoir votre pays, localité, nom d’entreprise, e-mail, etc.

Cette vue et les informations demandées sont identiques à l’exécution d’une commande openssl depuis Git Bash, MAMP Pro utilisant openssl pour générer les certificats.

Une fois les informations rentrées et la création de votre certificat faite, le chemin vers le certificat et sa clé seront automatiquement ajoutés dans MAMP Pro.

Installer le certificat auto-signé sous Windows

Une fois le certificat généré, rendez-vous dans le dossier où celui-ci a été créé et double-cliquez sur le certificat .crt. Là, cliquez sur Installer un certificat.

Choisissez Ordinateur local, faites Suivant.

Puis cochez Placer tous les certificats dans le magasin suivant et cliquez sur Parcourir.

Dans la liste, choisissez le magasin Autorités de certification racines de confiance pour s’assurer que Windows fasse confiance à ce certificat.

Ensuite faites Suivant, puis Terminer. Acceptez l’installation pour valider l’installation du certificat.

Régler les problèmes de MAMP Pro

Plusieurs éléments peuvent empêcher votre installation de MAMP Pro de fonctionner correctement, ce qui fera redémarrer votre serveur web en boucle.

Voici certains problèmes que j’ai rencontré.

Déplacement de fichiers ou dossiers

Une fois que vous avez configuré un hôte, fait pointer ce dernier vers un dossier et défini un certificat dans sa configuration, faites bien attention à ne pas déplacer le dossier !

Sous Windows en tout cas, si vous déplacez un dossier utilisé par MAMP Pro 4 à un autre endroit, vous risquez de ne plus pouvoir démarrer le serveur web.

Même chose si vous définissez un certificat SSL à un chemin spécifique et que celui-ci est introuvable.

Problèmes de certificats SSL

Il m’est également arrivé qu’en générant des certificats avec openssl (en bref, quand je joue à la bidouille) que des erreurs surviennent et que certains fichiers (clé privée ou certificat) ne soit pas encodé correctement.

Du coup, MAMP ne parvenant pas à charger le fichier SSL, plante et redémarre en boucle.

N’importe quelle erreur de configuration …

…peut empêcher MAMP Pro de fonctionner. Pour moi, il s’agit là du plus gros problème de MAMP Pro sous Windows.

Une fois qu’un problème est survenu, MAMP Pro vous affichera les erreurs puis redémarrera les services. Le problème, c’est qu’il tente de redémarrer en boucle sans vous laisser arrêter les processus pour corriger le problème.

Il n’est donc plus possible, à ce moment-là, d’enregistrer les réglages de vos hôtes. Vous pourrez y accéder et faire les modifications désirées, mais à l’enregistrement cela ne fonctionnera pas.

Comment corriger ces problèmes ?

Vous connaissez le problème

Si vous connaissez le problème, le plus simple est de rétablir les choses tel quels étaient avant votre modification.

Modifiez les réglages de l’hôte pour pointer vers les nouveaux dossiers et fichiers en cas de déplacement, après les avoir copiés, puis supprimez les versions originales. Oui c’est carrément contre-productif !

S’il s’agit d’une erreur SSL régénérez votre certificat.

Vous ne connaissez pas le problème

Rendez-vous dans C:\MAMP\logs et consultez les différents logs. En règle générale, les erreurs utiles se trouveront dans le fichier apache_error.log.

Fichiers de log de MAMP

Dans le doute, n’hésitez pas à fouiller les autres fichiers, vous pourrez constater qu’il y en a quelques-uns. Grâce à ces derniers, vous devriez pouvoir cibler votre problème.

N’hésitez pas à me demander de l’aide en commentaire si vous ne parvenez pas à localiser le souci !

Réinitialiser la base de données de MAMP

En cas de soucis grave, vous pouvez toujours accédez au fichier de base de données des réglages de MAMP. Celui-ci se trouve dans :

C:\users\[votre utilisateur]\appdata\roaming\appsolute\mamppro\userdb

Il s’agit d’un fichier appelé mamp.db, une base de données SQLite. Vous avez deux solutions à ce moment-là :

  • Supprimer ou renommer ce fichier pour réinitialiser les réglages au prochain lancement de MAMP Pro et recommencer la configuration
  • Ouvrir le fichier mamp.db avec un utilitaire (par exemple SQLiteOnline) et modifier les réglages manuellement

Conclusion

MAMP ou MAMP Pro devraient vous permettre de faire l’essentiel pour mettre en place un environnement de développement solide grâce aux outils Apache, SQL et PHP.

Bien sûr, comme mentionné dans l’article, il est toujours possible de faire tout ça manuellement. Sans compter que MAMP Pro sous Windows a quelques soucis un peu agaçant à l’utilisation. Pour moi, malgré les problèmes, l’enjeu en vaut bien la chandelle !

Pour la suite de cette série, je couvrirai WP-CLI et les nombreuses possibilités et automatisations offertes par cet incroyable outil !

Vous utilisez MAMP ou MAMP Pro ? Ou vous gérez ces configurations manuellement ? Laissez-moi un commentaire pour m’en dire plus sur votre manière de travailler !



0 commentaires

Soumettre un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

derniers articles
de mon blog

Pin It on Pinterest