Download as pdf or txt
Download as pdf or txt
You are on page 1of 20

Apache web-poslužitelj

1.Uvod

Apache web poslužitelj je program kojemu je osnovna zadaća prosljeđivanje


web sadržaja web pregledniku, kada se u njemu upiše adresa računala na koju
se Apache odaziva.
Usprkos nastojanjima velikih svjetskih tvrtki poput Microsofta ili Netscapea da
mu preotmu dominaciju na tržištu, Apache je još uvijek dominantan u pogledu
korištenih web poslužitelja, a izgleda da će i tako ostati još duže vrijeme.
Istraživanja pokazuju da između 50 i 60% svih web poslužitelja na svijetu
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 mjesto izbora većine web administratora. Ovaj dokument
nadopuna je na dokument o Apache-web poslužitelju koji je priložen u
dokumentaciji o mrežnim poslužiteljima. Dokument "Upute za rad s
poslužiteljima", rev.1.0, elaborat 195/01-1, LSS-FER_ZESOI,
http://pingvin.carnet.hr/linux_u_obrazovanju/projekt/druga_etapa/posluzitelji_s
U ovom poglavlju opisani su osnovni postupci vezani za instalaciju,
konfiguraciju, te administraciju najpopularnijeg i najčešće korištenog web
poslužitelja danas, Apache web poslužitelja 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 informiranje o Apache poslužitelju na njegovim web stranicama
(http://www.apache.org).

2.Instalacija Apache poslužitelja 1.3

Instalacija Apache web poslužitelja u Debian i Mandrake distribucijama ista je


kao i za sve ostale pakete koji u njima dolaze, putem Dselect i Software
Manager programskih paketa (detaljnije informacije mogu se pronaći u
dokumentaciji "Osnove korištenja Linux i Unix operativnih sustava" u
poglavljima 2.2.1 i 3.5). Navedena poglavlja dostupna su ne slijedećim URL
adresama:
http://pingvin.carnet.hr/linux_u_obrazovanju/projekt
/prva_etapa/linux_unix_operativni_sustavi_debian.html#Heading510
http://pingvin.carnet.hr/linux_u_obrazovanju/projekt
/prva_etapa/linux_unix_operativni_sustavi_mandrake.html#Heading691 U
ovim distribucijama Apache će se instalirati u direktorij /etc/httpd umjesto
uobičajenog direktorija /usr/local/apache.
Kod FreeBSD operativnog sustava preporučuje se instalirati Apache poslužitelj iz
tar.gz paketa koji se nalazi na CD-u sa besplatnim softverom. Nakon
otpakiranja Apache poslužitelja iz tar.gz arhive, instalacija se pokreće pomoću
skripte:
# ./install-bindist.sh

Skripta se nalazi u direktoriju koji je nastao otpakiravanjem tar.gz paketa. Po


defaultu poslužitelj se instalira u direktorij /usr/local/apache. Ako se paket
želi instalirati u neki drugi direktorij potrebno je pokrenuti instalacijsku skriptu
na sljedeći način:

# ./install-bindist.sh /ime_direktorija

Nakon instalacije paket je već podešen da se pokreće prilikom podizanja


sustava.
Apache je moguće instalirati više puta na istom računalu.
To se postiže tako da pokrenemo instalacijsku skriptu dva puta ali sa različitim
direktorijima u koje želimo instalirati poslužitelj 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 poslužitelj
sa ograničenim pristupom koji ćete na ovaj način odvojiti od glavnog
poslužitelja.
Korištenje drugog poslužitelja je korisno i ako želite testirati noviju inačicu
Apache-a prije nego ju prebacite da bude glavni poslužitelj.

3.Konfiguracija

Postoji više načina kako konfigurirati Apache poslužitelj. Najbolji način je


konfiguriranje upisivanjem postavki u datoteku httpd.conf, dok postoji i
jednostavniji način konfiguriranja pomoću programa Comanche. Apache se vrlo
jednostavno može konfigurirati i programom linuxconf koji se može pokrenuti
i u tekstualnom modu, ako nemate instalirano grafičko sučelje. Konfiguracija
Apache-a u linuxconf-u nalazi se pod Networking -> Server Tasks ->
Apache Web Server.

3.1 Konfiguracija upisivanjem postavki u httpd.conf datoteku

Konfiguracijska datoteka za Apache poslužitelj zove se httpd.conf i nalazi se


u /etc/httpd/conf direktoriju.
Sadržaj httpd.conf konfiguracijske datoteke ključan je element kojim se definira
ponašanje instaliranog Apache web poslužitelja.
S obzirom na kompleksnost, te vrlo širok spektar mogućnosti koje nudi ovaj
poslužitelj adekvatno tome postoji i mnoštvo konfiguracijskih parametara i
opcija koje se mogu naći u httpd.conf datoteci. Ovdje su iznesene samo one
najnužnije koje je potrebno podesiti kako bi se omogućila osnovna
funkcionalnost ovog poslužitelja.
Treba napomenuti da su te opcije već inicijalno postavljene u httpd.conf
datoteci nakon uspješ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 poslužitelja.
Prije nego što se krene sa konfiguracijom potrebno je odlučiti koje ime će imati
poslužitelj, na koje mrežno sučelje će primati zahtjeve, gdje će se nalaziti
konfiguracijske i log datoteke, te u kojem direktoriju će biti smješteni
dokumenti web stranice.
ServerName je ime na koje će poslužitelj reagirati kada se u pretraživačkom
programu upiše njegova URL adresa (www.ime_domene.hr).
BindAddress je konfiguracijski parametar koji definira IP adresu na kojoj
poslužitelj prima HTTP zahtjeve. Ovo zapravo i nije obavezan dio konfiguracije
poslužitelja, nego mrežne konfiguracije računala na kojem se poslužitelj nalazi.
Ovim parametrom osiguravamo to da klijent koji pristupa poslužitelju preko
imena ispravno poveže ime sa IP adresom. Inicijalna vrijednost ovog parametra
je

BindAddress *

što znači da poslužitelj sluša sva mrežna sučelja na računalu.


Ukoliko se želi da poslužitelj sluša izričito određenu adresu napisat će se npr.:

BindAddress 192.168.1.1

Ako želimo da poslužitelj sluša samo klijente sa vlastitog računala 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
poslužitelj slušati koristi se parametar Listen.
Port određuje na kojem portu poslužitelj sluša zahtjeve (inicijalna vrijednost je
80). Umjesto kombinacije parametara Port i BindAddress poželjno je koristiti
Listen opciju.

Listen se koristi u slučajevima kada se želi definirati više IP adresa i port-ova


za isti poslužitelj. Tako će npr. linije:

Listen 192.168.1.1:80
Listen 192.168.1.1:443
Listen 192.168.1.2:80

podesiti poslužitelj 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 poslužitelja. Apache može raditi u dva moda,
samostalno

ServerType standalone

ili unutar inetd deamon-a.

ServerType inetd
U samostalnom modu rada poslužitelj sam upravlja svojim mrežnim
konekcijama i sluša portove koji su mu definirani.
Ovo je uobičajen način rada Apache poslužitelja i preporučuje se takav način
rada. Ako poslužitelj radi unutar inetd deamon-a, 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 neučinkovit i rijetko
se koristi, pa ga zato ovdje nećemo pobliže opisivati.

User i Group konfiguriraju poslužitelj da radi pod određenim korisnikom i


grupom. Kada je Apache pokrenut pod root-om (npr. kod podizanja sustava)
on pokreće više podprocesa (child processes) i ako su User i Group podešeni,
podprocesi gube root status i poprimaju identitet koji smo mi podesili.
Obično se postavlja vrijednost nobody za korisnika i nogroup za grupu. Na taj
način poslužitelj je puno sigurniji i otporniji na napade i ako namjeravate
pokretati Apache kao root trebali bi podesiti ove parametre.

ServerAdmin definira e-mail adresu administratora. Apache koristi ovu adresu


da bi prijavio greške u radu. Adresa nije ograničena na domenu u kojoj
poslužitelj radi, što znači da je moguće navesti bilo koju e-mail adresu.

ServerRoot definira direktorij u kojem se nalaze sve važne datoteke potrebne


za rad poslužitelja. Po defaultu to je /usr/local/apache direktorij, a kod
Debian i Mandrake distribucija to je /etc/httpd direktorij.

ErrorLog definira ime datoteke u koju se spremaju poruke o greškama u radu.


Apache podržava više vrsta log-ova od kojih su najuobičajeniji access log,
referer log i error log. Preporučuje se definiranje 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, te kontroliranje pokušaja pristupa
ovom poslužitelju. Uobičajene vrijednosti 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 direktorij u kojem se nalaze web stranice vašeg


poslužitelja.
Uobičajeno poslužitelj traži direktorij /htdocs unutar direktorija definiranog u
ServerRoot. Ako želimo promjeniti ovu postavku, možemo navesti ili relativnu
stazu (ako je direktorij unutar server root-a) ili apsolutnu stazu ako želimo
neki direktorij izvan glavnog Apache direktorija. Sasvim je uobičajeno da se
DocumentRoot stavi negdje izvan ServerRoot-a zato da se web stranice odvoje
od konfiguracijskih datoteka. Default postavka je /usr/local/apache/htdocs,
a na Debian i Mandrake računalima /var/www/.

Ovo su osnovni parametri za konfiguraciju Apache poslužitelja i dovoljni su za


normalan rad. Ostali parametri u httpd.conf datoteci uglavnom su dobro
komentirani i po defaultu su postavljeni na odgovarajuće vrijednosti.

3.2 Konfiguracija pomoću programa Comanche

Naprednija i jednostavnija mogućnost konfiguracije Apache-a u grafičkom


sučelju 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 otpakirati sa
naredbom:

# tar -xzvf ime_paketa

Nakon toga potrebno je ući u direktorij comanche3-0b4, te tamo pokrenuti


datoteku comanche3.0b4.

# ./comanche3.0b4 &

Nakon pokretanja datoteke otvara se mali prozor u grafičkom sučelju 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 poslužitelja, 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 poslužitelja na istom računalu.

Slika 3.1 Konfiguracija Comanche grafičkog okružja


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 direktorij u kojemu je instaliran vaš poslužitelj, a to je
obično /usr/local/apache (ukoliko nije navedeno drugačije tijekom postupka
instalacije).
Kada je podešena lokacija vašeg Apache poslužitelja, otvoriti će se glavni prozor
Comanche-a (Slika 3.2).

Slika 3.2 Glavni prozor Comanche grafičkog okružja

Comanche je vrlo kompleksan alat u kojemu je na jednom mjestu moguće


upravljati instaliranim Apache modulima, te čitati log i conf datoteke na vrlo
lagan način.
Ukoliko se naknadno želi konfigurirati programski paket Comanche tako da
putem njega možemo administrirati neki drugi postojeći Apache poslužitelj, to
je moguće postići na slijedeći način: Odaberemo Apache Web Server -> New
Apache Installation opciju, nakon čega slijedi klasičan postupak dodavanja
poslužitelja kojeg želimo administrirati.
Da bi se izbjeglo 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 direktoriji u kojima se nalazi
datoteka pomoću koje se pokreće Apache. Primjerice, kod Debian distribucije
taj put je /usr/sbin direktorij, u kojem se nalazi apache datoteka kojom će se
pokrenuti ovaj poslužitelj, dok se kod Mandrake distribucije u istom direktoriju
nalazi httpd datoteka, koja će obaviti isti posao.
Ukoliko se ne koristi inicijalna konfiguracijska datoteku ili je ista naknadno
premještena u drugi direktorij, Apache je potrebno pokrenuti sa opcijom -f npr.:

# /usr/local/apache/bin/httpd -f /home/web/httpd-test.conf

Pokretanje Apache web poslužitelja izvodi sa naredbom:

# /usr/local/apache/bin/apachectl start

Ako se želi provjeriti da li je poslužitelj 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 savjetovati ć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 poslužitelj ne može pokrenuti.
Čak i ako se poslužitelj 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.


Poslužitelj se može iznova pokrenuti sa kill -HUP <pid > gdje je <pid> 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
generira 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 poslužitelja 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 poslužitelja 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 vrijeme port na
koji Apache 'sluša' neće se gasiti tako da će se sačuvati rep (queue) zahtjeva 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
poslužitelj prima mnogo zahtjeva.
Server se zaustavlja sa:

# kill -TERM <pid>

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 direktoriju za pohranjivanje web stranica Apache će prilikom


instalacije generiratii svoju vlastitu web stranicu i najbolji način da se provjeri
da li sve ispravno radi je da se u web pretraživaču upiše
http://ime_stroja.domena/, nakon čega bi se spomenuta stranica trebala
učitati. Umjesto 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
pretraživaču upiše osnovni URL poslužitelja (npr. http://ime_stroja.domena),
a ako je ime drugačije, morati ćete joj pristupati sa
http://ime_stroja.domena/ime_stranice.html.
Ukoliko se ista stranica nalazi u nekom poddirektoriju potrebno je upisati cijelu
stazu do direktorija š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 posljedicu da svaki URL koji počinje sa /icons/ Apache automatski


zamjenjuje sa /usr/local/apache/icons prije nego što potraži zadanu
datoteku.
Ovdje bi također 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 poslužitelju.
Naime, postavljanjem UserDir opcije u httpd.conf datoteci, svakom korisniku
pridružuje se unutar njegovog home direktorija njegov osobni web direktorij
public_html u kojem može objavljivati svoje vlastite web stranice.

UserDir public_html

Podrazumijeva se da korisnik posjeduje valjano korisničke ime na tom računalu.


Nakon toga tim stranicama može se pristupiti vrlo jednostavno. Potrebno je u
pretraživački program upisati URL adresu oblika:

http://ime_stroja.domena/~korisničko_ime/ime_stranice

što će rezultirati učitavanjem željene stranice iz direktorija:

/home/ime_korisnika/public_html
6.Autorizacija i kontrola pristupa

U današnje vrijeme privatnost podataka vrlo je važna velikom broju korisnika,


te je vrlo bitno da određene informacije budu dostupne samo onima kojima su
namijenjene. Upravo zbog toga u ovom poglavlju biti će opisani postupci zaštite
podataka pomoću Apache web poslužitelja. Naime, Apache omogućuje zabranu
gledanja sadržaja određenih direktorija svima osim posebnim korisnicima ili
grupi osoba koje znaju pristupnu zaporku.
Ovdje će biti opisan postupak postavljanja osnovne autorizacije za određeni
direktorij 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 te se zasniva na otvaranju prozora u koji se upisuje
korisničko ime i zaporka kada se u web pregledniku pozove zaštićena stranica
(Slika 6.1). Ukoliko korisnik zna točno korisničko ime i zaporku može nastaviti
sa učitavanjem stranice, dok mu u suprotnom Apache poslužitelj to ne
dozvoljava.

Slika 6.1 Sučelje za autorizaciju korisnika

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 dovoljne
sistemske ovlasti da bi to mogli učiniti. Zato za ostale korisnike postoji
mogućnost stvaranja .htaccess datoteke unutar bilo kojeg direktorija koji se
želi zaštititi.
Unutar .htaccess datoteke mogu se staviti i druge postavke koje nisu vezane
za autorizaciju već za konfiguraciju ponašanja Apache poslužitelja, no ne sve
(npr. ServerName). Najveća prednost u odnosu na pisanje postavki unutar
httpd.conf je što se nakon pisanja postavki u .htaccess datoteku Apache ne
treba resetirati da bi novoupisane postavke vrijedile. Treba napomenuti da se
postavke upisane u .htaccess datoteku odnose na direktorij u kojem se ona
nalazi, te sve poddirektorije. Naime Apache prilikom ulaska u direktorij, prije
nego što pošalje podatke web pregledniku, traži datoteku .htaccess, te u
slučaju da je nađe slijedi postavke upisane u njoj, dok u suprotnom slijedi
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 vrijediti 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, te utipkati:

# ./htpasswd -c /usr/local/apache/passwd/passwords ime_korisnika

nakon čega ćemo biti upitani za zaporku i potvrdu zaporke. Nakon pravilnog
unosa zaporke stvorena je datoteka passwords u kojoj su upisani ime korisnika
i zaporka u enkriptiranom obliku. Potrebno je napomenuti da opcija -c znači
stvaranje datoteke ukoliko datoteka ne postoji. Ukoliko datoteka već postoji,
postojeća datoteka biti ć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 poslužitelj
konfiguriran da se pokreće kao korisnik nobody i grupa nogroup poželjno je
utipkati:

# 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 poslužitelju.

Slijedeći korak je konfiguriranje Apache poslužitelja da koristi passwords


datoteku. Konfiguriranje se izvodi slijedećim postavkama:

AuthType Tip autorizacije koja se koristi (u ovom slučaju Basic)


AuthName Ime autorizacije (ispisuje se na prozoru koji se pojavljuje)
AuthUserFile Lokacija datoteke sa zaporkama korisnika
AuthGroupFile Lokacija datoteke sa zaporkama grupe, ako se koristi
Require Zahtjevi koji moraju biti ispunjeni da bi se zadovoljila autorizacija
Kako je već ranije rečeno ove postavke mogu se smjestiti u
datoteku .htaccess ili u httpd.conf pod sekcijom <Directory>.

Navesti ćemo primjer postavljanja osnovne autorizacije za direktorij


/usr/local/apache/htdocs/privatno, upisivanjem u httpd.conf.

Primjer:

<Directory "/usr/local/apache/htdocs/privatno">
AuthType Basic
AuthName "Samo za pozvane"
AuthUserFile /usr/local/apache/passwd/passwords
Require user pperic
</Directory>

U navedenom primjeru koristi se osnovna autorizacija, ime autorizacije je


"Samo za pozvane". Datoteka /usr/local/apache/passwd/passwords biti će
korištena za provjeru identiteta korisnika, te samo korisnik s imenom pperic
može vidjeti sadržaj zaštićenog direktorija, naravno, ako zna ispravnu zaporku.
Drugi način ostvarivanja primjera izvodi se stvaranjem datoteke .htaccess u
direktoriju koji se želi zaštititi upisivanjem svih redaka iz primjera osim redaka
koji sadrže <Directory> u sebi. Potrebno je postaviti odgovarajuće ovlasti za
pristup .htaccess datoteci i web stranicama koje Apache treba prikazivati tako
da Apache poslužitelj može pročitati njihov sadržaj.

Primjer:

AuthType Basic
AuthName "Samo za pozvane"
AuthUserFile /usr/local/apache/passwd/passwords
Require user pperic

Moguće je postaviti da pristup bude odobren svim korisnicima upisanim u


datoteku passwords postavkom Require valid-user. Ako se u direktoriju
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
direktorij.
U praksi je često potrebno omogućiti pristup više osoba nekom direktoriju, te se
u tu svrhu može definirati grupa. Ovakav način postavljanja pristupa pogodan
je jer se bez promjene konfiguracijskih datoteka Apache poslužitelja 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 negdje drugdje), te
upisivanjem u nju:

Ime_grupe: ime_korisnika1 ime_korisnika2 ime_korisnika3

Korisnici također moraju biti upisani u datoteku passwords, te je potrebno još


dodati u httpd.conf ili u .htaccess linije
AuthGroupFile /usr/local/apache/passwd/groups
Require group Ime_grupe

Ovime je završen opis postavljanja osnovne autorizacije. Postoje još dvije vrste
autorizacije koje Apache podržava: tzv. digest autorizacija i autorizacija pomoću
baze podataka. Takve autorizacije se koriste u iznimno sigurnim sustavima, te
ne rade na svim web preglednicima i stoga ovdje neće biti opisani.

7.CGI i PHP aplikacije

U ovom dijelu 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 poslužitelja.
Naime, spomenute aplikacije u današnje vrijeme predstavljaju neizostavni
element bilo kojeg web poslužitelja koji se namjerava koristiti za obavljanje
nešto ozbiljnijih i složenijih zadaća, te će se prije 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š uvijek
dosta često korišten alat, koji omogućuje razmjenu informacija između
korisnika i web poslužitelja.
CGI skripte mogu biti pisane u raznim programskim jezicima (najčešće Perl ili
C), i kao takve predstavljaju aplikacije koje se na zahtjev pretraživača, odnosno
klijenta izvršavaju na strani web poslužitelja.
Tipični primjer komunikacije između klijenta i web poslužitelja, je slanje
korisničkih podataka poslužitelju putem web formi ugrađenih u HTML stranicu,
na temelju kojih će CGI skripta pokrenuta na poslužitelju obaviti za nju
predviđene zadatke, te rezultat vratiti klijentu.
Pogledajmo jednostavan primjer web forme, kojom će se pokrenuti CGI skripta
na poslužitelju sa zadatkom da obradi podatke koje je korisnik unio putem web
formi.

<FORM ACTION="http://www.ime_posluzitelja/moja_skripta.cgi"
METHOD=POST>
<b>Ime i Prezime :</b><INPUT TYPE="text" NAME="ime" SIZE=30
MAXLENGTH=50>
<b> Password: </b> <INPUT TYPE="password" NAME="passw" SIZE=30
MAXLENGTH=50>
<INPUT TYPE="submit" VALUE="Šalji!">
<INPUT TYPE="reset" VALUE="Brisanje!">
</FORM>

Ono što je potrebno primijetiti u gore navedenom primjeru je ACTION atribut


naveden unutar <FORM> HTML oznake, kojim se web poslužitelju navodi put i
ime skripte koju treba izvršiti.
Pritiskom na gumb "Šalji!" aktivirat će se slanje unesenih podataka web
poslužitelju, koje će on dalje proslijediti prozvanoj CGI skripti na obradu
(ukoliko je to omogućeno). Nakon procesiranja primljenih podataka, te na
temelju njih poduzetih radnji, CGI skripta klijenta može po potrebi izvijestiti o
učinjenim promjenama.
Ovdje 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 poslužitelju
omogućilo uspješno pokretanje i izvođenje napisanih CGI skripti. Potrebno je
spomenuti da inicijalna konfiguracija Apache web poslužitelja ne dozvoljava
pokretanje CGI skripti, te da je u tu svrhu potrebno modificirati httpd.conf
konfiguracijsku datoteku ukoliko se to želi omogućiti.
Na samom početku potrebno je definirati direktorij u kojem će se pohranjivati
CGI skripte koje se žele izvoditi. Taj direktorij može se nalaziti bilo gdje unutar
datotečnog sustava vaše platforme, neovisno o DocumentRoot konfiguracijskom
parametru Apache web poslužitelja.
Nakon što je određen direktorij u kojem će se pohranjivati skripte, potrebno je
u httpd.conf datoteci dodati dio kojim će se Apache poslužitelj obavijestiti da
se u tom direktoriju nalaze CGI izvršni programi, koje u slučaju zahtjeva za tom
URL adresom treba tako i tretirati.

Primjer:

<Directory /var/www/cgi-bin>
AllowOverride None
Options ExecCGI
SetHandler cgi-script
</Directory>

Ovim dijelom koda Apache web poslužitelj će znati da se unutar /var/www/cgi-


bin/ direktorija nalaze CGI skripte, koje treba tretirati kao izvršne programe
ukoliko se javi upit za URL adresom koja upućuje na navedeni direktorij.
Ključni parametar u ovom dijelu konfiguracije je Options ExecCGI parametar,
kojim se dozvoljava pokretanje i izvođenje CGI skripti pohranjenih u direktoriju
na koji se ovaj dio konfiguracije odnosi.
No, uz ovakvu konfiguraciju Apache web poslužitelja, parametru ACTION unutar
HTML <FORM> oznake potrebno je navesti cijeli put do skripte koja se želi
pokrenuti nakon pritiska na submit gumb.
Uobičajena je praksa da se u konfiguraciji Apache web poslužitelja definira alias
ime, kojim će se omogućiti intuitivnije pristupanje CGI skriptama, pogotovo
ukoliko se one nalaze negdje duboko unutar datotečnog sustava.
U tu svrhu potrebno je dodati slijedeći redak:

ScriptAlias /cgi-bin/ "/usr/local/apache/www/cgi-bin/"

U ovom slučaju će Apache web poslužitelj 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 ovlasti izvođenja (execute bit). Naime, budući da je
web poslužitelj iz sigurnosnih razloga najčešće pokrenut pod nobody korisničkim
imenom, potrebno je execute zastavice postaviti na način kojim će se web
poslužitelju 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 svijetu 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 pomnije promotri 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, te Java programskog jezika.
Tako se u PHP-u mogu naći elementi objektno-orijentiranog programiranja
preuzeti iz Jave, odnosno C++-a, a također se može pronaći i niz drugih vrlo
korisnih elementa naslijeđ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 posjeduje
vrlo kvalitetno programsko sučelje dizajnirano upravo u tu svrhu.
Kako bi se omogućilo pokretanje i izvođenje PHP skripti na Apache web
poslužitelju, prvi korak koji je potrebno poduzeti je dobavljanje samog PHP
programskog paketa, koji se može pronaći na www.php.net. Preporučuje se
dobavljanje što novije inačice ovog programskog paketa, kako bi se osigurala
potpuna kompatibilnost ovog programa sa drugim dijelovima sustava (SQL,
Apache ). Najnovija inačica ovog paketa trenutno nosi oznaku 4.1.2.
Osim samog PHP programskog paketa, na istoj stranici mogu se pronaći i
brojne druge korisne informacije vezane općenito za PHP skriptni jezik, te se
kao takva preporučuje svima onima koji se na bilo koji način žele upoznati sa
PHP svijetom 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.
Otpakiranje 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 direktorij, te 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 sustava. 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 poslužiteljem. 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
proslijediti ./configure skripti za konfiguraciju PHP programskog modula, te ih
je poželjno analizirati kako bi se na taj način uvidjele sve mogućnosti
konfiguracije ovog programa.
Nakon toga slijedi pokretanje make programa naredbama:

# make
# make install

što će ukoliko je sve uspješ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 poslužitelja, 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 računalu.


Ovim linijama Apache web poslužitelju omogućuje se prepoznavanje i
izvršavanje skripti u PHP jeziku. Definira 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 inačicu 1.3, te sve što
nije posebno navedeno, a navedeno je u opisu inačice 1.3, također vrijedi i za
inačicu 2.0.

8.1 Novosti u odnosu na Apache 1.3

Ovdje su navedene najvažnije novosti o radu i instalaciji nove inačice


poslužitelja u odnosu na inačicu 1.3. Novosti vezane uz konfiguraciju navedene
su u poglavlju 4.8.3.

z Novi instalacijski program zasnovan je na autoconf-u i libtool-u. Ovo


čini instalaciju novog Apache-a više nalik na instalacije ostalih programa
z Podržan je veći broj protokola nego u prijašnjoj inačici
z Apache 2.0 je brži, bolji i stabilniji u odnosu na Apache 1.3 na BeOS, OS/2
i Windows platformama
z Mnogo modula iz starije inačice je uklonjeno, te se više poslova obavlja
automatski, korištenjem novih više-procesnih modula
z Poruke grešaka u radu Apache web poslužitelja prevedene su na više
jezika. Administratoru je omogućeno da sam odredi izgled takvih poruka
z Mnoštvo zbunjujućih postavki izbačeno je iz upotrebe u httpd.conf
datoteci.
z Dodani su brojni novi moduli

8.2 Instalacija Apache poslužitelja 2.0 beta

Ovdje opisani postupci instalacije Apache web poslužitelja odnose se na


instalaciju iz tar.gz datoteke, budući da se nova inačica za sada još ne
isporučuje u rpm paketima, niti u sklopu gotovih distribucija.
Prije početka instalacije nove inačice Apache web poslužitelja potrebno je
pogledati zahtjeve koje nameće nova inačica:

z 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.
z ANSI - C kompajler - GNU C kompajler (gcc)
z Potrebno je postaviti točno sistemsko vrijeme u sustavu jer neki elementi
Apache web poslužitelja ispisuju to vrijeme prilikom prikaza web stranica
z Poželjno je imati instaliran Perl 5, ali nije obvezatno.

Nakon provjere navedenih zahtjeva, pozicionirati se u direktorij u kojem se


nalazi httpd-2_0_NN.tar.gz, gdje NN označava trenutnu verziju Apache 2.0
web poslužitelja, te upisati:

# tar -xzvf httpd-2_0_NN.tar.gz

Nakon što je datoteka otpakirana uđemo u novostvoreni direktorij, te možemo


pristupiti konfiguriranju programa. Konfiguriranje programa izvodi se
utipkavanjem:

# ./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 uspješnog izvođenja configure skripte (u slučaju da nema prijavljenih


grešaka) utipkati:

