Apache virtual hosts konfigūravimas žaliems

2004-08-09 04:21

Taip jau atsitiko, kad Vilius, kuris rūpinasi mūsų serverio (gildija.lt) administravimu išvyko mėnesiui į šiltus kraštus ir paliko mane vieną grybauti po linuxinio serverio vandenis. Problemos iškilo tada, kai prireikė sukurti porą subdomeinų ant servo. Ačiū geriems draugams per porą dienų, jas pavyko išspręsti.

Ta proga, kad Žilvinas paprašė, kad jam papasakočiau, kaip man tai pavyko, surašiau savo pastabas į straipsnelį.

Nepretenduoju čia į kokią rimtą dokumentaciją. Tiesiog vieno žalio Linux vartotojo patarimai kitiems žaliems. Tam, kad susigaudytumėte šiame straipsnelyje jums reikia mokėti naudotis Linux konsole (shell’u), nardyti po direktorijas, redaguoti failus, mokėti prisijungti root vartotoju ir turėti įsivaizdavimą kur ir kas padėta jūsų serveryje. Dirbau ant jau suinstaliuotos ir sukonfigūruotos sistemos, taigi nerašau apie Apache ir DNS serverio instaliavimą po Linux.

Apache konfigūravimas

1. Reikia susirasti ir paredaguoti Apache’s virtual hosts konfigūracijos failą. Jūsų sistemoje šio failo gali ir nebūti, o virtualių host’ų konfigūracija gail būti sutvarkyta tiesiai httpd.conf faile.

Mūsų serveryje virtual hosts konfigūracija iškelta į atskirą failą. Tokiu būdu turime pagrindinį Apache 2.0 web serverio konfigą:

/etc/httpd/conf/httpd2.conf

ir jame įrašytą direktyvą Include :

Include conf/vhosts/Vhosts.conf

2. Toliau redaguojame /etc/httpd/conf/vhosts/Vhosts.conf failą. Tam, kad veiktų virtual host’ai, šiame faile turi būti įrašyta direktyva NameVirtualHost (pakeiskite IP adresą savo serverio IP adresu):

NameVirtualHost 213.197.142.106

Pačio virtual host’o aprašymas tuomet atrodo maždaug taip:

# bugs.gildija.lt (By Emilis 2004-08-07)
<VirtualHost 213.197.142.106>
    DocumentRoot /web/bugs/www
    ServerName bugs.gildija.lt
    ServerAdmin webmaster@gildija.lt
    ErrorLog /web/bugs/log/bugs.gildija.lt-error_log
    TransferLog /web/bugs/log/bugs.gildija.lt-access_log
    php_admin_flag safe_mode off        # sitos direktyvos veikia
    php_admin_flag register_globals off # jei serveryje yra PHP
</VirtualHost>

(!) Neužmirškite IP adreso, direktorijų ir serverio pavadinimų pakeisti pagal savo turimą sistemą! Neužmirškite, kad failai DocumentRoot direktorijoje turės būti prieinami Apache serverio skaitymui, o ErrorLog ir TransferLog failai – rašymui.

3. Po to kai sukonfigūravome virtualų serverį, reikia perkrauti Apache web serverio procesą. Tam pravers komanda apachectl . Tam, kad naudoti šią komandą reikia būti prisijungus root vartotojo teisėmis (tikiuosi, kaip šitą atlikti žinote patys). Pirma iš konsolės patikriname ar teisingai viską sukonfigūravome:

root{gildija.lt}# apachectl configtest
Checking configuration sanity for Apache 2.0:     [  OK  ]

Paskiau perkrauname Apache:

root{gildija.lt}# apachectl restart
Shutting down httpd2:                             [  OK  ]
Starting httpd2:                                  [  OK  ]

Jei pavyko be klaidų, tai prie Apache konfigūravimo jau neteks grįžti. Bet tai dar ne viskas. Mes kolkas tik sukonfigūravome, kad Apache web serveris žinotų kurioje direktorijoje randasi bugs.gildija.lt domeno failai. Visas smagumas man prasidėjo tuomet, kai atsidaręs savo naršyklėje “bugs.gildija.lt” gavau pranešimą, kad tokio serverio naršyklė neranda. Suprantama, buvau per daug naivus tikėdamasis, kad Apache perkonfigūravimo užteks subdomeinui pakurti :-) .

