Конфигурируем веб- и dns-сервер для локальной разработки
Все нижесказанное справедливо для Ubuntu (Debian). Другие системы скорее всего будет отличаться только расположением конфигурации Apache.
Установим весь необходимый софт:
# sudo apt-get install bind9 apache2 # а так же базы данных, интерпретаторы и модули к ним по вкусу.
Теперь создадим зону .loc, все домены которой будут ссылаться на наш веб-сервер. Я указал адрес 192.168.5.1, таким образом, домены новой зоны будут доступны всей домашней сети.
/etc/bind/named.conf:
<...>
zone "loc" {
type master;
file "/etc/bind/db.loc";
};
/etc/bind/db.loc:
$TTL 604800
@ IN SOA loc. root.loc. (
5 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
loc. IN A 192.168.5.1
IN NS ns.loc.
*.loc. IN A 192.168.5.1
И займемся веб-сервером (apache2). Работать все будет через mod_vhost_alias т.к. это самый простой и удобный в данном случае метод.
Активируем этот модуль:
# cd /etc/apache2/ # sudo ln -s mods-available/vhost_alias.load mods-enabled/
И создадим правила для виртуальных хостов:
/etc/apache2/httpd.conf (или где-нибудь в другом месте): <...> UseCanonicalName Off ServerName loc VirtualDocumentRoot /var/www/%0
Перезапускаем все это хозяйство:
# sudo /etc/init.d/bind9 restart # sudo /etc/init.d/apache2 restart
Таким образом запрос http://abc.loc/ будет обработан виртуальным хостом с DocumentRoot /var/www/abc.loc
Мне не хватает только одного момента – чтобы VirtualBox цеплял эти виртульные хосты и, вообще, умел обращатся к машине на которой запущен не только за интернетом. Будем гуглить и читать маны. Возможно, получится это сделать через iptables или неким образом повлиять на NAT VirtualBox’а
Все оказалось очень просто – устанавливаем последнюю версию (2.1 на данный момент) http://www.virtualbox.org/wiki/Linux_Downloads
В настройках выбираем метод – host и нужный интерфейс (для меня это eth1, 192.168.5.1)
Затем в guest-системе настраиваем этот интерфес необходимым образом (я установил ip 192.168.5.3, gateway 192.168.5.1, dns-server 192.168.5.1)

