Pull to refresh

Автоматические хосты для веб-разработки (FreeBSD)

Reading time 2 min
Views 5.9K


При разработке и поддержке большого числа сайтов, создание виртуальных хостов на локальной машине занимает определенное время.

Как вариант, можно скриптами обновлять конфиги 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 сервер.

Ой!


  1. Apache неправильно передает DOCUMENT_ROOT в cgi или в mod_php.
    Вместо вычисленного VirtualDocumentRoot он передает DocumentRoot указанный в httpd.conf.
    Имейте это ввиду при использовании этой переменной.
  2. Современные браузеры совмещают адресную строку и строку поиска. Если вас перекидывает на результаты поиска после ввода домена, домен вводите со слэшом (/) на конце, напрмер, waka.dev/



Ссылки

Apache: Динамически конфигурируемый массовый виртуальный хостинг
Tags:
Hubs:
+31
Comments 21
Comments Comments 21

Articles