При разработке и поддержке большого числа сайтов, создание виртуальных хостов на локальной машине занимает определенное время.
Как вариант, можно скриптами обновлять конфиги apache и файл hosts.
Другое решение, настройка собственного DNS сервера с зоной верхнего уровня.
Это мы и сейчас и проделаем.
Итак, создадим зону ".dev" (используя демон named и apache под FreeBSD)
Правим файл /etc/namedb/named.conf:
options { directory "/etc/namedb"; pid-file "/var/run/named/pid"; dump-file "/var/dump/named_dump.db"; statistics-file "/var/stats/named.stats"; // внешний DNS // укажите ваш текущий DNS // или сервер компании <s>зла</s> добра: forwarders { 8.8.8.8; }; }; // наша зона zone "dev" { type master; file "master/dev"; };
Создаем файл новой зоны /var/named/etc/namedb/master/dev:
$TTL 3600 ; 1 hour dev. IN SOA ns1.dev. admin.www.dev ( 2009112601 ; Serial 10800 ; Refresh 3600 ; Retry 604800 ; Expire 86400 ; Minimum TTL ) ; DNS Servers IN NS ns1.dev IN A 127.0.0.1 ; Machine Names ns1 IN A 127.0.0.1 * IN A 127.0.0.1
После перезапуска namedb и указав 127.0.0.1 в качестве вашего DNS (/etc/resolv.conf), любой-адрес.dev будет вести на 127.0.0.1.
Пробуем?
% dig любой-адрес.dev … ;; ANSWER SECTION: \208\187\209\142\208\177\208\190\208\185-\208\176\208\180\209\128\208\181\209\129.dev. 3600 IN A 127.0.0.1 … % ping waka.dev ~ PING waka.dev (127.0.0.1): 56 data bytes 64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.024 ms ^C
Теперь нужно научить apache. В httpd.conf пишим в конец файла:
UseCanonicalName Off VirtualDocumentRoot /www/%-1/%-2
После перезапуска apache, набираем в адресе браузера http://habrahabr.dev/ — apache выдаст /www/dev/habrahabr/index.html
Заранее создаем этот файл (иначе полуим ошибку 404) и разрешаем доступ на /www/dev/ (иначе получим ошибку 403) в httpd.conf:
<Directory "/www/dev/"> Options Indexes Includes FollowSymLinks AllowOverride All Allow from all </Directory>
Другие компьютеры
Дополнительно, можно сделать доступной эту схему в виртуальных машинах и в локальной сети. Для этого нужно в файле /etc/namedb/master/dev поменять 127.0.0.1 на IP вашего компьютера и указать его в качестве DNS на нужных компьютерах.
Веб студия
В фирме, где вы работаете, можно для каждого сотрудника настроить свой домен 1 или 2 уровня используя один DNS сервер.
Ой!
- Apache неправильно передает DOCUMENT_ROOT в cgi или в mod_php.
Вместо вычисленного VirtualDocumentRoot он передает DocumentRoot указанный в httpd.conf.
Имейте это ввиду при использовании этой переменной.
- Современные браузеры совмещают адресную строку и строку поиска. Если вас перекидывает на результаты поиска после ввода домена, домен вводите со слэшом (/) на конце, напрмер, waka.dev/
Ссылки
Apache: Динамически конфигурируемый массовый виртуальный хостинг