dnsmasq: своя DNS-зона для локальной разработки

При разработки с помощью Django (да любого другого современного веб-фреймворка) часто приходиться запускать встроенный сервер :) URL у которого может быть таким http://127.0.0.1:8000. Если разрабатывается один сайт - это не большая проблема. Но если параллельно отлаживаются несколько сайтов то возникает пара незначительных проблем. Браузеры кешируют картинки стили одного сайта а при запуске локального сервере для другого сайта можно наблюдать эти же картинки и побитые стили (если имена файлов совпадают). Хотя это и лечится принужденным обновлением кеша но доставляет определенные неудобства. Также сбрасываются куки и приходится на каждом проекте заново логинится. Еще хотелось бы для каждого проекта лаконичный домен типа hollywood.dev или project.dev.

Для решения этих 'проблем' можно для каждого нового проекта вносить записи в /etc/hosts или поднять локальный облегченный DNS-сервер - dnsmasq.

dnsmasq - легковесный DNS DHCP TFTP (BOOTP PXE) сервер.

Установка

# под Arch Linuxyaourt -S dnsmasq# под Ubuntusudo apt-get install dnsmasq 

Добавим в настройки dnsmasq зону *.dev доступную только на локальной машине.

# sudo vim /etc/dnsmasq.confaddress=/dev/127.0.0.1listen-address=127.0.0.1

Перезапустим dnsmasq

# для Arch Linuxsudo systemctl restart dnsmasq# для Ubuntu sudo /etc/init.d/dnsmasq restart

Сообщим dns-resolver о новом dns-сервере добавив 127.0.0.1 в начало файла

# для Arch Linux# sudo vim /etc/resolv.conf.headnameserver 127.0.0.1nameserver 8.8.8.8# для Ubuntu# sudo vim /etc/resolv.confnameserver 127.0.0.1nameserver 8.8.8.8

После этого нужно перезапустить сетевое подключение

# для Arch Linux (если используется netcfg)sudo netcfg -r network_profile# для Arch Linux (если используется netctl)sudo netctl restart network_profile# для Ubuntusudo /etc/init.d/networking restart

Проверим результат

ping hollywood.dev

Из 'побочных эффектов' после установки dnsmasq замечено уменьшение времени при резолвинге (dns-resolve) запросов к внешнему DNS-серверу - dnsmasq умеет кешировать dns-запросы по умолчанию размер кеша равен 150.

Статус работы dnsmasq можно проверить

# по логамtail /var/log/messages# командойsudo killall -s USR1 dnsmasq

Чтобы локальный сервер был доступен по адресу например hollywood.dev нужно запустить локальный сервер на 80-ом порте. Под *nix для использования этого порта нужны root-привилегии.

Разрешим своему пользователя запускать локальный django-сервер на 80-ом порте для этого добавим в /etc/sudoers следующею строку:

# sudo visudoproft ALL=NOPASSWD: /usr/bin/djrs

Создадим скрипт djrs и дадим ему права 766:

# sudo vim /usr/bin/djrs#!/usr/bin/env bashpython manage.py runserver 80

Добавим alias для быстрого запуска сервера:

# vim ~/.zshrc# vim ~/.bashrcalias rs="sudo djrs"

Оригинал статьи http://proft.me/2013/03/30/dnsmasq-svoya-dns-zona-dlya-lokalnoj-razrabotki/

0 комментариев

Оставить комментарий