# make

Ova faza instalacije može potrajati neko vrijeme, ovisno o brzini računala.
Nakon toga:
# make install

Time je završena instalacija.

Ukoliko nije instalirana stara inačica Apache poslužitelja ili je odinstalirana,


korisno je prekopirati man stranice, budući da to instalacija ne obavi
automatski. Utipkati:

# cp -R /usr/local/apache2/man/* /usr/local/man

Treba još napomenuti da se novo-instalirana inačica neće automatski pokretati


prilikom podizanja sustava, ukoliko to posebno ne navedemo. Taj postupak će
biti opisan u poglavlju 4.8.4 nakon konfiguracije Apache poslužitelja.

8.3 Konfiguracija Apache 2.0 poslužitelja

Konfiguracija Apache 2.0 poslužitelja je vrlo slična konfiguraciji inačice 1.3, te


su ovdje navedene razlike vezane za konfiguraciju u odnosu na raniju inačicu.
Izbačene su postavke Port i BindAddress, te se umjesto njih koristi Listen na
isti način kao što je opisano u poglavlju 4.3.
ServerName određuje ime adrese na koje se Apache odaziva i broj porta:

ServerName www.ime_domene.hr:port

Postavka ServerType više ne postoji, te ni mogućnost rada unutar inet


deamona.
Postavke AgentLog, RefererLog i RefererIgnore izbačene su, no Agent i
Referer log još su uvijek mogući korištenjem CustomLog postavke.
Postavke AddModule i ClearModuleList koje su bile potrebne radi
odgovarajućeg redoslijeda učitavanja modula izbačene su iz upotrebe, budući
da novi Apache 2.0 API omogućuje modulima da sami odrede redosljed
izvođenja, eliminirajući potrebu za navedenim postavkama.

