Apache Virtual Hostok elérése belső hálózaton
Sziasztok, a segítségeteket szeretném kérni. Sok hasonló téma van a fórumon, de nem találtam megoldást a problémámra ami a következő:
Van itthon két gépem az egyiket hívjuk szervernek, ezen fut apache - php - mysql stb a másikat meg hívjuk kliensnek az egy sima xp-s gép.
A szerver gépen van már egy csomó weblap amit virtual hostok létrehozásával különítek el. Ez localhoston korrektül működik.
Tehát egy példa:
hosts fájlban:
127.0.0.1 test.loc
apache httpd-ben:
<VirtualHost *:80>
DocumentRoot "/Users/username/Sites/test"
ServerName test.loc
</VirtualHost>
Így ha a szerver gépen beírom a böngészőbe hogy test.loc akkor megjelenik a test mappában elhelyezett weboldal.
Azt szeretném megoldani, hogy ez ugyan így legyen a kliens gép esetén is. Tehát ha a kliens gépen beírom a böngészőbe, hogy test.loc akkor töltse be a szerver gépről a weblapot.
-A két gép látja egymást, plusz ha a kliens gép böngészőjében beírom a szerver ip-jét, akkor betölt a szerver gép localhostja. (It Works! képernyő).
Az nekem nem megoldás, hogy ip után mappastruktúrán keresztül érjem el a weblapot, szeretnék hostnévvel hivatkozni rá.
-Nem szeretnék dns szervert telepíteni ha lehet egyszerűbben szeretném megoldani.
-Hallottam olyan megoldást, hogy ha a kliens gép hosts fájlában felveszem a szerver ip-t meg a hostnevet akkor működni fog, de nálam ez nem megy. Ez jó lenne megoldásnak ha valaki írna rá egy példát esetleg tudnám mi a gond.
-nincs szükségem külső netkapcsolatra, router van de tűzfal nem akadályoz mert az apache alapértelmezett localhostját ip alapján eléri a kliens gép!
Szerintem mindent leírtam, tud valaki segíteni? :)
■ Van itthon két gépem az egyiket hívjuk szervernek, ezen fut apache - php - mysql stb a másikat meg hívjuk kliensnek az egy sima xp-s gép.
A szerver gépen van már egy csomó weblap amit virtual hostok létrehozásával különítek el. Ez localhoston korrektül működik.
Tehát egy példa:
hosts fájlban:
127.0.0.1 test.loc
apache httpd-ben:
<VirtualHost *:80>
DocumentRoot "/Users/username/Sites/test"
ServerName test.loc
</VirtualHost>
Így ha a szerver gépen beírom a böngészőbe hogy test.loc akkor megjelenik a test mappában elhelyezett weboldal.
Azt szeretném megoldani, hogy ez ugyan így legyen a kliens gép esetén is. Tehát ha a kliens gépen beírom a böngészőbe, hogy test.loc akkor töltse be a szerver gépről a weblapot.
-A két gép látja egymást, plusz ha a kliens gép böngészőjében beírom a szerver ip-jét, akkor betölt a szerver gép localhostja. (It Works! képernyő).
Az nekem nem megoldás, hogy ip után mappastruktúrán keresztül érjem el a weblapot, szeretnék hostnévvel hivatkozni rá.
-Nem szeretnék dns szervert telepíteni ha lehet egyszerűbben szeretném megoldani.
-Hallottam olyan megoldást, hogy ha a kliens gép hosts fájlában felveszem a szerver ip-t meg a hostnevet akkor működni fog, de nálam ez nem megy. Ez jó lenne megoldásnak ha valaki írna rá egy példát esetleg tudnám mi a gond.
-nincs szükségem külső netkapcsolatra, router van de tűzfal nem akadályoz mert az apache alapértelmezett localhostját ip alapján eléri a kliens gép!
Szerintem mindent leírtam, tud valaki segíteni? :)
A kliens gépen biztosan jó
Ha jól emlékszem, valami C:\windows\system32\etc\hosts az elérési útja és vigyázni kell, mert a notepad hajlamos .txt kiterjesztést hozzácsapni a mentéskor.
A kliens gépen a hosts fájl...
192.168.0.10 test.loc
Gondolom ezt az ip-t kéne megadni mert erre bejön a szerver gép default localhost apache mappája az It Works! html fájllal. De ez csak akkor működik ha az ip-t írom be a kliens gépen.
Ha test.loc -ot írok, akkor az oldal nem található.
És ha ping test.loc-t írsz
update: közben még valami eszembe jutott. Meg kellene nézni az apache access.log-ját, hogy valójában milyen címet is kér a böngésződ.
Aztán: kellene a pontos hibaüzenet, mert az eddig olvasottak alapján azt sem tudnám eldönteni, hogy a web szervered mondja, hogy nem találja az oldalt vagy a böngésződ.
Továbbá: bár nem írtad, de ha jól vettem ki a szavaidból, a szervered is windows. Nem lehet, hogy a tűzfalad dobja vissza a kérést? Bár ez elég valószínűtlen, de némely windows-os tűzfalak számomra elég rejtélyes dolgokat képesek produkálni...
(hogy ilyen triviális dolgok már nem jutnak eszembe, csak hosszas gondolkodás után... ez már a vég. Munkát akarok!!!! :-) :-( )
A "." a test.loc-ban okozhat
Érdekességképp: az IE7 pl. nem tud mit kezdeni ilyen virtuális hostokkal, ha a hostnévben _ jel van.
NameVirtualHost
Ha localhost-ról működik a
Nem teljesen
Megjegyzés: ezeket a konfigokat érdemes a httpd.conf-ból kiszedni és egy külön fájlba rakni a sites-enabled könyvtárba (ha minden igaz windows-on is kell lennie ilyennek az apache könyvtárában)
Akkor valamelyikőtöket nem
Nekem az jött le, hogy a szerveren a hosts-ban ott van a virtualhost-nak megadott név is. Ha erre hivatkozik, akkor a hozzá tartozó lap jön fel, ha másra, akkor az alap oldal.
A másik gépről, ha nem a virtualhost nevével szólítja meg a szervert, akkor az alapoldalt kapja válaszként, egyébként meg hibát.
Ha ez így van, akkor a virtualhost-os dolog működik, csak a "kliens" gépről vagy nem jut el a név a szerverhez vagy rosszul oldja fel a rendszere. (sites-enabled - windowson nem tudom, hogy megy, linuxból láttam már olyat, ahol nem volt ilyen)
Kavar
Ergó, kell a DNS vagy a hosts fáj, kell a NameVirtualHost és kell maga a VirtualHost beállítás is. Ennek fényében az Apache manualt tessék elolvasni, nem mindenféle egyéb szutyok tutorialokat, mert akkor nem értitek meg, hogy mitől (nem) működik.
Te most leírtad azt, amit én
De ennek így kell működnie akkor is, ha "remote" gépről csinálom és akkor is, ha a szerver a localhoston van.
Tehát ha a localhoston működik, hogy a (bocs, emlékezetből írom) a http://tesz.loc címre hivatkozva a megfelelő lap jön elő, akkor az apache konfigja rendben van.
Márpedig a kérdező (ha jól értem) azt állítja, hogy a localhost-ot megszólítva a virtualhost nevével jó lapot kap.
Köszönöm a válaszokat
-A szerver gép egy osx, de az apache itt is csak apache (Server version: Apache/2.2.20 (Unix) )
-A sites enabled könyvtárat nem értem, de van az apache2 mappán belül egy 'extra' nevű mappa, ott van elhelyezve a httpd-vhosts.conf fájlom, ebben veszem fel a vhostokat, amit beimportál a httpd.conf fájl. Ezt így nem részleteztem, de én is így használom.
-A 'szerver gépen' minden rendesen működik a böngészőben betöltődnek a weboldalak. Tehát ha beírom az egyik felvett hostot pl. http://test.loc akkor gond nélkül betölti a hivatkozott mappában található weboldalt. Ha beírom hogy http://localhost akkor pedig betölt a default apache itsworks oldal amit amúgy ki tudnék másra cserélni de most nem ez a célom.
-A kliens gépen szintén elérem ezt a szerver localhost-ot, ha a böngészőben megadom a szerver ip-jét a 192.168.0.10-et betölt az apache itworks oldala.
Viszont hiába veszem fel a kliens gép hosts fájlába ugyan azokat a host neveket mint a szervernél (azzal a különbséggel hogy itt ip-nek nem 127.0.0.1 -et adok meg hanem a szerver ip-t (192.168.0.10) mert semmi nem történik, hanem a böngésző kiírja, hogy a lap nem található. (Ez nem apache hibaüzenet, egyszerűen olyan mintha csak elgépelnél firefoxban egy weblap címet amit ezután nem talál)
-A hozzászólásokból azt gyanítom, hogy nem úgy használom a vhostokat, ahogy azt kellene. Mindjárt utánaolvasok a NameVirtualHost-nak mert szerintem itt lehet az eltérés, de addig is leírom hogy nálam hogy néz ki a dolog, ha valakinek egyértelmű a hiba, akkor kérlek rakjon helyre!
Tehát most csak a szerver gépen:
Ha egy új weblapot szeretnék csinálni, általában a következő lépéseket teszem:
1. Létrehozok egy új mappát a weblapnak:
/Users/myusername/Sites/ujweblap
tegyük fel van benne egy index.html v. php
2. Hozzáírok egy plusz sort az /etc/hosts fájlhoz:
127.0.0.1 ujweblap.loc
3. Felveszek egy vhostot az apache2/extra/httpd-vhosts.conf fájlban
<VirtualHost *:80>
DocumentRoot "/Users/myusername/Sites/ujweblap"
ServerName ujweblap.loc
ErrorLog "/private/var/log/apache2/ujweblap-error_log"
CustomLog "/private/var/log/apache2/ujweblap-access_log" common
</VirtualHost>
4. nyomok egy apache restartot
5. a böngészőbe begépelem, hogy "ujweblap.loc" És ez így működni szokott.
nameVirtualhost
NameVirtualHost *:80
httpd confban pedig szerepel a:
Listen 80
A sites enabled könyvtárat
Ubuntu és debian alatt van ilyen könyvtár, ezekből indultam ki, OSX-et sajna nem ismerem. De egyébként ez csak egy tipp volt az átláthatóság érdekében, httpd.conf-ba is simán lehet írni a definíciókat.
Windows restart megvolt hosts fájl módosítása után? Úgy rémlik, hogy minden módosítás után kell neki egy restart.
<VirtualHost *:80>
DocumentRoot "/Users/myusername/Sites/ujweblap"
ServerName ujweblap.loc
ErrorLog "/private/var/log/apache2/ujweblap-error_log"
CustomLog "/private/var/log/apache2/ujweblap-access_log" common
</VirtualHost>
Nem vagyok apache guru, de nem vagyok biztos benne, hogy NameVirtualHost esetén a *:80 tetszik neki. Próbáld meg azt, hogy *:80 helyett megadod a szerver ip-t, ahogy fentebb írtam. (portot nem kell megadni)
E szerint valóban nem jó
Ugyanakkor az én ubuntu szerveremen is ez van a konfigban és gond nélkül működik minden virtual hostom. (anno háromszor is átolvastam valami erről szóló doksit és annak alapján hagytam békén azt a sort)
És továbbra is azon "rugózok", hogy a szerveren futtatott böngészőből mégiscsak működik neki.
Ugyanakkor az 1.3-as(elavult! De nem kizárt, hogy OSX-en még ez fut) Apache saját doksijában meg azt írják, így jó.
Viszont eszembe jutott valami, bár lehet, hogy hülyeség: Qkac! Mi lenne, ha kivennéd a Mac-en a hosts-ból a virtuális szerverre mutató definíciót?
Esetleg kicserélnéd a hozzá tartozó valódi IP címre?
NameVirtualHost
Na ehhez még álmos vagyok,
:-)
DNS
printer.home.janoszen.at
. Sokkal egyszerűbb és karbantarthatóbb megoldás és éves hihetetlen 1-3e Ft-ba kerül. (Az AT domain drágább, de másra is lesz használva. Most van eu akció, érdemes kihasználni.)A szerveren...