Klávesové zkratky na tomto webu - rozšířené Na obsah stránky

Translate to English… Ins Deutsche übersetzen…

Heuréka: example.l na localhost

Mám ve zvyku vyvíjet a spouštět webové aplikace na doménách s příponou .l, takže třeba vývojová verze http://nettephp.com mi běží na http://nettephp.l. Což znamená přidat do souboru hosts řádek pro každou subdoménu, např.:

nettephp.l   127.0.0.1
www.nettephp.l   127.0.0.1
forum.nettephp.l   127.0.0.1

To je přinejmenším otravné. Kéž by hosts podporoval zápis pomocí wildcards, stačilo by napsat

*.l   127.0.0.1

a měl bych vystaráno. Jenže tohle nefunguje. Hledal jsem proto jiné řešení. K velkému překvapení, internet se návody nejen že nehemží, nenašel jsem vůbec nic.

Bylo zřejmé, že budu potřebovat najít lokální DNS server, který toto umožní. Narazil jsem na Simple DNS Plus. Po instalaci je potřeba jej manuálně aktivovat, tj. říci síťovému připojení, že má používat DNS server na adrese 127.0.0.1. Poté přímo v aplikaci v Tools / Options / Plug-Ins vytvořit instanci pluginu Regular Expressions a určit, že maska \.l$ se bude mapovat na adresu 127.0.0.1.

Funguje to výborně, jen cena $79 mi nepřipadá odpovídající, využívám-li okrajové vlastnosti jinak našlapaného programu.

Další možností je instalace multiplatformního opensource DNS serveru BIND. Stáhl jsem si distribuci pro Windows a nainstaloval do výchozího adresáře. Ovšem zapomeňte na nějaké klikací prostředí, BIND zná jen příkazovou řádku a textové konfigurační soubory. Pro mě španělská vesnice. Naštěstí mě pohled do dokumentace neodradil rovnou a podařilo se mi vytvořit konfigurační soubory. Ty se nacházejí v podadresáři etc, v mém případě je to c:\Windows\System32\dns\etc\. Na vašem počítači může být cesta odlišná.

Soubor etc\named.conf

options {
        directory "C:\Windows\System32\dns\etc"; // změňte pokud používáte jinou cestu.
};

zone "localhost" {
        type master;
        file "localhost";
};

zone "l" {
        type master;
        file "localhost";
};

zone "0.0.127.in-addr.arpa" {
        type master;
        file "localhost.rev";
};

Sourbor etc\localhost (využívající wildcard DNS record)

$TTL    86400
@       IN SOA   @ root (
                        2005022501      ; serial
                        3H              ; refresh
                        15M             ; retry
                        1W              ; expiry
                        1D )            ; minimum

        IN NS        @
        IN A         127.0.0.1
*.l.    IN A         127.0.0.1

a nakonec soubor etc\localhost.rev

$TTL    86400
@       IN      SOA     localhost. root.localhost.  (
                            2005022501      ; serial
                            3H              ; refresh
                            15M             ; retry
                            1W              ; expiry
                            1D )            ; minimum

        IN      NS      localhost.
1       IN      PTR     localhost.

Poté stačí na síťovém připojení aktivovat DNS server na adrese 127.0.0.1 (viz postup výše) a spustit službu ISC BIND. Světe div se, ono to funguje!

C:\>ping nettephp.l

Příkaz PING na nettephp.l [127.0.0.1] - 32 bajtů dat:
Odpověď od 127.0.0.1: bajty=32 čas < 1ms TTL=128

Komentáře RSS 2.0 komentářů » přidat

avatar

#1 Jakub Bouček http://www.jakub-boucek.cz/ nový

Děkuji, to je spása!!!

Posláno 1. 12. 2009 v 7.41 | Odpovědět
avatar

#2 Kenn http://Opicinoviny nový

Při pohledu na postup se nejspíš spokojím s localhost/mujweb :) každopádně lokální DNS zní lákavě a nejspíš ho vyzkouším.

Posláno 1. 12. 2009 v 8.03 | Odpovědět
avatar

#3 karf http://www.karf.cz nový

