configurer l'environnement de développement local

Objectif

Avec les dépôts GIT et l'augmentation de la puissance des machines, il est de plus en plus pertinent de développer exclusivement dans son PC, et de pousser les modifications du code dans une forge quelconque. Toutefois, il faut que toutes les fonctionnalités nécessaires soient disponibles : test de l'envoi de mails, redirection d'adresses, certificats numériques, etc.

Plusieurs mécanismes sont utilisables. Celui qui est à la mode actuellement, c'est l'utilisation de containers dockers. Néanmoins, ceux-ci doivent également être correctement configurés.

Pour ma part, je préfère configurer les composants de mon poste de travail (sous Linux Ubuntu), ce qui est globalement plus simple.

Créer une entrée DNS pour son application

Pour réaliser les tests localement, il est préférable d'utiliser une adresse web plutôt qu'un http://localhost/mondossier. Cela simplifie la gestion des redirections et isole bien mieux les sessions d'identification PHP.

Le plus simple : éditer le ficher /etc/hosts, en rajoutant la ligne :

127.0.0.1 localhost appli1.local appli2.local appli3.local

Ainsi, l'adresse http://appli1.local sera correctement traitée par le serveur Apache.

Configuration Apache

Maintenant que nous avons configuré une entrée DNS, il faut maintenant la faire prendre en compte dans Apache. Dans le dossier /etc/apache2/sites-available, créez un fichier collec.conf (exemple pris pour l'application collec) :

<VirtualHost *:80>
    ServerName collec.local
    ServerPath /collec.local
    RewriteEngine On
    RewriteRule ^ https://collec.local%{REQUEST_URI} [R]
</VirtualHost>
<VirtualHost *:443>
    ServerName collec.local
    ServerPath /collec.local
    SSLEngine on

#SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem

    SSLCertificateFile /etc/ssl/certs/collec.crt
    SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
    SSLCACertificateFile /etc/ssl/certs/cacert.crt
    DocumentRoot /var/www/html/collec
</VirtualHost>

Activez la configuration :

a2ensite collec
service apache2 reload

L'appel au site collec.local redirigera toutes les connexions vers /var/www/html/collec, en mode https. La configuration des certificats est expliquée ensuite.

Configuration Postfix

Pour tester l'envoi de mails depuis l'application, on va utiliser le moteur postfix installé en général par défaut (sinon, ajoutez-le dans votre pc).

Dans sa configuration de base, Postfix n'envoie des mails que vers le compte root, et uniquement pour les programmes locaux. Nous avons toutefois besoin d'envoyer des mails vers des adresses correctement constituées, par exemple moncompte@maboite.com. Le mail ne partira pas vraiment vers le serveur maboite.com, mais il faut pouvoir vérifier qu'il soit bien envoyé (bugs de programmation, contenu des variables, etc.), et ce en consultant la boite locale à votre compte de machine.

Postfix utilise deux tables de correspondance, pour faire correspondre une adresse avec une boite. Le fichier /etc/aliases sert pour les comptes locaux, et il faut rajouter la table virtual pour traiter les adresses à prendre en compte.

Éditez le fichier /etc/postfix/main.cf, et rajoutez cette ligne :

virtual_alias_maps = hash:/etc/postfix/virtual

Redémarrez ensuite le service postfix

service postfix restart

Ajoutez la table /etc/postfix/virtual. Voici un exemple particulièrement simple, mais suffisant pour les phases de test qui nous intéressent :

test@mamachine.com quinton

eric.quinton@masociete.com quinton

puis lancez la commande

postmap /etc/postfix/virtual

pour créer la base de données qui sera traitée par Posftix. Ainsi, les mails envoyés vers test@mamachine.com seront visibles dans un terminal, avec la commande mail :

"/var/mail/quinton": 1 message 1 new
>N  1 root@mamachine.UNKN  Tue Aug  8 15:36   14/446   test

En tapant sur la lettre t, vous visualiserez le message reçu (d pour le supprimer ensuite).