Spletni strežnik doma (1)
Takih, ki imamo speljan kabelski internet ali ADSL, je vedno več in nas bo kmalu gotovo še več (še posebej ob novi možnosti ADSL prek analogne telefonske povezave). In kaj počnemo s temi silnimi megabiti? Hitro deskamo, si izmenjujemo (tudi) velika elektronska sporočila, morda tudi nekoliko piratiziramo in si nalagamo glasbene in filmske datoteke. Izkoriščamo torej le en del širokopasovne ponudbe - hitrost. Kaj ko bi se poizkusili tudi v drugem delu - stalnem priklopu? Izkoristimo torej povezavo in računalnik za to, da bomo svetu ponujali svoje informacije, kakršnekoli že, prek spletnega strežnika. Računalniku stalni vklopi in izklopi tako ali tako bolj škodijo, kakor če ga imamo neprestano prižganega, tako da je edini minus stalno delujočega računalnika glasnost - če seveda nimamo modela, ki je opremljen s tišjimi hladilniki ali če nimamo posebne računalniške sobe.
Kako se domačega spletnega strežnika sploh lotiti? Za začetek - pri internetnem ponudniku moramo zahtevati, da naši širokopasovni povezavi dodeli nespremenljivo številko IP. Pri povezavi ADSL je namreč ta največkrat dinamična in kot taka neuporabna za stalne (spletne) povezave. Dandanes ponudniki to uredijo zastonj. S tem dosežemo, da bodo uporabniki naš spletni strežnik dosegali prek povezave, ki je videti nekako takole: http://213.157.221.37. Deluje, vendar je na moč nerodno.
Veliko bolje si bo torej omisliti lastno domeno, ki bo te štiri številke spremenila v kaj bolj razumljivega. Npr. http://www.janez.net ali morda http://www.cankarjevi.com. Za to se bo treba obrniti na katerega izmed t. i. registrarjev oz. podjetij, ki se ukvarjajo z registracijo internetnih domen (v katerega izmed slovenskih iskalnikov vpišite "registrar" in videli boste, da je ponudba kar pestra). Če niste pravna oseba (podjetje), se lahko za registracijo domene ".si" zaenkrat obrišete pod nosom, saj se birokracija na tem področju pri nas še ni sprostila. Ostanejo torej mednarodne domene, med katerimi so najbolj priljubljene .com, .net in .org, na izbiro pa je še množica drugih. Bodimo realni - kaj bo pisalo v drugem delu (za piko) naše nove domene, je popolnoma nepomembno, tako da se lahko o izbiri odločamo povsem iz estetskih razlogov in seveda na podlagi cene. Registracija domene namreč ni zastonj, temveč moramo registrarju (on pa nosilcu domene) zanjo vsako leto nekaj plačati. Natančne cene vam bo povedal/pokazal registrar, povprečna cena za eno leto pa je nekako okoli 5000 tolarjev. Ko boste pri registrarju tako kupili (oz., bolje, "najeli") svojo domeno, boste dobili dostop do spletnega orodja, s katerim boste lahko vpisali podatke o domenskih strežnikih (DNS - Domain Name Server), ki imajo vpisane podatke oz. kazalce do vašega spletnega računalnika. Natančna razlaga tega presega namen tega članka, še posebej, ker lahko vse to prepustite tudi registrarju. Tudi vodenje domenskih strežnikov prepustite njemu, včasih zastonj, včasih za nekaj sto tolarjev na mesec. Skratka, če smo uredili vse to (oz. je to namesto nas postoril registrar), je naša številka IP od zunaj vidna tudi prek kupljenega domenskega imena (npr. jaz.com ali pa www.jaz.com).
Kupljeno domeno lahko upravljamo sami ali pa za to poprosimo kar našega registrarja.
Nadalje moramo do računalnika spustiti promet skozi TCP vrata številka 80, ki jih uporablja protokol HPPT oz. spletni brskalniki in strežniki. Če naš sistem ne premore požarnega zidu, je to že privzeto. Ker pa dvomimo, da nas/vas je takih nezaščitenih uporabnikov veliko, se bo treba vendarle pozabavati z nastavitvami le-tega. Če naše domače krajevno omrežje ne premore širokopasovnega usmerjevalnika, temveč je računalnik na ADSL/kabel povezan neposredno, bo dovolj v programskem požarnem zidu vklopiti prepustnost vrat št. 80. V obe smeri, seveda. Če imamo usmerjevalnik, pa bo treba uporabiti t. i. zmogljivost "port forwarding" (ponekod imenovano tudi "Virtual servers"), s katero dejansko dosežemo isto. V nastavitvenem vmesniku usmerjevalnika bo treba izbrati, da se promet prek vrat 80 prenaša ("forwardira") v naš računalnik oz. njegovo številko IP. Mimogrede, na tej točki je pravzaprav popolnoma vseeno, ali si bomo omislili samo en računalnik, ki bo hkrati tudi spletni strežnik, ali pa bomo za slednje uporabili namenski računalnik, ki bo ždel nekje pod mizo. Le usmerjevalniku moramo povedati, naj vrata 80 prenaša na pravega.
V usmerjevalniku je treba do računalnika "spustiti" promet skozi vrata številka 80.
S tem smo dosegli, da zahteva, ki jo nekdo (kjerkoli v internetu) sproži z vpisom naše domene v spletni brskalnik, dejansko "prileti" do našega domačega računalnika, ki smo mu zdaj že gotovo zaupali 24-urno delovanje. Težava? Naš računalnik še ni "naučen", da na take zahteve odgovarja, oz. če smo natančni - nima še nameščene ustrezne programske opreme.
Spletni strežnik
Privzemimo, da sodimo v tisto velikansko večino, ki uporablja Microsoftova Okna - med katerimi spletnimi strežniki lahko izbiramo? Najprej je tu seveda v sama Okna vgrajen IIS (Internet Information Server) oz. Microsoftov spletni strežnik. Za začetnike je idealen, saj so vse nastavitve dostopne prek enostavnega uporabniškega vmesnika. Žal je različica v osebnih Oknih (Windows XP) nerazumljivo in preveč omejena, ker v nasprotju z različico v strežniških Oknih (Windows 2003 Server) dovoljuje strežbo le desetim hkratnim povezavam. To se pravzaprav ne sliši tako zelo slabo, tudi za domači spletni strežnik ne, dokler ne ugotovimo, da vsak element na spletni strani "šteje" eno povezavo. Če imamo spletno stran z množico fotografij, bodo uporabniki (pa četudi bodo takrat "na liniji" sami) namesto sliki dobivali oznake napak, ki bodo sporočale, da tega elementa na spletni strani ni bilo mogoče doseči... Nujno bo torej treba poseči po alternativni rešitvi.
Microsoftov spletni strežnik IIS je zelo enostavno uporabljati, vendar je v osebni različici omejen do neuporabnosti.
Edina smiselna alternativna rešitev je hkrati danes daleč najbolj uporabljana rešitev na svetu (68 % vseh strežnikov!) - odprtokodni spletni strežnik Apache (www.apache.org). Gotovo ste že slišali zanj in ga avtomatsko povezovali z operacijskimi strežniki Unix. Vendar pa zelo dobro deluje tudi v Oknih, če množice drugih operacijskih sistemov niti ne omenjamo. Apache je izreden spletni strežnik, ki s svojimi zmogljivostmi gotovo bistveno presega to, kar želimo doseči na svojem malem domačem spletnem strežniku, pa vendar ni nobenega razloga, da bi se mu zaradi tega izognili. Z viri je namreč zelo varčen, zato računalnika z njegovo namestitvijo ne bomo skoraj nič obremenili.
Za tipičnega uporabnika Oken vseeno nastopi težava - sorazmerno kompleksno upravljanje programa. Apache je namreč tipičen odprtokodni strežniški program, ki na uporabniške vmesnike in šminko ne da kaj dosti (oz. nič) in se v popolnosti opira na tisto, kar je zapisano (smo zapisali) v nastavitveni datoteki httpd.conf. Navodila za uporabo strežnika Apache so tako pravzaprav le uporabniški priročnik za množico (oz. kar MNOŽICO!) ukazov in nastavitev, ki jih lahko sprejme ta nastavitvena datoteka. Ne bo šlo drugače - vsaj nekoliko se bo treba zatopiti vanje ali pa vsaj v httpd.conf, kjer so najpomembnejše nastavitve že vpisane in le zakomentirane, tako da jih lahko hitro vklopimo.
Apache se v Oknih "pokaže" le z ikonico, ki omogoča ustavitev in vnovični zagon spletnega servisa.
K sreči je vsaj namestitev strežnika okensko trivialna - iz spleta snamemo zadnjo različico (čeprav so še vedno na voljo "legendarne" različice serije 1.x, priporočamo namestitev novejše različice 2.x) in jo namestimo. Vprašanja ob namestitvi obsegajo bolj ali manj le ime domene, ki jo bo strežnik stregel, in številko vrat TCP, na katerih naj posluša (privzeto kar 80). Po namestitvi je vse, kar v Oknih vidimo "apačevskega", ikona v desnem delu opravilne vrstice, ki omogoča, da streženje ugasnemo in spet poženemo. To lahko postorimo tudi neposredno - prek programa Services na Nadzorni plošči.
Po namestitvi Apache streže privzete strani, zato bo treba hiter skok v datoteko httpd.conf.
Ko je Apache nameščen, že avtomatsko tudi deluje, vendar zagotovo ne streže tistih strani, ki smo mu jih pripravili mi, temveč svoje, privzete. Potreben bo torej poseg v httpd.conf: poiščemo ukaz DocumentRoot in mu pripišemo imenik, na katerem so naše spletne strani, oz. datoteke HTML. Npr. (katere poševnice uporabimo, je nepomembno):
DocumentRoot "C:/inetpub/wwwroot"
Morda bo koristno vpisati oz. popraviti tudi ukaz, ki pove, katere HTML strani so za Apache privzete (se prikažejo, če v naslovni vrstici neposredno ne zapišemo tudi točno določenega dokumenta HTML). Npr:
DirectoryIndex default.htm index.htm index.html index.php index.html.var page_01.htm
Če želimo streči tudi vsebino imenikov, ki niso podimeniki zgoraj zapisanega osnovnega imenika (wwwroot), lahko uporabimo sklop ukazov za vzpostavitev navideznega imenika. Npr:
Alias /fotografije "c:/fotografije"
<Directory "c:/ fotografije ">
Options Indexes MultiViews
AllowOverride all
Order allow,deny
Allow from all
options indexes
</Directory>
Kaj točno pomenijo nastavitve znotraj sklopa "Directory", za potrebe tega članka ni pomembno, vedno pa se o tem lahko pozanimate v navodilih na www.apache.org.
Lahko se odločimo tudi za nov navidezni strežnik v sklopu obstoječega. Če bi želeli narediti dostopno stran sinko.novak.net (namesto običajne strani novak.net), bo treba ime sinko najprej vpisati v domenski strežnik in mu prirediti IP številko našega strežnika (kot smo zapisali že v prvem delu, bo za to najbolje poprositi registrarja, pri katerem smo kupili domeno in najverjetneje uporabljamo tudi njegove strežnike DNS). Nato pa v http.conf vpisati nekaj takega:
<VirtualHost *>
DocumentRoot "c:\inetpub\wwwroot\sinko"
ServerName sinko.novak.net
</VirtualHost>
In seveda HTML strani našega sinka postaviti v c:\inetpub\wwwroot\sinko.
Včasih je smiselno imeti imenik, na katerem lahko kolegom pustimo določene datoteke, ti pa si jih "snamejo" kar z brskalnikom. Najprej prijavimo navidezni imenik (Alias, glej zgoraj), nato pa dovolimo brskanje po njem. Ko bo uporabnik vpisal njegov naslov (npr. http://novak.net/zacasno), se bodo izpisale (DIR) vse datoteke, ki so v njem (če le tam ne bo tudi privzete datoteke HTML, glej zgoraj). To je sicer (zaradi varnosti!) v celotnem spletnem strežniku prepovedano, "vklopimo" pa tako, da med ukazi, ki stojijo v sklopu "directory" (glej zgoraj), vpišemo:
Options -Indexes
Kaj pa, če želimo določen imenik zaščititi in dovoliti dostop le posvečenim? Apache za to uporablja posebne datoteke .htaccess, ki jih naredimo v imenikih, ki jih želimo zaščititi. V te datoteke lahko zapišemo bolj ali manj vse ukaze, ki jih sprejme sklop /directory v osnovni datoteki httpd.conf, vendar moramo nekatere sklope ukazov posebej dovoliti. Da lahko vanje vpisujemo ukaze, ki omejujejo dostop, moramo v datoteko httpd.conf (najbolje kar v osnovni sklop ukazov "/directory") vpisati:
AllowOverride AuthConfig
Nato pa v dejansko datoteko .htaccess na zaščitenem imeniku:
AuthType Basic
AuthName "Samo za posvecene"
AuthUserFile "c:\program files\apache group\apache2\passwd\passwordi"
Require user priviligirani
S temi ukazi smo zahtevali, da se bo uporabniku ob poskusu dostopa odprlo okno z naslovom "Samo za posvecene", ki bo zahtevalo uporabniško ime in geslo, dovolj dobro pa bo le ime "privilegirani", katerega geslo je shranjeno v zgoraj zapisani datoteki passwordi. Ostane le še težava, kako geslo shraniti v to datoteko. Za to uporabimo program htpasswd, ki je v imeniku BIN naše namestitve Apacheja. Odpremo ukazno okno in vpišemo nekaj takega:
htpasswd.exe -c ../passwd/passwordi priviligirani
Program nas bo povprašal po geslu, ki ga bomo morali še potrditi in to je vse.
In še pozor - po vsaki spremembi v httpd.conf moramo Apache ročno znova zagnati. Če smo se pri vpisovanju kaj zmotili, se strežnik ne bo zagnal in bo treba napako odpraviti.
Znanje, ki smo ga zapisali doslej, popolnoma zadostuje za streženje statičnih strani na našem domačem spletnem strežniku. Ker pa smo uporabili Apache, ki je standard med spletnimi strežniki, je korak do dinamičnih strani zelo preprost - namestitev programskega jezika PHP in zbirke podatkov MySQL. S temi tremi paketi imate v računalniku vse, kar potrebujete za kakršenkoli spletni uporabniški program. Vendar pa to že presega namen tega članka.
Apache nima uporabniškega vmesnika, temveč le nastavitveno datoteko httpd.conf.
V prihodnji številki: beleženje dostopa (Analog)