Díky za tento článek. Před časem jsem si prošel stejnou cestou až k BINDu, kde mě ovšem pohled do dokumentace odradil.

Posláno 1. 12. 2009 v 8.59 | Odpovědět
avatar

#4 golf web@xTrip.net nový

Zdar,
zajimavý typ. Také jsem se tím trápil. Nakonec jsem to vyřešil tak, že všechny projekty mám v adresáři …/dev/sub. Mám PHP skript, který spustím, on projde podadresáře v …/dev/sub a pro každý podadresář vytvoří konfiguraci do apache (virtual host) a zároveň zapíše subdom0nu do hosts. Pak je3t2 restartuje apache pomocí exec(apache restart). Takže celé nastavení nové subdomény spočívá ve spuštění jednoho skriptu „php server.php“

Posláno 1. 12. 2009 v 9.06 | Odpovědět
Na komentář reagoval [9] tiso
avatar

#5 ZETCHA zetcha@prezentace.cz nový

Ještě jsem našel open source Dual DHCP DNS Server jen jsem se nedostal k tomu ho nakonfigurovat. Super je, že ho lze mít jako „portable“ a spouštět ho např z flash disku (můj případ).

Posláno 1. 12. 2009 v 9.11 | Odpovědět
avatar

#6 Jaroslav Moravec skic@zamberk.cz nový

Heuréka! Děkujeme za hotové řešení. Doteď jsem to řešil scriptem na tvorbu nového projektu, který mi zanesl všechny údaje do hosts i httpd.conf, tohle mi ještě věci zpřehlední a usnadní.

Posláno 1. 12. 2009 v 9.32 | Odpovědět
avatar

#7 Jiří Landsman kruppi@gmail.com nový

díky za řešení :) Ještě by to chtělo nějaké řešení nastavení virtualhostu abych se nemusel nastavovat ani s tim :) aby treba pro domenu .l zpristupnil soubory ve slozce D:\www :)

Posláno 1. 12. 2009 v 9.50 | Odpovědět

#8 Almad nový

Na těch unixech jde nastavit „hledej v dns a když nenajdeš hledej na doméně X a když nenajdeš hledej na localhostu“.

Bez dns serveru…

Posláno 1. 12. 2009 v 9.53 | Odpovědět
avatar

#9 tiso http://tiso.wz.cz/ nový

#4 golf: tiež používam taký skript, ale reštartoval som vždy manuálne. Netušil som že exec ide použiť aj takto (odpíliť si konár na ktorom sedíš).
DG: užitočné, viem že Apache nie je jediný server, budem musieť vyskúšať ďalšie.

Posláno 1. 12. 2009 v 9.59 | Odpovědět
Na komentář reagoval [19] golf
avatar

#10 Martin Pešava http://www.pesava.cz/ nový

Díky, určitě to hned vyzkouším … tušil jsem, že to nějak půjde, ale neměl jsem dosud čas to zkoušet.

Co se týče komentářů výše, tak víte o tom, že apache umožňuje používat tzv. VirtualDocumen­tRoot?
<VirtualHost *:80>
UseCanonicalName Off
ServerName local
ServerAlias *.local
VirtualDocumentRoot C:/Dokumenty/WWW-local/%1/

a pak už stačí jenom správně nasměrovat DNSko a není potřeba pro každej projekt zakládat konfiguraci do httpd.conf (samozřejmě, pokud některý nepotřebuje jinak nastavený apache)

… nicmene se to da kombinovat, takze pokud ma mit jedna domena jinou konfiguraci, muzete nejdriv udelat <virtualhost> pro neco.local a pak teprve uvest toto … apache to prochazi postupne a zastavi se pri prvni schode :)

Posláno 1. 12. 2009 v 10.03 | Odpovědět
avatar

#11 Martin Pešava http://www.pesava.cz/ nový

#10 Martin Pešava: sakryš, vždyť to v tom náhledu vypadalo správně …
… chybí tam </VirtualHost>

Posláno 1. 12. 2009 v 10.04 | Odpovědět
avatar

#12 Jiří Landsman kruppi@gmail.com nový

#10 Martin Pešava: díky to bude přesně to co jsem hledal :)

Posláno 1. 12. 2009 v 10.09 | Odpovědět
avatar