DNS konfigūravimas

Kompiuterių išdėstymas 4. Tam, kad jūsų subdomeiną atrastų jūsų naršyklė, reikia, kad jis būtų užregistruotas DNS serveriuose. Tai galima patikrinti pasinaudojus Windows komanda nslookup arba linux programėlėmis nslookup , dig arba host .

Taigi, patikriname savo subdomeiną:

C:\windows> nslookup bugs.gildija.lt
Server:  ns1.telecom.lt
Address:  212.59.0.1

*** ns1.telecom.lt can't find bugs.gildija.lt: Non-existent domain

arba:

root{gildija.lt}# host bugs.gildija.lt
Host bugs.gildija.lt not found: 3(NXDOMAIN)

Kaip matome naujo subdomeno neranda nei mūsų namų kompiuteris, nei pats serveris ant kurio subdomenas turi veikti.

Tam, kad naujas subdomenas būtų randamas, reikia sukonfigūruoti DNS serverio programą pirminiame mūsų domeno vardų serveryje . Pirminį vardų serverį galime sužinoti Lietuvos domenų registratoriaus DomReg tinklapyje, pasinaudoję adresų informacijos keitimo forma. Mano (gildija.lt) atveju yra nurodytas pirminio vardų serverio adresas playdoll.admin.lt, kuris fiziškai yra tas pats gildija.lt serveris. Tai reiškia, kad DNS serverio programą man teko konfigūruoti tame pačiame serveryje.

(!) Jei jūsų domeno pirminį vardų serverį administruoja kažkas kitas, tai toliau galite neskaityti, o eiti rašyti laiško to serverio administratoriui. Jei jūs patys administruojate savo domeno pirminį vardų serverį, tai važiuojam toliau.

5. Mūsų serveryje (gildija.lt) yra suinstaliuotas BIND DNS serveris vardu named . Kiek supratau naršydamas internete, tai gana paplitęs Linux DNS serveris.

Šio serverio konfiguraciniai failai (kad būtų smagiau) guli mūsų serverio /var/named direktorijoje (o aš tikėjausi juos rasti /etc/ direktorijoje, kaip ir visus kitus konfigus, ech : ). Pagrindinis konfigūracijos failas mūsų serveriui (gildija.lt) šiuo atveju taip ir vadinasi: “gildija.lt”.

Šiame faile gana greitai pastebėjau subdomenų konfigūraciją:

...
vilius          IN      CNAME   www
emilis          IN      CNAME   www
zilvinas        IN      CNAME   www

Po šiais įrašais pridėjau naują įrašą:

bugs            IN      CNAME   www

išsaugojau failą ir perkroviau named serverį:

root{gildija.lt}# /etc/rc.d/init.d/named restart
Stopping named:                                   [  OK  ]
Starting named:                                   [  OK  ]

(!) Atkreipkit dėmesį į pilną kelią – jis skiriasi nuo named programos kelio, nes šiuo atveju mes paleidžiame skriptą, kuris paleidžiamas kompiuterio startavimo metu.

6. Dabar patestuokime kas iš to išėjo:

C:\WINDOWS> nslookup bugs.gildija.lt
Server:  ns1.telecom.lt
Address:  212.59.0.1

*** ns1.telecom.lt can't find bugs.gildija.lt: Non-existent domain

ir:

root{gildija.lt}# host bugs.gildija.lt
bugs.gildija.lt is an alias for www.gildija.lt
www.gildija.lt has address 213.197.142.106

Kaip matome mūsų web serveris jau atpažįsta subdomeną bugs.gildija.lt, bet Telekomo DNS serveriams jis dar neįkandamas. Jei esate šiek tiek susidūrę su DNS serverių darbu, galite pamanyti, kad Telekomo serveriai tiesiog dar nespėjo surasti naujojo subdomeno. Aš irgi iš pradžių taip maniau, laukiau valandą, kelias, pusę paros.. Galų gale draugas padėjo surasti kur bėda. O ji slepiasi named konfiguracinio failo gildija.lt viršuje, į kurį aš iš pradžių visai neatkreipiau dėmesio.

Viršuje konfiguracinio failo yra gana keistų parametrų rinkinys, prie kurio tikrai nesinori kišti nagų, kai gerai neišmanai:

