Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem 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\

Předmět Autor Datum
Ok, tak jsem to vše smazal a začal znova: na mém PC jsem udělal v httpd-vhosts.conf toto: NameVirt…
n.u.r.v. 21.07.2013 19:37
n.u.r.v.
:-) 127.0.0.1 projekt1 127.0.0.1 projekt2 Si ho zblbol, ako má vedieť, že chceš projekt1, alebo pro…
pme 21.07.2013 19:49
pme
Ahoj, no když jsem z hosts vyhodil 127.0.0.1 projekt1 a 127.0.0.1 projekt2, tak žádná změna - pořád…
n.u.r.v. 21.07.2013 20:07
n.u.r.v.
httpd-vhosts.conf Tento súbor si na kerú riť upravoval? Všetko vráť na pôvodné hodnoty, alebo ešte l…
pme 21.07.2013 20:11
pme
Akože žiadna zmena? Malo ti to prestať fungovať, pretože projekt1 ani projekt2 sa potom nebude vedie…
los 21.07.2013 20:20
los
Načo sa hrať s virtuálnym serverom? Normálne apache funguje projekt1, projekt2.
pme 21.07.2013 20:23
pme
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…
los 21.07.2013 20:26
los
Nie, mne pripadá normálne, že ak sú súbory na tom istom serveri, potom sa používajú relatívne URL ad…
pme 21.07.2013 20:43
pme
Napr. konkrétny príklad je webová aplikácia, v ktorej máš definovaný view pre hlavný layout stránky…
los 21.07.2013 20:49
los
edit: Pretože normálne je kopa aplikácií napísaná tak, že počíta s tým, že beží v root adresári. Ak…
n.u.r.v. 21.07.2013 20:27
n.u.r.v.
Zmeny v hosts súbore sú okamžité. Môžeš si to overiť pingnutím tej adresy (ping projekt1, ping proje…
los 21.07.2013 20:30
los
ako má vedieť, že chceš projekt1, alebo projekt2 ? Klient posiela v hlavičke Host, na ktorého hosta…
los 21.07.2013 20:29
los
Skús toto: NameVirtualHost *:80 <VirtualHost *:80> DocumentRoot "C:/Program Files (x86)/VertrigoSer…
los 21.07.2013 20:40
los
ok, ráno vyzkouším...dělám na svém pc
n.u.r.v. 21.07.2013 21:54
n.u.r.v.
Tak bohužel to nepomohlo - pořád to samé - když dám do browseru projekt1, tak nenalezeno a když dám…
n.u.r.v. 23.07.2013 00:48
n.u.r.v.
Tak to mi je ľúto, že to nefunguje, keďže je to skoro 1:1 podľa dokumentácie s príkladmi pre nastave… poslední
los 23.07.2013 23:55
los
nebo mi nefungovalo přesměrování (například jsem se po přihlášení dostal z nazev_projektu na ip_serv…
los 21.07.2013 21:06
los
Mám XAMPP a tam je v súbore httpd-vhosts.conf toto: # VirtualHost example: # Almost any Apache dire…
pme 23.07.2013 09:44
pme
to tam mám taky... jedině můžu zkusit nastavit tu cestu jinak (ne C:....)
n.u.r.v. 23.07.2013 09:55
n.u.r.v.

Ok, tak jsem to vše smazal a začal znova:

na mém PC jsem udělal v httpd-vhosts.conf toto:

NameVirtualHost 127.0.0.1:80

<VirtualHost *:80> 
 DocumentRoot "C:/Program Files (x86)/VertrigoServ/www/projekt1" 
 ServerName projekt1
 ServerAlias projekt1
</VirtualHost>

<VirtualHost *:80> 
 DocumentRoot "C:/Program Files (x86)/VertrigoServ/www/projekt2" 
 ServerName projekt2
 ServerAlias projekt2
</VirtualHost>

a do windows hosts jsem dal toto:

   127.0.0.1       localhost
   ::1             localhost

127.0.0.1 projekt1
127.0.0.1 projekt2

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:

[Sun Jul 21 19:06:08 2013] [error] (OS 11001)Není znám žádný takový hostitel. : Could not resolve host name projekt1 -- ignoring!

[Sun Jul 21 19:06:08 2013] [error] (OS 11001)Není znám žádný takový hostitel. : Could not resolve host name projekt2 -- ignoring!

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

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).

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.

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:

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.

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):

<VirtualHost projekt1:80> 
 DocumentRoot "C:\Program Files (x86)\VertrigoServ\www\projekt1" 
 ServerName projekt1
 ServerAlias projekt1.moje 
</VirtualHost> 

<VirtualHost projekt2:80> 
 DocumentRoot "C:\Program Files (x86)\VertrigoServ\www\projekt2" 
 ServerName projekt2
 ServerAlias projekt2.moje 
</VirtualHost>

a windows hosts:

127.0.0.1 projekt1
127.0.0.1 projekt2

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?

Skús toto:

NameVirtualHost *:80

<VirtualHost *:80> 
 DocumentRoot "C:/Program Files (x86)/VertrigoServ/www/projekt1" 
 ServerName projekt1
</VirtualHost>

<VirtualHost *:80> 
 DocumentRoot "C:/Program Files (x86)/VertrigoServ/www/projekt2" 
 ServerName projekt2
</VirtualHost>

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).

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:

Tue Jul 23 00:44:05 2013] [error] (OS 11001)Není znám žádný takový hostitel. : Could not resolve host name projekt1 -- ignoring!
Tue Jul 23 00:44:08 2013] [error] (OS 11001)Není znám žádný takový hostitel. : Could not resolve host name projekt2 -- ignoring!

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).

nebo mi nefungovalo přesměrování (například jsem se po přihlášení dostal z nazev_projektu na ip_serveru.

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:

# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for all requests that do not
# match a ServerName or ServerAlias in any <VirtualHost> block.
#
##<VirtualHost *:80>
##ServerAdmin postmaster@dummy-host.localhost
##DocumentRoot "/xampp/htdocs/dummy-host.localhost"
##ServerName dummy-host.localhost
##ServerAlias www.dummy-host.localhost
##ErrorLog "logs/dummy-host.localhost-error.log"
##CustomLog "logs/dummy-host.localhost-access.log" combined
##</VirtualHost>

##<VirtualHost *:80>
##ServerAdmin postmaster@dummy-host2.localhost
##DocumentRoot "/xampp/htdocs/dummy-host2.localhost"
##ServerName dummy-host2.localhost
##ServerAlias www.dummy-host2.localhost
##ErrorLog "logs/dummy-host2.localhost-error.log"
##CustomLog "logs/dummy-host2.localhost-access.log" combined
##</VirtualHost>

Zpět do poradny Odpovědět na původní otázku Nahoru