#13 karf http://www.karf.cz nový

#10 Martin Pešava: Bohužel VirtualDocumentRoot nefunguje zcela transparentně – proměnná DOCUMENT_ROOT pak směřuje na skutečný, nikoliv virtuální root, takže php skript s tím musí počítat.

Posláno 1. 12. 2009 v 10.25 | Odpovědět

#14 nesro nový

Já bych danou situaci řešil takhle:

do souboru /etc/hosts přidám řádek s:

127.0.0.1 net­tephp.l

a do souboru /etc/apache2/sites-available/default :

<VirtualHost *:80>
DocumentRoot /home/nesro/net­tephp/
ServerName nettephp.l
< / Virtual Host > (bez mezer)

asi to není nejlepší řešení, ale když jsem to takhle řešil já, byl jsem spokojenej. Ovšem je to řešení pro linux, ale není problém si udělat virtualbox.

Posláno 1. 12. 2009 v 10.50 | Odpovědět
Na komentář reagoval [17] nesro [29] Matej
avatar

#15 cniry pavel@sieder.cz nový

super :) jdu g­ooglit jak to u­dělat na linu­xu

Posláno 1. 12. 2009 v 10.53 | Odpovědět
avatar

#16 ic http://icweb.eu nový

Používal jsem osobní DNS TreeWalk ta byla zdarma a i těch 127.0.0.1 do nastavení sítě uměla vyplnit automaticky (pokud byl program zapnut, pokud ne vrátil původní hodnotu) jenže můj slabší počítač byl tímto programam příliš zatížen tak musel z domu. Říkám si jestli není snadnější vyplnit hosts než absolvovat takovéto pokusy na lidech a jejich počítačích.

Posláno 1. 12. 2009 v 11.00 | Odpovědět

#17 nesro nový

#14 nesro: kdyby to někdo zkoušel, tak za 127.0.0.1 musí být tabulátor, ne mezera

Posláno 1. 12. 2009 v 11.11 | Odpovědět
avatar

#18 Koubas jakub@gooseman.cz nový

Pokud si nechcete rozjíždět DNS lokálně, tak si můžete podobný záznam klidně přidat do zónového souboru nějaké své domény přes administrovátko u registrátora/hos­tignu, např.:
*.l A 127.0.0.1

a pak cokoliv.l.domena.cz bude resolvit na 127.0.0.1, akorát to nebude fungovat offline.

Posláno 1. 12. 2009 ve 13.56 | Odpovědět
avatar

#19 golf web@xTrip.net nový

#9 tiso: spouštím ten skript z příkazové řádky, takže apache se to netýká a konár na ktorom sedím sa neodpílí :-)

Posláno 1. 12. 2009 ve 13.58 | Odpovědět
avatar

#20 optik http://mirin.cz nový

Jen takový detail, asi by se neměla dělat konfigurace dvou domén (.localhost,.l) jedním zónovým souborem. Jinak osobně bych raději použil .test, to je myslím k tomu účelu i vyhrazené od IANY nebo tak něco. Časem možná na .l něco bude :-) a pak se na něj nedostaneš.

Posláno 1. 12. 2009 ve 14.14 | Odpovědět
Na komentář reagoval [22] Marek Hrabě
avatar

#21 Oswald http://www.webkitchen.cz/ nový

Přesně tohle jsem nedávno řešil pro linux, tady je kdyžtak návod, jak na to:

http://blog.webkitchen.cz/virtualhosty

Posláno 1. 12. 2009 v 16.24 | Odpovědět
Na komentář reagoval [30] pmajster
avatar

#22 Marek Hrabě marco.sharper@gmail.com nový

#20 optik: Samozřejmě, že dostane. Jak tě mohl napadnout opak?

Posláno 3. 12. 2009 v 15.00 | Odpovědět
Na komentář reagoval [23] optik

#23 optik http://mirin.cz nový

#22 Marek Hrabě: Řekl bych, že pokud by měl to své lokální dns jako první v pořadí resolvování, tak už by se asi na nově vzniknuvší l. nedostal, vždycky by skončil na localhostu, pokud až jako druhé/další, tak se pak zase nedostane na ten svůj lokální l. Druhá věc je, že pravděpodobně to dns zapíná a vypíná jen při vývoji. Každopádně s vzniknuvším l. by to mohlo mít trochu zmatečné chování.

