Posterous theme by Cory Watilo

dynamic vhosts and dns

1:43 ночи... Утром на работу. Буду пугать сотрудников красными глазами. Но все-таки в неравной борьбе с DNS я победил, хотя и не до конца. Что имеем: домашний сервак с кеширующим dns'ом (BIND9), воркстейшн (Вынь) и машинку devil (VMWare, apache+php+mysql). Что надо сделать: динамический виртуальный хостинг Зачем: для облегчения работы с проектами. Зачем было трогать DNS? Не проще ли в hosts прописывать? Кому-то может и проще, но это неспортивно. Чтобы можно было обращаться к проектам как http://test1.devil , http://projectname.devil понадобилось настроить DNS. Проверка показала, что через hosts этого сделать нельзя. В общем, доку по DNS я только начал читать, поэтом по данному пункут все комментарии приетствуются. В файлике /etc/bind/named.conf я прописал зону devil: [cc lang="ini"]zone "devil" in { type master; file "/etc/bind/devil"; };[/cc] и в указанный файлик /etc/bind/devil вписал следующее: [cc lang="ini"]$TTL 604800 ; $ORIGIN devil. @ IN SOA devil. root.devil. ( 1 604800 86400 2419200 604800 ) @ IN NS devil. devil. IN A 10.1.1.21 *.devil. IN A 10.1.1.21[/cc] Что значат цифры между (...) я представляю с трудом. $TTL - время, сколько запись может существовать в кеше имен. $ORIGIN - это согласно RFC, указываем сдесь имя домена. Потом символом "@" можем его заменять. Остальное писалось методом проб и ошибок из разных мануалов, потому как должно быть - не знаю. В результате такое извращение привело к тому, что на всех машинках сети ping some.devil дает положительный результат, ping devil также работает везде, кроме как на сервере с DNS. Почему - не знаю. А дальше по доке апача настроил вирт. хостинг. Идея заключается в том, что в определенной папке можно создать свою папку с именем сайта (например, pupkin/www) и сразу же обратиться к ней из браузера (http://pupkin.devil). В доке апача приводится следующий пример: [cc lang="apache"] # get the server name from the Host: header UseCanonicalName Off # this log format can be split per-virtual-host based on the first field LogFormat "%V %h %l %u %t \"%r\" %s %b" vcommon CustomLog logs/access_log vcommon # include the server name in the filenames used to satisfy requests VirtualDocumentRoot /www/hosts/%0/docs VirtualScriptAlias /www/hosts/%0/cgi-bin [/cc] Я выбрал именно такой метод. Его, правда, пришлось несколько подправить. %0 - все имя, т.е. создав папку test.com сервер отдаст ее если к нему придет запрос http://test.com. По условию, мне это не подхошло. Пойдя по ссылке и описанию, я нашел, что %0 следует заменить на %1 - из примера это будет test. Но опять-таки, просто так все не запустилось. Надо было добавить модуль апача mod_vhost_alias. ln -s /etc/apache2/mods-available/vhost_alias.load /etc/apache2/mods-enabled/ и в результате это вылилось в такую конструкцию: [cc lang="apache"]VirtualDocumentRoot /var/www/%1/www VirtualScriptAlias /var/www/%1/cgi-bin [/cc] и симлинку на /var/www ко мне в хому с возможностью записи (chmod 777 /var/www). Вот, собственно, и все. С чувством выполненного долга можно идти спать.
| Viewed
times
Filed under: