|
1.Uvod
Apache web server
je program kome je osnovni zadatak proslje?ivanje web sadr?aja web browseru,
kada se u njemu upi?e adresa na koju se Apache odaziva.
Usprkos nastojanjima velikih svetskih kompanija poput Microsofta ili Netscapea
da mu preotmu dominaciju na tr?i?tu, Apache je jo? uvek dominantan u pogledu
kori?tenih web servera, a izgleda da ?e i tako ostati jo? du?e vreme.
Istra?ivanja pokazuju da izme?u 50 i 60% svih web servera na svetu koriste upravo
Apache programski paket.
Osim ?to je besplatan, Apache korisnicima i administratorima donosi ?irok spektar,
kako jednostavnih, tako i naprednih mogu?nosti ?to ga definitivno stavlja na
prvo mesto izbora ve?ine web administratora.
U ovom poglavlju opisani su osnovni postupci vezani za instalaciju, konfiguraciju,
i administraciju najpopularnijeg i naj?e??e kori?tenog web servera danas, Apache
web servera verzije 1.3. i verzije 2.0 beta.
Treba tako?er napomenuti da su ovdje iznesene samo osnovne napomene vezane uz
na?in kori?tenja ovog paketa, s obzirom na njegovu kompleksnost i brojne mogu?nosti
koje on nudi.
Za iskori?tavanje svih mogu?nosti ovog programa korisnicima se preporu?uje detaljnije
informacije o Apache serveu na njegovim web stranicama (http://www.apache.org).
2.Instalacija
Apache servera 1.3
Instalacija Apache
web servera u Debian i Mandrake distribucijama ista je kao i za sve ostale pakete
koji u njima dolaze, putem Dselect i Software Manager programskih paketa. Navedena
poglavlja dostupna su ne slijede?im URL adresama:
U ovim distribucijama Apache ?e se instalirati u direktorijum /etc/httpd umjesto
uobi?ajnog direktorijuma /usr/local/apache.
Kod FreeBSD operativnog sistema preporu?uje se instalirati Apache iz tar.gz
paketa koji se nalazi na CD-u sa besplatnim softverom. Nakon otpakovanja Apache
servera iz tar.gz arhive, instalacija se pokre?e pomo?u skripte:
# ./install-bindist.sh
Skripta se nalazi
u direktorijum koji je nastao otpakovanjem tar.gz paketa. Po defaultu server
se instalira u direktorijum /usr/local/apache. Ako se paket ?eli instalirati
u neki drugi direktorijum potrebno je pokrenuti instalacijsku skriptu na slede?i
na?in:
# ./install-bindist.sh /ime_direktorijuma
Nakon instalacije
paket je ve? pode?en da se pokre?e prilikom podizanja sistema.
Apache je mogu?e instalirati vi?e puta na istom ra?unaru.
To se posti?e tako da pokrenemo instalacijsku skriptu dva puta ali sa razli?itim
datotekama u koje ?elimo instalirati server ili da skriptu pokre?emo sa opcijom
-f pomo?u koje mo?emo kreirati zasebne konfiguracijske datoteke za svaki poslu?itelj.
Ovakva instalacija je korisna ako ?elite imati jedan server sa ograni?enim pristupom
koji ?ete na ovaj na?in odvojiti od glavnog servera.
Kori?tenje drugog Servera je korisno i ako ?elite testirati noviju verziju Apache-a
pre nego sto ga prebacite da bude glavni server.
3.1 Konfiguracija
upisivanjem postavki u httpd.conf datoteku
Konfiguraciska
datoteka za Apache server zove se httpd.conf i nalazi se u /etc/httpd/conf direktoriju.
Sadr?aj httpd.conf konfiguraciske datoteke klju?an je element kojim se definise
pona?anje instaliranog Apache web servera.
S obzirom na kompleksnost, i vrlo ?irok spektar mogu?nosti koje nudi ovaj server
adekvatno tome postoji i mno?tvo konfiguraciskih parametara i opcija koje se
mogu na?i u httpd.conf datoteci. Ovde su iznesene samo one najnu?nije koje je
potrebno podesiti kako bi se omogu?ila osnovna funkcionalnost ovog servera.
Treba napomenuti da su te opcije ve? inicijalno postavljene u httpd.conf datoteci
nakon uspe?no obavljenog postupka instalacije, ?ime se olak?ava kori?tenje ovog
programa za onu skupinu korisnika koji nisu toliko upoznati sa detaljima o konfiguraciji
ovog servera.
Pre nego ?to se krene sa konfiguracijom potrebno je odlu?iti koje ime ?e imati
server, na koje mre?no okruzenje ?e primati zahteve, gde ?e se nalaziti konfiguracijske
i log datoteke, i u kojem direktorijumu ?e biti sme?teni dokumenti web stranice.
ServerName je ime na koje ?e server reagovati kada se u programu prtrazivanja
upi?e njegova URL adresa (www.ime_domene.com).
BindAddress je konfiguracijski parametar koji definise IP adresu na kojoj server
prima HTTP zahteve. Ovo zapravo i nije obavezan deo konfiguracije servera, nego
mre?ne konfiguracije ra?unara na kojem se server nalazi. Ovim parametrom osiguravamo
da klijent koji pristupa serveru preko imena ispravno pove?e ime sa IP adresom.
Inicijalna vrijednost ovog parametra je
BindAddress *
?to zna?i da server
slu?a sva mre?na okruzenja na ra?unaru.
Ukoliko se ?eli da server slu?a izri?ito odre?enu adresu napisati ?e se npr.:
BindAddress 192.168.1.1
Ako zelimo da
server slusa samo klijente sa vlastitog ra?unara napisati ?emo
BindAddress 127.0.0.1
Problem ovog parametra
je da specificira samo jednu IP adresu jer se ne mo?e zadavati vi?e puta. Ako
se ?eli odabrati vi?e od jedne IP adrese koje ?e server slu?ati koristi se parametar
Listen.
Port odre?uje na kojem portu server slu?a zahteve (inicijalna vriednost je 80).
Umjesto kombinacije parametara Port i BindAddress po?eljno je koristiti Listen
opciju.
Listen se koristi
u slu?azevima kada se ?eli definisati vi?e IP adresa i port-ova za isti server.
Tako ?e npr. linije:
Listen 192.168.1.1:80
Listen 192.168.1.1:443
Listen 192.168.1.2:80
podesiti server
tako da slu?a port-ove 80 i 433 na adresi 192.168.1.1 i port 80 na adresi 192.168.1.2.
ServerType bira
mod rada server. Apache mo?e raditi u dva moda, samostalno
ServerType standalone
ili unutar inetd
deamona
ServerType inetd
U samostalnom
modu rada server sam upravlja svojim mre?nim konekcijama i slu?a port-ove koji
su mu definisani.
Ovo je uobi?ajen na?in rada Apache server i preporu?uje se takav na?in rada.
Ako server radi unutar inetd deamona, on zanemaruje konfiguracijske parametre
i ?eka da ga inetd pozove. Budu?i da inetd za svaku vezu ponovo poziva Apache,
ovaj na?in rada je vrlo necitak i rijetko se koristi, pa ga zato ovdje ne?emo
pobli?e opisivati.
User i Group konfiguriraju
server da radi pod odre?enim korisnikom i grupom. Kada je Apache pokrenut pod
root-om (npr. kod podizanja sistema) on pokre?e vi?e podprocesa (child processes)
i ako su User i Group pode?eni, podprocesi gube root status i primaju identitet
koji smo mi podesili.
Obi?no se postavlja vrednost nobody za korisnika i nogroup za grupu. Na taj
na?in server je puno sigurniji i otporniji na napade i ako nameravate pokretati
Apache kao root trebali bi podesiti ove parametre.
ServerAdmin definise
e-mail adresu administratora. Apache koristi ovu adresu da bi prijavio gre?ke
u radu. Adresa nije ograni?ena na domen u kojoj server radi, ?to zna?i da je
mogu?e navesti bilo koju e-mail adresu.
ServerRoot definise
direktorijum u kojem se nalaze sve va?ne datoteke potrebne za rad server. Po
defaultu to je /usr/local/apache direktorijum, a kod Debian i Mandrake distribucije
to je /etc/httpd direktorijum.
ErrorLog definise
ime datoteke u koju se spremaju poruke o gre?kama u radu. Apache podr?ava vi?e
vrsta log-ova od kojih su najuobi?ajniji access log, referer log i error log.
Preporu?uje se definisanje i kori?tenje access log i error log parametara unutar
Apache konfiguracijske datoteke kako bi se na taj na?in omogu?ilo lak?e otklanjanje
gre?aka u radu, i kontrolisanje poku?aja pristupa ovom serveru. Uobi?ajne vrednosti
ovih parametara su:
ErrorLog /usr/local/apache/logs/error.log
CustomLog /usr/local/apache/logs/access.log
ili jednostavnije
ErrorLog /logs/error.log
CustomLog /logs/access.log
a kod Mandrake
i Debian distribucija
/etc/httpd/logs/error.log
DocumentRoot pokazuje
na direktorijum u kojem se nalaze web stranice va?eg servera.
Uobi?ajno server tra?i direktorijum /htdocs unutar direktorijuma definisanog
u ServerRoot. Ako ?elimo promeniti ovu postavku, mo?emo navesti ili relativnu
stazu (ako je direktorijum unutar server root-a) ili apsolutnu stazu ako ?elimo
neki direktorijum izvan glavnog Apache direktorijimua. Sasvim je uobi?ajno da
se DocumentRoot stavi negde izvan ServerRoot-a zato da se web stranice odvoje
od konfiguracijskih datoteka. Default postavka je /usr/local/apache/htdocs,
a na Debian i Mandrake racunarima /var/www/.
Ovo su osnovni
parametri za konfiguraciju Apache servera i dovoljni su za normalan rad. Ostali
parametri u httpd.conf datoteci uglavnom su dobro komentirani i po defaultu
su postavljeni na odgovaraju?e vrednosti.
3.2 Konfiguracija pomo?u programa Comanche
Naprednija i jednostavnija
mogu?nost konfiguracije Apache-a u grafi?kom okruzenju izvodi se pomo?u programa
Comanche koji je prilo?en na CD-u s besplatnim softverom.
Paket Comanche3.0b4-x86-linux-glibc2.tar.gz potrebno je otpakovati naredbom:
# tar -xzvf ime_paketa
Nakon toga potrebno
je u?i u direktorijum comanche3-0b4, i tamo pokrenuti datoteku comanche3.0b4.
# ./comanche3.0b4 &
Nakon pokretanja
datoteke otvara se mali prozor u grafi?kom okruzenju koji ima samo jedan gumb
(Comanche), kojega je potrebno pritisnuti i program ?e se pokrenuti. Ako Comanche
pokre?ete prvi puta morate mu pokazati put do va?eg Apache servera, budu?i da
program ne mo?e znati gdje ste ga instalirali.
Naknadno Comanche-u mo?ete dodavati dodatne staze, ukoliko postoji instalirano
vi?e Apache servera na istom racunaru.
Ukoliko je Apache paket instaliran iz neke Linux distribucije potrebno je odabrati
Use the one bundled with my system opciju i u padaju?em meniju odabrati adekvatnu
distribuciju.
Za Apache instaliran iz tar.gz paketa potrebno je odabrati I installed Apache
under opciju te upisati direktorijum u kojem je instaliran va? server, a to
je obi?no /usr/local/apache (ukoliko nije navedeno druga?ije tokom postupka
instalacije).
Kada je pode?ena lokacija va?eg Apache servera, otvoriti ?e se glavni prozor
Comanche-a
Comanche je vrlo
kompleksan alat u kome je na jednom mestu mogu?e upravljati instaliranim Apache
modulima, te ?itati log i conf datoteke na vrlo lagan na?in.
Ukoliko se naknadno ?eli konfigurisati programski paket Comanche tako da putem
njega mo?emo administrirati neki drugi postoje?i Apache server, to je mogu?e
posti?i na slede?i na?in: Odaberemo Apache Web Server -> New Apache Installation
opciju, nakon ?ega sledi klasi?an postupak dodavanja server kojeg ?elimo administrirati.
Da bi se izbeglo stalno pokretanje datoteke comanche3.0b4 iz terminala, mo?e
se postaviti shorcut na desktop .
4.Pokretanje i
zaustavljanje
Od distribucije
do distribucije mogu se razlikovati direktorijumi u kojima se nalazi datoteka
pomo?u koje se pokre?e Apache.Kod Debian distribucije taj put je /usr/sbin direktorijum,
u kojem se nalazi apache datoteka kojom ?e se pokrenuti ovaj server, dok se
kod Mandrake distribucije u istom direktorijumu nalazi httpd datoteka, koja
?e obaviti isti posao.
Ukoliko se ne koristi inicijalna konfiguracijska datoteku ili je ista naknadno
preme?tena u drugi direktorijum, Apache je potrebno pokrenuti sa opcijom -f
npr.:
# /usr/local/apache/bin/httpd
-f /home/web/httpd-test.conf
Pokretanje Apache
web servera izvodi sa naredbom:
# /usr/local/apache/bin/apachectl
start
Ako se ?eli proveriti
da li je server pokrenut to se mo?e vrlo jednostavno u?initi pomo?u naredbe:
# ps -aux | grep
httpd
Ako se ne mo?e
pokrenuti Apache ?e javiti gre?ku i savetovati ?e da pokrenemo apachectl configtest
koji ?e nam dati vi?e detalja o problemu.
Ako je konfiguracijska datoteka dovoljno dobra da program mo?e prepoznati gdje
se nalazi error log, tamo ?e se nalaziti dodatne informacije o problemu zbog
kojeg se server ne mo?e pokrenuti.
?ak i ako se server pokrene korisno je pogledati error log koji ?e pokazivati
na mogu?e probleme koji nisu dovoljno ozbiljni da bi Apache prestao raditi ali
mogu predstavljati gre?ku u konfiguraciji. Kada se program normalno pokrene
u error log-u bi se trebala pojaviti poruka Server configured - resuming normal
operations.
Ukoliko se ?eli pregledavati error log dok se Apache pokre?e korisna je naredba
tail:
# tail -f /usr/local/apache/logs/error_log
&
nakon koje je
potrebno pokrenuti Apache.
Server se mo?e iznova pokrenuti sa kill -HUP gde je ID procesa Apache.
Treba uzeti u obzir da Apache pokre?e podprocese (child processes) sa istim
imenom da bi poslu?io klijente i da ?e se ponovno podignuti samo ako u kill
naredbi navedemo originalan proces (proces roditelj). Njega ?emo najlak?e prona?i
pomo?u naredbe:
# ps -aux | grep httpd
i to tako da tra?imo
proces koji je pokrenut pod root korisni?kim imenom, a ne one pod drugim korisnicima
(tipi?no 'nobody').
Alternativna opcija je da se pid procesa sazna iz pid datoteke koju Apache generise
prilikom pokretanja:
# kill -HUP 'cat
/usr/local/apache/logs/httpd.pid'
Ipak najjednostavnije
je koristiti apachectl program (za ina?ice >=1.3):
# /usr/local/apache/bin/apachectl
restart
U error log-u
tada bi trebalo pisati:
SIGHUP received . Attempting to restart
Server configured - resuming normal operation.
Na?alost ponovno
podizanje server uzrokuje prekid svih konekcija koje poslu?uju klijente. Zbog
toga postoji opcija graceful ponovnog podizanja:
# kill -USR1 'cat
/usr/local/etc/httpd/logs/httpd.pid'
ili pomo?u apachectl-a:
# /usr/local/apache/bin/apachectl graceful
Ovakav pristup
ponovnog podizanja Apache servera uzrokuje ponovno ?itanje konfiguracijske datoteke
i prekidanje svih procesa koji nisu aktivni.
Aktivni procesi prekinuti ?e se tek kada se poslu?i klijent. Za to vreme port
na koji Apache 'slu?a' ne?e se gasiti tako da ?e se sa?uvati rep (queue) zahteva
za konekciju (osim u slu?aju kada se broj porta promijenio).
Graceful restart bi se trebao koristiti kada god je to mogu?e, pogotovo ako
web server prima mnogo zahtjeva.
Server se zaustavlja sa:
# kill -TERM
ili
# /usr/local/apache/bin/apachectl stop
Error log ?e tada
sadr?avati poruku:
httpd: caught
SIGTERM, shutting down
5.Postavljanje web stranica
U inicijalnom
direktorijumu za pohranjivanje web stranica Apache ?e prilikom instalacije generisati
svoju vlastitu web stranicu i najbolji na?in da se provjeri da li sve ispravno
radi je da se u web browseru upi?e http://ime_racunara.domena/, nakon ?ega bi
se spomenuta stranica trebala u?itati. Umesto te stranice mogu?e je postaviti
bilo koju drugu web stranicu, koja se ?eli prikazati.
Ukoliko se stranica nazove index.html sama ?e se u?itati ?im se u web browseru
upi?e osnovni URL server (npr. http://ime_racunara.domena), a ako je ime druga?ije,
morati ?ete joj pristupati sa http://ime_racunara.domena/ime_stranice.html .
Ukoliko se ista stranica nalazi u nekom poddirektorijumu potrebno je upisati
celu stazu do direktorijuma ?to mo?e biti nezgodno ako imate vi?e stranica i
slo?eniju strukturu direktorija u kojemu se nalaze va?e stranice.
U tu svrhu koriste se tzv. alias opcije, koje omogu?uju da se URL prevede u
neku drugu lokaciju na disku bez da klijent to zna. Npr.:
alias /icons/
/usr/local/apache/icons
?e imati za posledicu
da svaki URL koji po?inje sa /icons/ Apache automatski zamjenjuje sa /usr/local/apache/icons
prije nego ?to potra?i zadanu datoteku.
Ovde bi tako?e trebalo navesti opciju koja mo?e biti vrlo korisna u slu?ajevima
kada se ?eli ve?oj grupi korisnika omogu?iti objavljivanje vlastitih stranica
na jednom serveru.
Naime, postavljanjem UserDir opcije u httpd.conf datoteci, svakom korisniku
pridru?uje se unutar njegovog home direktorijuma njegov osobni web direktorijum
public_html u kojem mo?e objavljivati svoje vlastite web stranice.
UserDir public_html
Podrazumeva se
da korisnik poseduje valjano korisni?ko ime na tom ra?unaru.
Nakon toga tim stranicama mo?e se pristupiti vrlo jednostavno. Potrebno je u
browser program upisati URL adresu oblika:
http://ime_racunara.domena/~korisni?ko_ime/ime_stranice
?to ?e rezultovati
u?itavanjem ?eljene stranice iz direktorijuma:
/home/ime_korisnika/public_html
6.Autorizacija i kontrola pristupa
U dana?nje vreme
privatnost podataka vrlo je va?na velikom broju korisnika, te je vrlo bitno
da odre?ene informacije budu dostupne samo onima kojima su namenjene. Upravo
zbog toga u ovom poglavlju biti ?e opisani postupci za?tite podataka pomo?u
Apache web servera. Naime, Apache omogu?uje zabranu gledanja sadr?aja odre?enih
direktorija svima osim posebnim korisnicima ili grupi osoba koje znaju pristupiti.
Ovde ?e biti opisan postupak postavljanja osnovne autorizacije za odre?eni direktorijum
ili web stranicu.
Kao ?to samo ime govori osnovna autorizacija je najjednostavnija metoda postavljanja
za?tite, te se vrlo ?esto koristi. Princip rada osnovne autorizacije vrlo je
jednostavan i zasniva na otvaranju prozora u koji se upisuje korisni?ko ime
i lozinka kada se u web browseru pozove za?ti?ena stranica. Ukoliko korisnik
zna to?no korisni?ko ime i lozinku mo?e nastaviti sa u?itavanjem stranice, dok
mu u suprotnom Apache server to ne dozvoljava.
6.1 Konfiguracija
autorizacije
Postoje dva na?ina
na koji se ovakva autorizacija mo?e ostvariti. Ako administrator postavlja autorizaciju,
on se mo?e poslu?iti upisivanjem postavki unutar httpd.conf datoteke, dok ostali
korisnici uglavnom nemaju dovoljna sistemska ovlastenja da bi to mogli u?initi.
Zato za ostale korisnike postoji mogu?nost stvaranja .htaccess datoteke unutar
bilo kojeg direktorijuma koji se ?eli za?tititi.
Unutar .htaccess datoteke mogu se staviti i druge stavke koje nisu vezane za
autorizaciju ve? za konfiguraciju pona?anja Apache servera, no ne sve (npr.
ServerName). Najve?a prednost u odnosu na pisanje stavki unutar httpd.conf je
?to se nakon pisanja stavki u .htaccess datoteku Apache ne treba restartovati
da bi novoupisane postavke vredele. Treba napomenuti da se stavke upisane u
.htaccess datoteku odnose na direktorijum u kojem se ona nalazi, te sve poddirektorijume.
Naime Apache prilikom ulaska u direktorijum, prije nego ?to po?alje podatke
web browseru, tra?i datoteku .htaccess, te u slu?aju da je na?e sledi postavke
upisane u njoj, dok u suprotnom sledi postavke upisane u httpd.conf. Da bi ovakav
na?in ispravno funkcionirao u httpd.conf datoteci ne smije postojati linija:
AllowOverride
None
Navedenu liniju
potrebno je izbrisati ili na nju postaviti komentar tako da postane neva?e?a
U slu?aju da navedena linija postoji, Apache ne?e tra?i datoteku .htaccess,
te sve ?to je upisano u .htaccess ne?e vrediti pa stoga ni autorizacija ne?e
raditi.
Pri postavljanju autorizacije prvi korak je stvaranje datoteke u kojoj ?e biti
upisani korisnici koji imaju dozvolu pristupa za?ti?enim dokumentima. Potrebno
je stvoriti direktorij /usr/local/apache/passwd u kojem ?e biti pohranjena passwords
datoteka.
# mkdir /usr/local/apache/passwd
Stvaranje nove
datoteke izvodi se naredbom htpasswd. Pozicionirati se u direktorij /usr/local/apache/bin,
i ukucati:
# ./htpasswd -c
/usr/local/apache/passwd/passwords ime_korisnika
nakon ?ega ?emo
biti upitani za lozinku i potvrdu lozike. Nakon pravilnog unosa lozinke stvorena
je datoteka passwords u kojoj su upisani ime korisnika i lozinka u enkriptiranom
obliku. Potrebno je napomenuti da opcija -c zna?i stvaranje datoteke ukoliko
datoteka ne postoji. Ukoliko datoteka ve? postoji, postoje?a datoteka bici ?e
prebrisana. Za dodavanje novog korisnika ponoviti opisani postupak, ali bez
opcije -c. Datoteku sa pohranjenim korisnicima potrebno je za?tititi od neovla?tenog
pristupa. Ukoliko je Apache web server konfiguriran da se pokre?e kao korisnik
nobody i grupa nogroup po?eljno je ukucati:
# chown nobody.nogroup
/usr/local/apache/passwd/passwords
# chmod 640 /usr/local/apache/passwd/passwords
?ime je dozvoljen
pristup samo korisniku nobody i grupi nogroup, tj. Apache web serveru.
Slede?i korak
je konfigurisanje Apache server da koristi passwords datoteku. Konfiguriranje
se izvodi slede?im postavkama:
AuthType Tip autorizacije
koja se koristi (u ovom slu?aju jovic)
AuthName Ime autorizacije (ispisuje se na prozoru koji se pojavljuje)
AuthUserFile Lokacija datoteke sa lozinkama korisnika
AuthGroupFile Lokacija datoteke sa lozinkama grupe, ako se koristi
Require Zahtevi koji moraju biti ispunjeni da bi se zadovoljila autorizacija
Kako je ve? ranije
re?eno ove postavke mogu se smestiti u datoteku .htaccess ili u httpd.conf pod
sekcijom .
Navescemo primer
postavljanja osnovne autorizacije za direktorijum
/usr/local/apache/htdocs/privatno,
upisivanjem u httpd.conf.
Primjer:
AuthType jovic
AuthName "Samo za pozvane"
AuthUserFile /usr/local/apache/passwd/passwords
Require user milanov
U navedenom primjeru koristi se osnovna autorizacija, ime autorizacije je "Samo
za pozvane". Datoteka /usr/local/apache/passwd/passwords bice kori?tena
za proveru identiteta korisnika, te samo korisnik s imenom milanov mo?e videti
sadr?aj za?ti?enog direktorijum, naravno, ako zna ispravnu lozinku.
Drugi na?in ostvarivanja primera izvodi se stvaranjem datoteke .htaccess u direktorijumu
koji se ?eli za?tititi upisivanjem svih reda iz primera osim reda koji sadr?e
u sebi. Potrebno je postaviti odgovaraju?e ovlascenja za pristup .htaccess datoteci
i web stranicama koje Apache treba prikazivati tako da Apache server mo?e pro?itati
njihov sadr?aj.
Primjer:
AuthType jovic
AuthName "Samo za pozvane"
AuthUserFile /usr/local/apache/passwd/passwords
Require user milanov
Mogu?e je postaviti
da pristup bude odobren svim korisnicima upisanim u datoteku passwords stavkom
Require valid-user. Ako se u direktorijumu nalazi datoteka index.html tada ?e
ona biti u?itana nakon odobrene autorizacije, tj. web stranica se mo?e za?tititi
ako se postavi u za?ti?eni direktorijum.
U praksi je ?esto potrebno omogu?iti pristup vi?e osoba nekom direktorijumu,i
u tu svrhu mo?e definisati grupa. Ovakav na?in postavljanja pristupa pogodan
je jer se bez promene konfiguraciskih datoteka Apache server mo?e nekoj osobi
dozvoliti ili oduzeti pristup tako da se ta osoba postavi ili izbri?e iz grupe
kojoj je pristup dozvoljen. Grupa se postavlja stvaranjem datoteke /usr/local/apache/passwd/groups
(mo?e biti i negde drugde), i upisivanjem u nju:
Ime_grupe: ime_korisnika1 ime_korisnika2 ime_korisnika3
Korisnici tako?e
moraju biti upisani u datoteku passwords, to je potrebno jo? dodati u httpd.conf
ili u .htaccess linije
AuthGroupFile
/usr/local/apache/passwd/groups
Require group Ime_grupe
Ovome je zavr?en
opis postavljanja osnovne autorizacije. Postoje jo? dve vrste autorizacije koje
Apache podr?ava: tzv. digest autorizacija i autorizacija pomo?u baze podataka.
Takve autorizacije se koriste u iznimno sigurnim sastavima, to ne radi na svim
web browserima i stoga ovde ne?e biti opisani.
7.CGI i PHP aplikacije
U ovom delu ukratko
su opisani osnovni konfiguracijski postupci, vezani za omogu?avanje pokretanja
i izvo?enja CGI (engl. Common Gateway Interface), te PHP aplikacija na strani
Apache web servera.
Naime, spomenute aplikacije u dana?nje vreme predstavljaju neizostavni element
bilo kojeg web server koji se namerava koristiti za obavljanje ne?to ozbiljnijih
i slo?enijih zada?a, te ?e se pre ili kasnije ukazati potreba za omogu?avanjem
ovih servisa.
Ovdje su izneseni osnovni postupci koji bi trebali omogu?iti kori?tenje spomenutih
aplikacija.
7.1 CGI
CGI (engl. Common
Gateway Interface) je prili?no star, ali danas jo? uvek dosta ?esto kori?ten
alat, koji omogu?uje razmenu informacija izme?u korisnika i web servera.
CGI skripte mogu biti pisane u raznim programskim jezicima (naj?e??e Perl ili
C), i kao takve predstavljaju aplikacije koje se na zahtev pretra?iva?a, odnosno
klijenta izvr?avaju na strani web server.
Tipi?ni primer komunikacije izme?u klijenta i web servere, je slanje korisni?kih
podataka serveru putem web formi ugra?enih u HTML stranicu, na temelju kojih
?e CGI skripta pokrenuta na serveru obaviti za nju predvi?ene zadatke, i rezultat
vratiti klijentu.
Ovde se ne?e razmatrati kako se i na koji na?in CGI skripte pi?u, niti kako
se one povezuju sa HTML dokumentom, budu?i da to izlazi van tematskog podru?ja
ovog dokumenta.
Biti ?e izneseni koraci koje je potrebno poduzeti, kako bi se na web serveru
omogu?ilo uspe?no pokretanje i izvo?enje napisanih CGI skripti. Potrebno je
spomenuti da inicijalna konfiguracija Apache web servera ne dozvoljava pokretanje
CGI skripti, i da je u tu svrhu potrebno modificirati httpd.conf konfiguracijsku
datoteku ukoliko se to ?eli omogu?iti.
Na samom po?etku potrebno je definisati direktorijum u kojem ?e se pohranjivati
CGI skripte koje se ?ele izvoditi. Taj direktorijum mo?e se nalaziti bilo gdje
unutar vaseg sustava, neovisno o DocumentRoot konfiguracijskom parametru Apache
web servera.
Nakon ?to je odre?en direktorijum u kojem ?e se pohranjivati skripte, potrebno
je u httpd.conf datoteci dodati deo kojim ?e se Apache server obavestiti da
se u tom direktoriju nalaze CGI izvr?ni programi, koje u slu?aju zahtjeva za
tom URL adresom treba tako i tretirati.
Primjer:
AllowOverride
None
Options ExecCGI
SetHandler cgi-script
Ovim delom koda Apache web server ?e znati da se unutar /var/www/cgi-bin/ direktorijuma
nalaze CGI skripte, koje treba tretirati kao izvr?ne programe ukoliko se javi
upit za URL adresom koja upu?uje na navedeni direktorijum.
Klju?ni parametar u ovom dielu konfiguracije je Options ExecCGI parametar, kojim
se dozvoljava pokretanje i izvo?enje CGI skripti pohranjenih u direktorijumu
na koji se ovaj deo konfiguracije odnosi.
No, uz ovakvu konfiguraciju Apache web servera, parametru ACTION unutar HTML
Uobi?ajna je praksa da se u konfiguraciji Apache web servera definise alias
ime, kojim ?e se omogu?iti intuitivnije pristupanje CGI skriptama, pogotovo
ukoliko se one nalaze negde duboko unutar sistema.
U tu svrhu potrebno je dodati slede?i red:
ScriptAlias /cgi-bin/ "/usr/local/apache/www/cgi-bin/"
U ovom slu?aju
?e Apache web server svaki zahtjev za URL adresom oblika http://www.ime_domene/cgi-bin/ime_skripte
interpretirati kao zahtjev za pokretanjem CGI skripte, koju ?e locirati unutar
/usr/local/apache/www/cgi-bin alias direktorija.
Napomena: Svakoj
CGI skripti kojoj se ?eli omogu?iti pokretanje potrebno je chmod naredbom postaviti
ovlascenja izvo?enja (execute bit). Naime, budu?i da je web server iz sigurnosnih
razloga naj?e??e pokrenut pod nobody korisni?kim imenom, potrebno je execute
zastavice postaviti na na?in kojim ?e se web serveru omogu?iti pokretanje ?eljene
CGI skripte (npr. chmod 755 ime_skripte, ?e sigurno zadovoljiti).
7.2 PHP
PHP skriptni jezik
trenutno je jedan od najpopularnijih i naj?e??e kori?tenih skriptnih jezika
u svetu web programiranja. Svoju popularnost stekao je svojom jednostavno??u,
kvalitetom, te brojnim mogu?nostima koja omogu?uju jednostavniji, a ujedno i
kvalitetniji dizajn web stranica.
Ukoliko se bolje posmatra sintaksa, odnosno struktura skripti napisanih u PHP-u,
mnogi ?e zaklju?iti kako je PHP jezik neka vrsta kombinacije izme?u Perl-a,
C-a, i Java programskog jezika.
Tako se u PHP-u mogu na?i elementi objektno-orijentiranog programiranja preuzeti
iz Jave, odnosno C++-a, a tako?e se mo?e prona?i i niz drugih vrlo korisnih
elementa nasle?enih iz Perl programskog jezika, budu?i da se on pokazao vrlo
mo?nim alatom kada se govori o web programiranju.
No, posebna snaga PHP skriptnog jezika dolazi do izra?aja u situacijama kada
se javlja potreba za integracijom sa bazama podataka, budu?i da PHP poseduje
vrlo kvalitetno programsko okruzenje dizajnirano upravo u tu svrhu.
Kako bi se omogu?ilo pokretanje i izvo?enje PHP skripti na Apache web serveru,
prvi korak koji je potrebno preduzeti je nabavljanje samog PHP programskog paketa,
koji se mo?e prona?i na www.php.net. Preporu?uje se dobavljanje ?to novije verzije
ovog programskog paketa, kako bi se osigurala potpuna kompatibilnost ovog programa
sa drugim delovima sistema (SQL, Apache ?).
Osim samog PHP programskog paketa, na istoj stranici mogu se prona?i i brojne
druge korisne informacije vezane za PHP skriptni jezik,kao takva se preporu?uje
svima onima koji se na bilo koji na?in ?ele upoznati sa PHP svetom programiranja.
PHP programski paket mo?e se izme?u ostalih dobaviti i u tar.gz formatu, te
je u tom slu?aju postupak instalacije sli?an kao i kod ostalih tar.gz paketa.
Otpakovanje arhive
mo?e se obaviti u jednom koraku naredbom:
# tar -xzvf php.x.x.x.tar.gz
Nakon toga potrebno
je u?i u novonastali php.x.x.x direktorijum, pokrenuti konfiguracijsku skriptu.
Potrebno je obratiti pa?nju na parametre koje se proslje?uju toj skripti, budu?i
da o njima ovisi kako ?e se PHP slagati sa ostalim komponentama sistema. Npr.:
#./configure --with-apache=./apache_X.X.X
--with-mysql=/usr/local/mysql
naredba ?e pokrenuti
konfiguraciju sa podr?kom za integraciju sa MySQL bazom podataka, te Apache
web server. Nije isklju?ena mogu?nost da ?e PHP programski paket jednako dobro
raditi pokretanjem ./configure skripte bez parametara, no gore opisani postupak
smatra se regularnim i sigurnim.
Naredbom ./configure --help mogu se izlistati sve opcije koje se mogu proslediti
./configure skripti za konfiguraciju PHP programskog modula, po?eljno je analizirati
kako bi se na taj na?in uvidele sve mogu?nosti konfiguracije ovog programa.
Nakon toga sledi pokretanje make programa naredbama:
# make
# make install
?to ?e ukoliko
je sve uspe?no pro?lo rezultirati instaliranim PHP programskim paketom.
Ukoliko se u ovom koraku nai?e na bilo kakve pote?ko?e, preporu?uje se pregledavanje
FAQ pitanja na www.php.net portalu.
Sljede?i korak je konfiguracija samog Apache web servera, kako bi se na taj
na?in omogu?ilo pokretanje i izvo?enje PHP skripti. U tu svrhu potrebno je dodati
slijede?e linije u Apache httpd.conf konfiguracijsku datoteku:
AddType application/x-httpd-php3
.php3
AddType application/x-httpd-php .php
ScriptAlias /php3/ "/usr/local/bin/"
Action application/x-httpd-php3 "/php3/php/"
?ime ?e se omogu?iti
izvo?enje PHP skripti instaliranih racunaru.
Ovim linijama Apache web serveru omogu?uje se prepoznavanje i izvr?avanje skripti
u PHP jeziku. Definise se tip aplikacije, lokacija gdje ?e iste biti smje?tene
(/usr/local/bin) te interpreter koji ?e se pozivati pri njihovom izvr?avanju.
8.Apache 2.0
U daljnjem tekstu
navedene su samo razlike u odnosu na verziju 1.3, te sve ?to nije posebno navedeno,
a navedeno je u opisu verzije 1.3, tako?e vredi i za verziju 2.0.
8.1 Novosti u
odnosu na Apache 1.3
Ovde su navedene
najva?nije novosti o radu i instalaciji nove verzije servera u odnosu na verziju
1.3.
* Novi instalaciski
program zasnovan je na autoconf-u i libtool-u. Ovo ?ini instalaciju novog Apache-a
vi?e nalik na instalacije ostalih programa
* Podr?an je ve?i broj protokola nego u prosloj verziji.
* Apache 2.0 je br?i, bolji i stabilniji u odnosu na Apache 1.3 na BeOS, OS/2
i Windows platformama
* Mnogo modula iz starije verzije je uklonjeno, te se vi?e poslova obavlja automatski,
kori?tenjem novih vi?e-procesnih modula
* Poruke gre?aka u radu Apache web servera prevedene su na vi?e jezika. Administratoru
je omogu?eno da sam odredi izgled takvih poruka
* Mnogo zbunjuju?ih stavki izba?eno je iz upotrebe u httpd.conf datoteci.
* Dodani su brojni novi moduli
8.2 Instalacija
Apache servera 2.0
Ovde opisani postupci
instalacije Apache web servera odnose se na instalaciju iz tar.gz datoteke,
budu?i da se nova verzija za sada jo? ne isporu?uje u rpm paketima, niti u sklopu
gotovih distribucija.
Prije po?etka instalacije nove verzije Apache web servera potrebno je pogledati
zahteve koje name?e nova verzija:
* Potrebno je
barem 50 MB slobodnog prostora na lokalnom tvrdom disku za pohranu privremenih
datoteka koje se koriste prilikom instalacije. Nakon instalacije Apache zauzima
oko 10 MB slobodnog prostora.
* ANSI - C kompajler - GNU C kompajler (gcc)
* Potrebno je postaviti tacno sistemsko vrijeme u sistemu jer neki elementi
Apache web servera ispisuju to vrijeme prilikom prikaza web stranica
* Po?eljno je imati instaliran Perl 5, ali nije obvezno.
Nakon provere
navedenih zahteva, pozicionirati se u direktorijum u kojem se nalazi httpd-2_0_NN.tar.gz,
gde NN ozna?ava trenutnu verziju Apache 2.0 web servera, i upisati:
# tar -xzvf httpd-2_0_NN.tar.gz
Nakon ?to je datoteka
otpakovana u?emo u novostvoreni direktorijum, i mo?emo pristupiti konfiguraciji
programa. Konfiguracija programa izvodi se kucanjem:
# ./configure
Ako se ne navedu
nikakvi parametri Apache ?e biti instaliran u /usr/local/apache2. Ukoliko se
instalacija ?eli obaviti u neki drugi direktorij i sa vi?e modula potrebno je
configure skriptu pozvati s parametrima:
# ./configure
--prefix=/ime_direktorija -enable-ime_modula=shared
Nakon uspe?nog
izvo?enja configure skripte (u slu?aju da nema prijavljenih gre?aka) ukucati:
# make
Ova faza instalacije
mo?e potrajati neko vrijeme, zavisno o brzini ra?unara.
Nakon toga:
# make install
Time je zavr?ena
instalacija.
Ukoliko nije instalirana
stara verzija Apache servera ili je deinstalirana, korisno je prekopirati man
stranice, budu?i da to instalacija ne obavi automatski. Ukucati:
# cp -R /usr/local/apache2/man/*
/usr/local/man
Treba jo? napomenuti
da se novo-instalirana verzija ne?e automatski pokretati prilikom podizanja
sistema, ukoliko to posebno ne navedemo.
8.3 Konfiguracija
Apache 2.0 poslu?itelja
Konfiguracija
Apache 2.0 servera je vrlo sli?na konfiguraciji verzije 1.3, ovde navedene razlike
vezane za konfiguraciju u odnosu na raniju verziju.
Izba?ene su stavke Port i BindAddress,umjesto njih koristi se Listen.
ServerName odre?uje ime adrese na koje se Apache odaziva i broj porta:
ServerName www.ime_domene.com:port
stavka ServerType
vi?e ne postoji, ni mogu?nost rada unutar inet deamona.
stavke AgentLog, RefererLog i RefererIgnore izba?ene su, no Agent i Referer
log jo? su uvek mogu?i kori?tenjem CustomLog postavke.
stavke AddModule i ClearModuleList koje su bile potrebne radi odgovaraju?eg
redosleda u?itavanja modula izba?ene su iz upotrebe, budu?i da novi Apache 2.0
API omogu?uje modulima da sami odrede redosled izvo?enja, eliminiraju?i potrebu
za navedenim stavkama.
8.4 Pokretanje
i zaustavljanje Apache 2.0
Pre pokretanja
nove verzije Apache web servera potrebno je prvo isklju?iti staru verziju ukoliko
je aktivna. Ukoliko je starija verzija Apache servera bila instalirana zajedno
sa distribucijom za isklju?ivanje je dovoljno ukucati:
# apachectl stop
Ako je starija
verzija bila naknadno instalirana u direktorijum /usr/local/apache, ukucati:
# /usr/local/apache/bin/apachectl
stop
Uobi?ajni na?in
pokretanja nove verzije Apache servera izvodi se utipkavanjem naredbe:
# /usr/local/apache2/bin/apachectl
start
a zaustavljanje:
# /usr/local/apache2/bin/apachectl
stop
Ostale bitne napomene
u vezi pokretanja i zaustavljanja tako?e su jednake kao u verziji 1.3. Jedina
razlika je u pokretanju prilikom podizanja operativnog sistema. Da bi postavili
automatsko pokretanje prilikom podizanja sistema potrebno je prvo isklju?iti
pokretanje stare verzije Apache servera prilikom podizanja sistema (ukoliko
je kori?ten), jer u isto vreme nije mogu?e pokrenuti dve verzije servera na
istom ra?unaru. Po?eljno je staru verziju deinstalirati.
Korisno je prvo prekopirati skriptu pomo?u koje se pokre?e Apache server, u
direktorijum /usr/local/bin, naredbom:
# cp /usr/local/apache2/bin/apachectl
/usr/local/bin
Nakon toga potrebno
je napraviti simboli?ki link na pokreta?ku skriptu u direktoriju /etc/rcN.d,
gdje N ozna?ava broj runlevela koji se uobi?ajeno izvodi prilikom podizanja
sustava. Simboli?ki link mora imati ime SXXapachectl, gdje XX ozna?ava broj
koji govori koji ?e se po redu Apache pokrenuti u tom runlevelu. Umjesto XX
potrebno je upisati jedan dvocifreni broj koji je slobodan (izlistati direktorij
/etc/rcN.d, te potra?iti slobodan broj). Ukoliko ne znate koji runlevel odabrati,
najbolje je odabrati onaj koji se trenutno izvr?ava. To se mo?e saznati naredbom
runlevel.
Izrada simboli?kog linka izvodi se naredbom:
# ln -s /usr/local/bin/apachectl
/etc/rcN.d/SXXapachectl
Slede?i put pri
podizanju sistema Apache 2.0 web server biti ?e automatski pokrenut.
Da bi omogu?ili
automatsko zaustavljanje Apache web servera prilikom restartan ili isklju?ivanja
ra?unara potrebno je napraviti simboli?ke linkove u direktorijima /etc/rc0.d
i /etc/rc6.d. Za izradu simboli?kih linkova potrebno je upisati:
# ln -s /usr/local/bin/apachectl
/etc/rc0.d/KXXapachectl
# ln -s /usr/local/bin/apachectl /etc/rc6.d/KXXapachectl
gdje XX ozna?ava
slobodan dvocifreni broj.
9.Zaklju?ak
S obzirom na ?injenicu
da je Apache jedan od najkvalitetnijih i najra?irenijih web servera u svijetu,
on kao takav predstavlja jedini logi?an izbor pri odabiru web servera za sve
Linux distribucije. Osim njegovog kvaliteta koji je potvr?ena od velikog broja
web administratora, Apache je ujedno i besplatan ?to je mo?da ?ak i najve?a
prednost ovog programa, budu?i da su cene ostalih web servera dostupnih na tr?i?tu
prili?no velike.
|