@    IN      SOA     playdoll.admin.lt.      info.gildija.lt. (
             2004072701 ; serial
             1H ; refresh
             15M ; retry
             14D ; expire
             12H ; default_ttl
             )
...

Vienintelis parametras, kurį mums reikės pakeisti, tai dešimties skaičių eilutė: 2004072701 . Geriau į ją įsižiūrėjus galima suprasti, iš ko ji susideda: iš datos ( 20040727 – 2004 metų 07 mėnesio 27 diena) ir eilės numerio ( 01 ). Pakeičiame šią eilutę, taip, kad ji atitiktų šios dienos datą ir šios dienos konfiguracinio failo atnaujinimo numerį: 2004080801 .

Dabar vėl perkrauname named serverį (žr. aukščiau). Po perkrovimo man nereikėjo laukti nė vienos minutės ir naujas subdomenas iškart tapo pasiekiamas iš nutolusio kompiuterio:

C:\WINDOWS> nslookup bugs.gildija.lt
Server:  ns1.telecom.lt
Address:  212.59.0.1

Non-authoritative answer:
Name:    www.gildija.lt
Address:  213.197.142.106
Aliases:  bugs.gildija.lt

Atsidariau naująjį adresą savo naršyklėje, pamačiau tai ką tikėjausi išvysti (testinį puslapį, kurį pats buvau sukūręs :] ) ir galėjau eiti kurti svetainės.

Suma sumarum

Tikiuosi kam nors bus naudinga tai, ką čia surašiau. Šiuo straipsneliu nepretenduoju į rimtą dokumentaciją. Rašiau paskubomis, jei kam užklius rašybos, skyrybos, stiliaus ar logikos klaidos, prašau apie jas pranešti (emilis.d@gmail.com). Nesu tikras dėl terminų, kuriuos naudojau šiame straipsnyje. Jei jus “pjauna” mano vartojami anglicizmai, būsiu dėkingas, jei pasiūlysite lietuviškus atitikmenis.

Linux guru ir hacker’ių prašau pažiūrėti į straipsnio turinį atlaidžiai. Jei radote klaidų (ypač dėl netikslumų susijusių su tuo, kaip iš tikro veikia serveriai Linux aplinkoje) – parašykite komentaruose. Jei nuspręsite parašyti teisingą straipsnelį šia tema, leidžiu panaudoti bet kurią šio straipsnio teksto dalį pagal Creative Commons Attribution-NonCommercial-ShareAlike 2.0 licenciją.

 

Komentarai

b3

linuxconf yra labai zavi programa tinginiui adminui :P o siaip saunuolis kad susigaudei. sekmes ir linkejimai is vengrijos.

Ričardas

Tą pačia problema turejau ir aš, pusę metų remybės nedavė, ir savaitę paieškų, bei skaitymo. Į serial eilutę ir aš dėmesio nekreipiau iki šio straipsnio. Mano atveju, mane dar priverte ir paskutinį skaičių vienetu padidinti. ....ir kaip ir minėjote: - už minutės.... wap.fromri.lt jau veikė.
Straipsnio puikumas tame, kad analizuojama klaida ir pateiktas būdas jei ištaisyti.

Xawiers

Speju Linux RedHat arba Mmm kaip ten ... Mandrake va.

Donatas

Aciu:)

simas

admin buk geras pamokink susikurt serva ash visihay zaliaz sitame reikale ,bet shiek tiek zinau???plz busiu visa gyvenima dekingas ..parashyk i email plz

naikon

Sveiki, gal galit ka nors pasakyt apie XP?
as serva jau esu palejdes bet nemoku su tais IP'ais as siuo metu esu UK, as broadbando admino logina ir pass turiu, ten yra daug navarotu su IP, as pajungiu serva wiska wejkia.. bet kito tinklo wartotojiui neuzkrauna, kame rejkalas? patarkit kas nors ka nors :) dekuj

Simas

Paziurek ar viskas geriai su firewall'u?Ir ar irasei listen'a?

Vidas

ar galit padeti del apache suconfiguravimo 2.2 is anksto dekinkas

Vidas

ats rasiau paskubomis

Justas

Man yra daug nesuprantamų dalykų.

Komentuoti šio įrašo nebegalima. Komentarų sistema išjungta.