Virtualhosty pro Apache bez nutnosti editace /etc/hosts
Následující postup umožní vytvářet nové lokální subdomény pro virtualhosty Apache bez nutnosti editace souboru /etc/hosts. Docílí se toho použitím dnsmasq jako lokálního DNS serveru. Jedná se o řešení pro Linux. Postup byl testován ve Fedoře, v jiných distribucích se pravděpodobně bude lišit minimálně způsob instalace.
Nainstalujeme dnsmasq:
yum -y install dnsmasq
Povolíme spuštění po startu:
chkconfig --level 5 dnsmasq on
Do souboru /etc/dnsmasq.conf přidáme následující řádek, který zajistí, že cokoliv.dev
bude směřováno na localhost (lze zadat více záznamů s různými doménami a IP adresami):
address=/dev/127.0.0.1
Upravíme /etc/resolv.conf tak, aby se používal lokální DNS server, následující řádek vložíme do tohoto souboru jako první:
nameserver 127.0.0.1
Spustíme dnsmasq:
service dnsmasq start
V tuto chvíli by již mělo fungovat cokoliv.dev pro localhost. Otestovat můžeme např. pomocí příkazu:
host test.dev
Problém je však v tom, že NetworkManager při každém připojení a odpojení obsah /etc/resolv.conf kompletně přepíše. Toto je možné ošetřit vytvoření scriptu, který bude automaticky volán NetworkManagerem po tom, co dojde k připojení či odpojení od Internetu.
Vytvoříme soubor /etc/NetworkManager/dispatcher.d/add-local-nameserver (název může být libovolný, ale musí jít o spustitelný soubor, do kterého může zapisovat pouze uživatel root), kam vložíme toto:
#!/bin/sh RESOLV=/etc/resolv.conf RESOLV_TMP=/tmp/resolv.conf LOC_NS=127.0.0.1 if ! grep -q $LOC_NS $RESOLV; then echo "# Generated by $0" > $RESOLV_TMP echo "nameserver $LOC_NS" >> $RESOLV_TMP cat $RESOLV >> $RESOLV_TMP mv $RESOLV_TMP $RESOLV fi
Tím se pokaždé utomaticky do /etc/resolv.conf vloží lokální nameserver.
Návod pro dosažení stejného výsledku pro Windows.
December 1st, 2009 at 18.22
Díky za návod. Jak jednoduché…
.
Jen dodám, že pod Gentoo stačí vytvořit soubor /etc/resolv.conf.tail, který se vždy do resolv.conf přidá za vygenerovaný obsah. Možná to bude fungovat i na Fedoře
December 1st, 2009 at 18.27
…tedy pardon. Je třeba použít resolv.conf.head, aby byl server na začátku.
December 1st, 2009 at 23.43
Cr: tohle na Fedoře – zdá se – nefunguje. Řešení se scriptem pro NM dispatcher by ale mělo fungovat všude. Nicméně díky za tip.