• Technique
PHP Tour 2017 à Nantes, retour sur le premier jour de la conférence...

#PHPTour, retour sur le premier jour de la conférence.

  • Technique
"php-crashers" : exemples de scripts qui déclenche une segmentation fault en PHP

Erreur de segmentation, qu'est-ce que c'est et dans quels cas sont elles déclenchées en PHP ? Un dépôt Github présente quelques exemples détaillés...

  • Développement
  • Technique
PHP Coding Standard Fixer ou comment nettoyer les namespaces inutiles en PHP ?

Aujourd'hui il existe des outils pour aider à produire un code propre et respectant une mise en forme normée, pourquoi ne pas essayer !

  • Technique
Désactivation de certaines fonctionnalités des navigateurs sur les sites non "sécurisés"

  • Serveur
  • Technique
Let’s Encrypt : une nouvelle autorité de certification libre, automatisée et ouverte

  • Développement
  • Technique
Comment cloner un objet en JavaScript

Toute assignation créé une référence et pas une copie. Ce comportement est standard dans la programmation mais en JavaScript on se perd facilement...

  • Serveur
  • Technique
Comment en finir avec l'édition du fichier hosts ?

Comment configurer un serveur DNS simple dans un environnement de développement ? En utilisant dnsmasq, un outil efficace qui permet de s'affranchir de l'édition du fichier hosts.

  • Développement
  • Technique
PHP 7: Installation sur une distribution Ubuntu Server

Plus d'excuse maintenant pour ne pas installer et utiliser PHP 7 sur votre serveur Ubuntu. Grâce à ce guide, vous pouvez suivre une procédure fiable et officielle sans passer par une compilation personnalisée.

  • Développement
  • Technique
Symfony, Composer et la configuration `platform`

Une erreur du type `overriden by "config.platform.php"` en installant vos dépendances composer ? Venez comprendre la configuration qui en est la cause et comment la dompter !

  • Développement
  • Technique
  • Tests unitaires
Atoum: Comment automatiser l'utilisation du fichier de `bootstrap` ?

J'ai utilisé atoum sur un projet récemment. Il m'a permis de découvrir une autre approche des tests unitaires, plus simple et efficace

  • Technique
On a testé Firefox Developer Edition !

Mozilla vient de présenter sa dernière nouveauté, Firefox Developer Edition. C'est un outil puissant qui intègre les dernières innovations pour aider les développeurs web au quotidien.

  • Technique
Contrôler l'installation des mises à jour de Wordpress

Il est intéressant de pouvoir limiter l'installation des mises à jour à certains utilisateurs pour contrôler les problèmes techniques qui peuvent en découler.

  • Technique
L'Ipad et les problèmes de redimensionnement des images hors viewport

L'Ipad et safari sur iOS n'autorisent pas par défaut l'application d'une image de fond qui dépasse du viewport, voici quelques astuces pour contourner ce problème.

  • Design
Prendre les bonnes décisions pour une interface plus efficace

Vous vous demandez pourquoi certaines interfaces web plaisent aux internautes et d’autres pas ?

  • Stratégie
Comment rédiger un brief efficace pour obtenir ce que vous voulez !

Vous souhaitez que votre projet aboutisse à la réalisation que vous imaginez ?

Mots Clés

  • Serveur
  • Technique

27 février 2016 par Stéphane Hulard

Comment en finir avec l'édition du fichier hosts ?

Aujourd’hui, la plupart des développeurs web sont familiarisés avec le fonctionnement du fichier hosts pour rediriger le trafic d’un domaine vers une IP, par exemple 127.0.0.1.
Le problème avec cette approche est que tout ajout ou modification de projet nécessite d’intervenir sur le fichier. En plus il ne peut pas être modifié par un utilisateur lambda, seulement un administrateur.

Heureusement, il existe d’autres méthodes pour simplifier ces modifications. Il est possible de passer par un serveur DNS local et de lui faire gérer tout le routage des domaines. Pour cela, Dnsmasq est tout indiqué, il est simple à installer et à configurer.

Dans cet article, je présente le processus d’installation et de configuration sur un mac.

Installation

Il existe différentes méthodes d’installation (compilation, téléchargement de binaires…). J’utilise, sur ma machine, le gestionnaire de dépendance Homebrew. Si vous ne connaissez pas Homebrew, je vous invite à découvrir les différentes méthodes d’installation sur wiki Gihub.

Une simple commande permet d’installer dnsmasq :

#Mise à jour des dépôts
brew update
#Installation
brew install dnsmasq

Une fois l’exécution terminée, plusieurs informations sont affichées sur l’emplacement de la configuration à utiliser.

Configuration

La mise en place de ce logiciel a pour objectif de simplifier la configuration d’un poste de développeur. Personnellement, j’utilise des domaines en .dev sur mes environnements de développements pour faire facilement la différence entre ma version locale et la version en ligne.

L’outil est fournit avec une configuration d’exemple qu’il va falloir dupliquer pour commencer !

