
Nastavení apache-localhost...
Ahoj, ve firmě máme server na kterém běží localhost (apache). Já mám na notebooku také localhost a apache (vertrigoserv) a teď nemůžu přijít na to jak udělat následující věc:
Máme php projekty, který jsou nastaveny a udělány tak, aby správně běžely na hostingu, takže jsem si musel na svém notebooku udělat virtual takto:
soubor hosts:
127.0.0.1 nazev_projektu
konfigurační soubor apache - httpd-vhosts.conf:
<VirtualHost nazev_projektu:80>
DocumentRoot "C:\Program Files (x86)\VertrigoServ\www\nazev_projektu\release"
ServerName nazev_projektu
ServerAlias nazev_projektu
</VirtualHost>
a konfigurační soubor apache - httpd.conf:
...
Listen 80
DocumentRoot "C:\Program Files (x86)\VertrigoServ\www"
Include conf/extra/httpd-vhosts.conf
...
<Directory />
Options FollowSymLinks
AllowOverride All
Order deny,allow
Deny from all
</Directory>
...
Takže když zadám do prohlížeče nazev_projektu, tak mi to funguje dle představ, ale teď potřebuji to samé udělat na serveru, aby mohli ostatní uživatelé používat ten projekt, tedy aby zadali do prohlížeče ip_serveru(nebo jeho nazev)/nazev_projektu.
Ale za boha nemůžu přijít jak na to... Zkoušel jsem okopírovat moje nastavení na server, ale chovalo se to špatně - buď jsem to rozchodil dobře, ale zase nefungovaly správně cesty k js a css (cesty ve formátu /css/style.css), nebo mi nefungovalo přesměrování (například jsem se po přihlášení dostal z nazev_projektu na ip_serveru.
Prosím o radu, zabil jsem s tím včera celý den a nic... díky moc...
P.S.: Akorát rozdíl je v tom, že server má nastaven localhost na port 82 a ne 80... a složka s projekty je na serveru na D:\Web\
Ok, tak jsem to vše smazal a začal znova:
na mém PC jsem udělal v httpd-vhosts.conf toto:
a do windows hosts jsem dal toto:
Toto výborně funguje (i z jiného pc v síti), ale má to jeden velký problém - pořád se spouští jen projekt1... na projekt2 se nedostanu...
Když jsem zkusil místo <VirtualHost *:80> dát <VirtualHost projekt1:80> a <VirtualHost projekt2:80>, tak mi zase apache vypíše v logu chybu:
Co s tím? díky...
127.0.0.1 projekt1
127.0.0.1 projekt2
Si ho zblbol, ako má vedieť, že chceš projekt1, alebo projekt2 ?
Vyhoď to z hosts súboru a pristupuj na svoje projekty takto:
localhost/projekt1
localhost/projekt2
Alebo si to ošetri na portoch:
projekt1 napr. 81, potom prístup je localhost:81
projekt2 napr. 82, potom prístup je localhost:82
Ahoj, no když jsem z hosts vyhodil 127.0.0.1 projekt1 a 127.0.0.1 projekt2, tak žádná změna - pořád to samé...
potřebuji, to volat v browseru jako projekt1 (projekt2)
httpd-vhosts.conf
Tento súbor si na kerú riť upravoval?
Všetko vráť na pôvodné hodnoty, alebo ešte lepšie to Vertrigo nainštaluje nanovo a do ničoho už nešahaj!
Potom Ti bude fungovať všetko tak ako chceš...
Akože žiadna zmena? Malo ti to prestať fungovať, pretože projekt1 ani projekt2 sa potom nebude vedieť resolvnúť na IP adresu.
Jediné, čo sa mi nezdá, je, že sa nezhoduje hodnota VirtualHost s hodnotou v NameVirtualHost. Uprav si <VirtualHost *:80> na <VirtualHost 127.0.0.1:80> (alebo naopak, NameVirtualHost nastav na *:80).
Načo sa hrať s virtuálnym serverom? Normálne apache funguje projekt1, projekt2.
Pretože normálne je kopa aplikácií napísaná tak, že počíta s tým, že beží v root adresári. Ak by si ju nasadil do nejakého podadresára, tak by ti prestali fungovať všetky odkazy.
Takže hrátky s vhostami sú normálne rovnako ako hrátky s adresármi.
Nie, mne pripadá normálne, že ak sú súbory na tom istom serveri, potom sa používajú relatívne URL adresy...
Hrátky s adresármi potom nemajú žiadny vplyv...
Napr. konkrétny príklad je webová aplikácia, v ktorej máš definovaný view pre hlavný layout stránky (master page). V tomto view odkazuješ na CSS a JS súbory, ktoré sú v koreňovom adresári webovej aplikácie. Tento view je použitý na rôznych úrovniach adresárovej štruktúry webu. To by si akože stále písal tie adresy relatívne? To asi nie...
edit:
přesně to je ten důvod...
když jsem smazal ty hodnoty z windows hosts,tak žádná změna...pořád to fungovalo, ale pořád jen první projekt...
Je právě divné, že na notebooku mi to funguje, když to mám takto (httpd-vhosts.conf):
a windows hosts:
Ale na PC i když jsem zkopíroval to nastavení, tak mi to zaboha nejde...
Na notebooku, kde mi to jde, mám ale zas ten problém, že se nepřipojí ostatní pc ze sítě...
Edit:nebo se musí po každé editaci windows hosts restartovat pc aby se provedly změny?
Zmeny v hosts súbore sú okamžité. Môžeš si to overiť pingnutím tej adresy (ping projekt1, ping projekt2).
Apache si po zmenách reštartoval? (Edit: Aha, asi áno, keď si tam predtým písal, že ti vypísal nejakú chybu...)
Klient posiela v hlavičke Host, na ktorého hosta si išiel.
Skús toto:
A reštartni Apache.
V hosts si nechaj oba riadky pre projekt1 a projekt2. Napíš, ako sa to chová.
Edit: Moment, ty toto robíš na serveri alebo len na svojom PC? Ak na serveri, tak tam snád tie ServerName budeš mať nastavené podľa toho, čo máš nastavené v DNS pre ten server (resp. v host súbore nemáš 127.0.0.1, ale IP toho servera).
ok, ráno vyzkouším...dělám na svém pc
Tak bohužel to nepomohlo - pořád to samé - když dám do browseru projekt1, tak nenalezeno a když dám 127.0.0.1/projekt1 (i projekt2), tak se spustí projekt1
Dostal jsem ještě jednu radu:
místo <VirtualHost *:80> psát <VirtualHost projekt1:80>... Jenže to taky nefunguje - v apache error logu se objeví chyba:
Tak to mi je ľúto, že to nefunguje, keďže je to skoro 1:1 podľa dokumentácie s príkladmi pre nastavenie VirtualHostov.
Prečítaj si dokumentáciu k NameVirtualHost (napr. ja som teraz zistil, že NameVirtualHost je v novších Apache-och deprecated, takže ak máš novší ako 2.3.11, tak ho nepotrebuješ nastavovať - prečítaj si dokumentáciu k tvojej verzii Apache). Potom si prečítaj dokumentáciu k VirtualHost. Ideálne tak, aby si pochopil každej vete. Okrem iného zistíš napr., že používať meno domény (plne kvalifikované) je síce možné, ale neodporúčané.
Keď tak čítam tvoje odpovede, tak mi nie je jasné, či si pod "Nenalezeno" myslel, že ti vrátil Apache odpoveď s kódom 404, alebo sa to k tomu Apache-u ani nedostalo. Po prečítaní dokumentácie by si to ale mal byť schopný doriešiť (mne napr. fungoval ten príklad, čo som písal, takže lepšie asi neporadím).
Keď použiješ ip_serveru, tak server sa k menu hosta nedostane. Musíš skrátka použiť meno hosta. Aby fungovalo meno hosta aj iným používateľom, ktorí sa pripájajú na tvoj server, musí byť nastavený v ich DNS (alebo ich hosts súbore).
Mám XAMPP a tam je v súbore httpd-vhosts.conf toto:
to tam mám taky... jedině můžu zkusit nastavit tu cestu jinak (ne C:....)