Posláno 6. 12. 2009 ve 14.19 | Odpovědět

#24 v6ak http://v6ak.profitux.cz/ nový

Je jednopísmenková TLD povolena? Nejsem si jist.

Posláno 6. 12. 2009 ve 14.39 | Odpovědět

#25 pepazdepa nový

asi byste potrebovali toto :)
http://www.peereboom.us/adsuck/

Posláno 10. 12. 2009 v 0.59 | Odpovědět
avatar

#26 Čuga http://www.divDesign.cz nový

A co když to světe div se nefunguje??? :) Nainstaloval sem BIND, vytvoril konfiguracni soubory, nahodil DNS server jako 127.0.0.1 a prdlajz :) je potřeba instalovat i ten Simple DNS nebo ni???

Posláno 10. 12. 2009 v 18.41 | Odpovědět

#27 Forrest79 nový

Ahoj,
neví někdo jak donutit Windows, aby pokud nejsem připojenej k žádný sítí, brali v potaz lokálkní DNS server stejně jako soubor hosts? Občas se mi stane, že programuju v končinách, kde neni žádný připojení k internetu a tam je mi lokální DNS server na nic :(

Posláno 4. 1. 2010 v 17.32 | Odpovědět
Na komentář reagoval [28] pokusnicek

#28 pokusnicek nový

#27 Forrest79: japato?

Posláno 8. 1. 2010 ve 22.46 | Odpovědět

#29 Matej nový

#14 nesro: Diky, tohle mi pro zacatek bude stacit. Ale urcite casem vyzkousim i automatiku, co je popsana v clanku.

Posláno 11. 1. 2010 ve 14.11 | Odpovědět
avatar

#30 pmajster pmajster@gmail.com nový

presne toto som sa snažil riešiť a nájst nejaké riešenie cez vianocne a neúspešne… a teraz som tu na to natrafil úplne náhodou :)

moja situacia bola: chcel som na testovacie účely používať lokálne doménu .xx a aby všetko smerovala na server vo virtualboxe, kde by už ostatné riešil apache (snaha pohodlne sa priblížiť reálnej situácii- nepracovať s localhostom a mať možnosť využívat subdomény a .htaccess).
skúšal som bind, dnsmasq, no nepodarilo sa mi úspešne do funkčného stavu nakonfigurovať ani jeden dns server, tak aby to pracovalo podľa očakávaní.

skúsim to podľa tvojho návodu ešte raz s bind a podľa toho čo postol #21 Oswald: aj s dnsmasq;)

čo sa týka toho virtual hostingu, tak myslím že ideálne riešenie v tomto prípade by mohlo byť využitie dynamického virtuálneho hostingu, apache má na to mod_vhost_ali­ases, niečo nájdete napr. v tejto knihe: Linux – administrace serveru Apache, kapitola 6.4 sa zaoberá danou tématikou http://goo.gl/8MsU

riešenie zbiehať akékoľvek skripty po zmene/vytvorení projektov mi príde dost nepraktické…

Posláno před měsícem | Odpovědět

Zanechat komentář

  • na jiné komentáře odkazujte zápisem např. [2]
  • vaše IP bude zaznamenána a zobrazena
  • můžete použít Texy! syntaxi. HTML značky nejsou povolené. Příklad syntaxe: "text odkazu":odkaz, **tučně**, *kurzíva*, `code`
  • můžeme si tykat
  • diskuse mohou být řešeny metodou Indiana Jones
Text komentáře
Kontakt (povinné)

(maskuje se)




Výtah na začátek článku na první komentář

Názory čtenářů v diskusích nejsou názory provozovatele webu, a ten za jejich obsah neodpovídá.

phpFashion © 2004, 2010 David Grudlo webu

Pokud není uvedeno jinak, podléhá obsah těchto stránek licenci Creative Commons BY-NC-ND Creative Commons License BY-NC-ND

Ukázky zdrojových kódů smíte používat s uvedením autora a URL tohoto webu bez dalších omezení.