8.4 Pokretanje i zaustavljanje Apache 2.0

Prije pokretanja nove inačice Apache web poslužitelja potrebno je prvo isključiti
staru inačicu ukoliko je aktivna. Ukoliko je starija inačica Apache poslužitelja
bila instalirana zajedno sa distribucijom za isključivanje je dovoljno utipkati:

# apachectl stop

Ako je starija inačica bila naknadno instalirana u direktorij /usr/local/apache,


utipkati:

# /usr/local/apache/bin/apachectl stop

Uobičajeni način pokretanja nove inačice Apache poslužitelja 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đer su jednake


kao u inačici 1.3. Jedina razlika je u pokretanju prilikom podizanja operacijskog
sustava. Da bi postavili automatsko pokretanje prilikom podizanja sustava
potrebno je prvo isključiti pokretanje stare inačice Apache poslužitelja prilikom
podizanja sustava (ukoliko je korišten), jer u isto vrijeme nije moguće
pokrenuti dvije verzije poslužitelja na istom računalu. Poželjno je staru inačicu
odinstalirati.
Korisno je prvo prekopirati skriptu pomoću koje se pokreće Apache poslužitelj, u
direktorij /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 dvoznamenkasti 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

Slijedeći put pri podizanju sustava Apache 2.0 web poslužitelj biti će automatski
pokrenut.

Da bi omogućili automatsko zaustavljanje Apache web poslužitelja prilikom


resetiranja ili isključivanja računala 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 dvoznamenkasti broj.

9.Zaključak

S obzirom na činjenicu da je Apache jedan od najkvalitetnijih i najraširenijih


web poslužitelja u svijetu, on kao takav predstavlja jedini logičan izbor pri
odabiru web poslužitelja za sve Linux distribucije. Osim njegove kvalitete koja
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 cijene ostalih
web poslužitelja dostupnih na tržištu prilično velike.
Performanse poslužitelja uvelike će ovisiti o propusnosti same računalne mreže,
kao i o sklopovskoj arhitekturi na kojoj Apache radi. Prilikom odabira
operativnog sustava i sklopovlja na kojem će raditi Apache također treba uzeti u
obzir i očekivano opterećenje poslužitelja, što će naravno ovisiti o njegovoj
namjeni. Za posluživanje do 15 računala unutar mrežnog sustava malog ili
kućnog ureda dovoljno je imati Pentium I računalo ukoliko web stranice koje se
poslužuju nisu pretjerano velike.

You might also like