cp $(brew list dnsmasq | grep /dnsmasq.conf.example$) /usr/local/etc/dnsmasq.conf

Il faut ensuite éditer le fichier /usr/local/etc/dnsmasq.conf dans un éditeur de texte et rajouter la ligne suivante :

address=/.dev/127.0.0.1

Cette ligne va permettre à l’outil d’envoyer toutes les URLs contenant .dev vers l’IP 127.0.0.1. Si vous préférer utiliser un autre TLD, libre à vous, il suffit d’adapter la ligne.
La configuration d’exemple est très complète et détaillée mais est totalement commentée. J’ajoute donc la ligne juste en dessous du commentaire « #address=/double-click.net/127.0.0.1 » pour rester cohérent et la retrouver facilement même si je viens à modifier d’autres paramètres.

Lancer Dnsmasq

Maintenant que la configuration est en place, il faut démarrer le service. Lors de l’installation le fichier plist utile à la mise en place a été placé sur la machine. On copie d’abord ce fichier dans le répertoire contenant les scripts d’initialisation des daemons et on le charge avec launchctl pour qu’il démarre :

sudo cp -fv /usr/local/opt/dnsmasq/*.plist /Library/LaunchDaemons/
sudo launchctl load /Library/LaunchDaemons/homebrew.mxcl.dnsmasq.plist

Pour vérifier que tout est en ordre, il est possible d’utiliser la commande dig pour envoyer une requête DNS :

dig toto.dev @127.0.0.1

Vous devez normalement obtenir un résultat décrivant un enregistrement de type A pointant vers 127.0.0.1 :

...
;; ANSWER SECTION:
toto.dev. 0 IN A 127.0.0.1
...

Si jamais vous avez besoin de démarrer ou arrêter le service, il suffit d’utiliser launchctl :

sudo launchctl stop homebrew.mxcl.dnsmasq
sudo launchctl start homebrew.mxcl.dnsmasq

Configuration du système

Maintenant que dnsmasq est démarré et opérationnel, il faut configurer le système pour lui demander de l’utiliser. En effet, avoir démarré un serveur DNS est une chose mais pour le moment il n’intercepte aucune requête.

Pour cela il y a deux approches :

La première est très simple car il suffit d’aller dans les préférences systèmes et modifier le DNS dans la configuration réseau. Mais la configuration mise en place précédemment n’est pas celle d’un serveur DNS complet. Devoir maintenir son propre serveur DNS sur son poste de travail n’est pas une mince affaire !

La seconde demande d’exécuter quelques commandes mais est plus viable à long terme. La plupart des systèmes Unix ont un fichier de configuration /etc/resolv.conf qui décrit au système comment les requêtes DNS doivent être traitées.
Par chance, Mac OS est basé sur un système Unix, dispose de ce fichier et va, en plus, nous permettre de créer des règles de résolution spécifiques dans le répertoire /etc/resolver.

Il n’existe probablement pas, il faut donc le créer :

sudo mkdir -p /etc/resolver

Ensuite, il faut décrire notre règle. Un fichier ayant le même nom que le domaine de premier niveau (ou TLD) choisit doit être créé, dans mon cas c’est dev.
Il est possible de configurer tout un tas de chose sur la méthode de résolution et les règles à appliquer. Pour cela, je vous invite à étudier le fonctionnement de resolv.conf. Seule la directive nameserver nous intéresse ici. C’est elle qui permet d’envoyer les requêtes vers un serveur DNS particulier (ici 127.0.0.1).

Il faut finalement créer le fichier dev :

sudo tee /etc/resolver/dev >/dev/null <<EOF
nameserver 127.0.0.1
EOF

Mac OS recharge directement la configuration, il n’y a plus aucune modification à effectuer. Le processus d’installation est totalement terminé. Dorénavant, dès que vous accéder à un domaine se terminant par « .dev » sur votre machine, vous êtes envoyé vers 127.0.0.1. C’est une sorte de fichier hosts automatique.

Ca ne supprime pas du tout le fonctionnement du fichier hosts, c’est un complément sympa pour ne plus avoir à y toucher. Il y a quelques manipulations à effectuer mais le tout est relativement simple à intégrer.

J’ai repris toutes les commandes dans un gist unique que vous pouvez utiliser pour tout faire d’un coup :

La prochaine étape est de configurer le serveur web (Apache, Nginx, …) pour qu’il puisse tirer avantage de ce nouveau dynamisme. J’en parlerai dans un prochain article.

Si tout n’est pas clair, n’hésitez pas à me faire vos retours sur ce pas à pas pour que je puisse l’améliorer !

Partager cet article


Soumettre un commentaire

Vous avez décidé de laiser un commentaire. C'est fantastique !
Votre adresse e-mail ne sera pas publiée, merci d'être passé !

(*) Champs obligatoires Envoyer

Votre commentaire a été soumis à validation

mautic is open source marketing automation