Apache ir Zope serverių adresavimų suderinimas (0)
Jei sistemoje instaliuoti du web serveriai - Apache bei Zope ir norima, jog pagrindinis web serveris būtų Zope, o Apache valdytų papildomus produktus ir teiktų virtualų hostingą, reikia suderinti abiejų serverių konfiguracinius failus, panaudojant modulius rewrite, proxy ir komandas RewriteRule, VirtualHostBase, VirtualHostRoot.
Prisijunk prie technologijos.lt komandos!
Laisvas grafikas, uždarbis, daug įdomių veiklų. Patirtis nebūtina, reikia tik entuziazmo.
Sudomino? Užpildyk šią anketą!
Jei sistemoje yra du web serveriai (Apache ir Zope), tokiu atveju pagal nutylėjimą Apache serveris naudoja portą 80, o Zope serveris – 8080. Šių portų galima ir nekeisti. Sakykim web svetainė patalpinta Zope serveryje, kataloge technologijos, serverio IP adresas yra xxx.xx.xxx.xx ir šis adresas susietas su domenu www.technologijos.lt. Naršyklėje suvedus tokį domeno adresą ir nenurodžius porto 8080, bus užkrautas Apache serveris. Kaip to išvengti? Tam reikia perkonfiguruoti Apache konfiguracinį failą httpd.conf ir nustatyti peradresavimą į Zope sistemą.
Reikiamų modulių peradresavimui Apache serveryje nustatymas
Peradresavimo komandos saugomos Apache modulyje rewrite. Apache2 ir vėlesnėse versijoje šis modulis būna įdėtas pagal nutylėjimą į Apache komplektaciją. Ar jis tikrai yra, galima patikrinti adresu
/usr/lib/apache2/modules
Šioje direktorijoje reiktų ieškoti bylos, pavadinimu mod_rewrite.so. Užbėgant už akių, galima patikrinti ar yra ir kitas, peradresavimui reikalingas modulis mod_proxy.so.
Jei šie moduliai yra, dar nereiškia, jog Apache instaliavimo metu buvo sukompiliuotas naudojant šiuos modulius. Tai galima patikrinti nuėjus į suinstaliuoto Apache2 serverio vykdomųjų failų direktoriją:
/usr/local/apache2/bin
Paleidus komandą
/usr/local/apache2/bin# ./apachectl –l
galima matyti visus įkeltus modulius. Jei sąraše nėra mod_rewrite.c ir mod_proxy.c, vadinasi jie nebuvo sukompiliuoti ir suinstaliuoti.
Šiuos modulis galima bandyti įkelti neperkompiliuojant Apache2 serverio. Tam reikia atsidaryti konfigūracinį httpd.conf failą, adresu:
/usr/local/apache2/conf/httpd.conf
Jame įrašomi įkeliami moduliai naudojant komandą LoadModule
LoadModule rewrite /usr/lib/apache2/modules/mod_rewrite.so
LoadModule proxy /usr/lib/apache2/modules/mod_proxy.so
Atlikus pakeitimus, būtinai reikia aptikrinti ar Apache2 serveris neaptinka klaidų konfigūraciniame faile. Tam naudojama komanda
/usr/local/apache2/bin# ./apachectl –t
Jei aptinkama klaidų, atsiras jos pranešimas. Galima klaida, jog Apache2 serveris nesuprato mod_rewrite.so arba mod_proxy.so kokio nors kintamojo – vadinasi šie moduliai nebuvo tinkamai sukompiliuoti. Tokiu atveju konfigūraciniame faile LoadModule eilutes reikia užkomentuoti arba ištrinti ir perkompiliuoti visą Apache2 serverį nurodant šiuos du įkeliamus modulius.
Apache2 serverio perkompiliavimui reikia nueiti į Apache2 instaliacinį katalogą ir jame surasti vykdymo failą configure. Tuomet paleisti tokią komandą:
./configure --prefix=/usr/local/apache2 --enable-rewrite
--enable-proxy
Iškart po konfiguravimo pabaigos paleidžiama komanda
make
Paskui
make install
Apache2 serveris perinstaliuotas! Toliau patikrinama ar įsikėlė reikalingi moduliai:
/usr/local/apache2/bin# ./apachectl –l
Jei sąraše yra mod_rewrite.c ir mod_proxy.c, vadinasi viskas gerai. Jei jų nėra, reiktų pakartoti aprašytus punktus, o jei ir tai nepadeda – pabandyti patarimų paklausti forume.
Apache kaip proxy serveris
Sutvarkius rewrite ir proxy modulius galima toliau konfiguruoti httpd.conf failą. Jame reikia įrašyti peradresavimą iš Apache2 į Zope sistemą. Tam naudojama komanda RewriteRule, kuri veikia tik suinstaliavus rewrite modulį. Į konfiguracinį failą, adresu
/usr/local/apache2/conf/httpd.conf
įrašomos tokios eilutės
#konfig virtual hosting
<VirtualHost xxx.xx.xxx.xx >
ServerName www.technologijos.lt
RewriteEngine On
RewriteLog /var/log/www.technologijos.lt-rewrite.log
RewriteLogLevel 2
RewriteRule ^/(.*)
http://xx.xx.xxx.xx:8080/VirtualHostBase/http/
www.technologijos.lt:80/technologijos/
VirtualHostRoot/$1 [L,P]
ErrorLog /var/log/www.technologijos.lt-error_log
TransferLog /var/log/www.technologijos.lt.-access_log
ProxyVia on
</VirtualHost>
VirtualHost xxx.xx.xxx.xx tegas nurodo, jog toliau eis komandos IP adreso xxx.xx.xxx.xx peradresavimui
ServerName www.technologijos.lt nurodo kokiam domenui vyks peradresavimas
RewriteEngine On įjungiamas peradresavimo režimas (neveikia be rewrite modulio)
RewriteLog /var/log/www.technologijos.lt-rewrite.log
RewriteLogLevel 2 Loginis peradresavimo failas. Paprastai naudojamas testavimo režimu, vėliau patartina jį užkomentuoti, nes logai užima gana daug disko vietos.
RewriteRule ^/(.*) http://
xx.xx.xxx.xx:8080/VirtualHostBase/http/www.technologijos.lt:80/
technologijos/VirtualHostRoot/$1 [L,P]
Peradresavimo komanda. Rašoma kaip viena ilga eilutė. Bendruoju atveju jos struktūra yra tokia:
RewriteRule Pattern Substitution [flags]
Pattern – adresas, kurį reikia pakeisti
Substitution – adresas, kuriuo pakeičiama
^/ - žymi keičiamos eilutės pradžią
$1 – keičiamos eilutės pabaiga
(.*) – žymi bet kokį simbolį. Vadinasi bus keičiami visi adresai, kurių pradžia www.technologijos.lt:80
http://xx.xx.xxx.xx:8080/ - adresas, kuriam perduodama informacija (šiuo atveju Zope serveris)
VirtualHostBase
VirtualHostRoot
Tai Zope serverio objektai, kuriuos turi Zope modulis Virtual Host Monster (VHM). Šį modulį reikia idėti į pagrindinę zope direktoriją (root). Papildomai keisti jo nustatymus nereikia.
http/www.technologijos.lt:80/technologijos/ šioje eilutėje nurodoma, jog atėjusią į Apache2 užklausą www.technologijos.lt:80 peradresuoti į http://xx.xx.xxx.xx:8080/ kartu su katalogu technologijos.
Ši peradresuota užklausa iškart patenka tiesiai į Zope ir atiduodama apdoroti Virtual Host Monster (VHM) moduliui. Jis savo ruožtu paleidžia Zope katalogą technologijos. Naršyklėje užsikrauna Zope katalogo technologijos turinys. Peradresavimas baigtas!