İçindekiler

Temel Apache Konfigurasyonu
Bu bolumde, basit yapiya sahip bir apache web sunucusunu yonetmeyi,gerekli temel ayarlamalari yapmayi ogrenecegiz. Tum ayarlamalari www. Turk-php. Com alan adina gore yapacagiz. Bu nedenle kendi alan adinizi kullanirken herhangi bir problemle karsilasmadan, ayarlari kendinize uygun hale getirebileceksiniz
Temel Apache Konfigurasyonuİlk olarak istedigimiz ozelliklerin ne olmasi gerektigine karar 
verecegiz.Ardindan yaptigimiz ayarlamalar ile apachenin tam olarak
istedigimiz sekilde calismasini saglayacagiz.

Bu makalede sizlere guvenli baglantilar,sanal web sunucular vb. gibi
ileri seviye ayarlamalar hakkinda bilgi verilmeyecektir.Bu konularin
herbirisi bir ayri makale konusudur.

Cok fazla detaya girilmeden sadece ana ayarlamalar ve secenekler
anlatilacaktir.

Kararlar

Apache ayar dosyalarina dokunmadan once bazi temel kararlari vermis
olmaniz gereklidir :

Bu web sunucusunun adi ne olacak,

Hangi ag arayuzlerine cevap verecek,

Web sunucusu ayar ve kayit (log) dosyalari nerede (hangi klasorde) yer
alacak,

Bu web sunucusu'nun ziyaretcilere sunacagi dokumanlar hangi klasorde yer
alacak,

Web Sunucusunun Adi

Apache, kendisine gelen HTTP isteklerine cevap verirken kendini tanitmak
icin bu isimi kullanir.Bu isim genelde www.ornek-domain..com
formatindadir.Cok yaygin bir yanlis anlama veya bilgilendirme,
apache'nin buraya yazilan isime cevap verecegidir.Bu dogru degildir...

Apache, "dinlemeye" devam ettigi herhangi bir network arayuzunden ve
herhangi bir porta gelen butun isteklere cevap verebilir.

Apache ongorulen olarak host uzerindeki o anda uygun olan butun aglari
dinlemeye ayarlanmistir.

Sunucu adi iste bu isteklere cevap veririken, apache'nin bir cok cevap
bilgisinin beraberinde kullandigi, kenidisini tanitan bir bilgisel
isimdir.

ServerName www.turk-php.com

Servis verilecek IP adresi

Apache'nin HTTP isteklerini alacagi IP adresidir.Bu adres aslinda
apache'nin degilde host makinenin genel network konfigurasyonuna
baglidir.Bu ayarin girilmesi zorunlu degildir.

Sunucumuz icin 192.168.1.1 IP adresini secelim.Bu adres gordugunuz gibi
ozel bir IP araliginda ve internet uzerinde herhangi bir doger host
makineyi bu sekilde rahatsiz etmis olmayacagiz.

Intranet icin sunucularda bu IP adresi kullanilabilir ama eger Internet
uzerinde bir sunucu kuruluyorsa daha uygun ve gecerli bir IP adresi
alinmali ve makineye bu adres verilmelidir.

Bunlar bu yazinin konusu disindadir.

Apache web sunucusu sadece belirli IP adreslerini dinlemeye
zorlanabilir.Bunun icin BindAddress ve Listen direktifleri kullanilir.Bu
direktifler ornegin makinemizde birden fazla network arayuzu varsa cok
kullanisilidir.Bu durumda bizim tayin ettigimiz arayuz dinelenecek ve bu
sekilde diger arayuzlere servis verilmeyecektir.

Apache ongorulen olarak, makine uzerindeki butun network arayuzlerini
dinler :

BindAddress *

Ornegin apachenin bizim verdigimiz bir IP adresini (dolayisi ile bir
network arayuzunu) dinlemesini istiyorsak asagidaki sekilde bu direktif
kullanilabilir :

BindAddress 192.168.1.1

Veya ornegin yanlizca host makinenin uzerindeki istemcilere cevap
verecek sekilde yapilandirmak icin :

BindAddress 127.0.0.1

Hangi port/portlar'a servis verilecek

Gelenege gore HTTP sunuculari icin ongorulen port 80'dir.Eger
degistirmek istiyorsak Port direktifi ile bunu saglayabiliriz :

Port 80

Bununla beraber Listen direktifide bu amacla kullanilabilir.Listen
direktifi cok yeni bir direktiftir.BindAddress ve Port direktiflerinin
yerine gecmesi icin tasarlanmistir.BindAddress direktifi yanlizca bir
tek IP adresi tanimlamaniza izin vermektedir.Bu durumda ikinci,ucuncu
BindAddress kullanimlari bir onceki direktifin uzerine yazacaktir.

Listen ile birden fazla kez kullanilabilir.Bu durumda bir adres
listesi/port listesi belirlenebilir.

BindAddress ve Port kullanmadan sadece Listen ile asagidaki sekilde
kolayca dinlenmesini istedigimiz IP adresini ve Port numarasini
belirleyebiliriz :

Listen 192.168.1.1:80

Standalone veya inetd secimi

Apache iki mod da calisabilir :

Standalone

inetd

Birinci secenek genel olarak kullanilan moddur.Bu mod ile apache kendi
network baglantilarini kendisi ayarlar, kendisi icin ayarlanmis
portu/portlari kendisi dinler.Tam bir basina buyruk program gibi
davranir.Bu mod apache icin ongorulen moddur.Degistirlmek istenirse
ServerType direktifi kullanilabilir :

ServerType standalone

Ikinci mod ise (Yanlizca UNIX sistemler icin) 'inetd' modudur.Bu durumda
apache 'inetd' tarafindan calistirilir.Ayarlanan porta bir istek
geldiginde, bu istek 'inetd' sunucusu tarafindan apacheye yonlendirilir...

Biz kendi sunucumuzu standalone modda calistiracagiz.Zira 'inetd'
secenegi verimli degildir.

Kullanici ve Grup

UNIX sistemlerde apache, belirli bir kullanici ve grup kimligi altinda
calisacak sekilde yapilandirilabilir.

Apache "root" kullanicisi tarafindan calistirildiginda, gelen isteklere
cevap verecek, boyle kendi altinda dallanan cocuk surecler
olusturur.Buna gelenek olarak "catallanma" denilmektedir.

Iste bu noktada cocuk surecler, -eger User ve Group direktiflerinde
belirli bir kullanici ID ve Grup ID belirlenmis ise- ellerindeki bu
"root" haklarini belirlenen "kullanici" ve "grup" ile degis tokus
ederler.Bir nevi o kullaniciyi evlat edinirler.

Bu sunucu guvenligi acisindan cok onemlidir.Sunucuyu saldirilarin
etkisinden uzaklastirmaktadir.

Apache neden root kullanici olarak baslatiliyor? sorusuna cevap ise 1024
un altindaki port numaralarinin yanlizca yuksek seviye izinlerle
calistirilabilir olmasidir.Bu nedenle acilista apache "root" kullanicisi
haklarina sahip olmalidir.Gordugunuz gibi HTTP portu 80 ise 1024 un
altinda bir port numarasidir.

Biz kendi sunucumuz icin "nobody" yetkisiz kullanicisini, bu amacla
kullanacagiz.Cogu UNIX sisteminde bu kullanici zaten ongorulen olarak
yaratilmistir.

User nobody Group nobody

Windows uzerinde bu direktifer kullanilamaz.Kullanilsa dahi apache
bunlari gozardi edecek kadar zekice tasarlanmistir.Bu nedenle apache
herhangi bir hata mesaji vermeyecektir.

Admin icin eposta adresinin belirlenmesi

Kullanicilarin, sunucu uzerindeki hatalari rapor etmesi icin bir eposta
adresi belirlenmesi cok kullanislidir.Bu admin eposta adresi yaratilan
hata sayfalarinda kullanilabilir.Eposta adresi ServerAdmin direktifi ile
belirlenir :

ServerAdmin < ="" ="text/">document.write('webmaster');document.write('@');document.write('turk-php.com');webmaster@turk-php.com

Sunucu kok klasorunun belirlenmesi

ServerRoot direktifi ile apache'nin kendisi icin gerekli dosyalarini
nerede tutacagi belirlenir.Bu yol ayni zamanda apache'nin diger
direktiflerinde "gorece" tanimlanmis yollar icin bir kok niteligindedir.

Ornegin ErrorLog ve DocumentRoot direktifleri bu sekilde gorece
tanimlanmis yollar icermektedir.

ServerRoot /usr/local/apache

Gordugunuz gibi yolun onunde bir adet "/" isareti bulunmaktadir.Bu
nedenle bu tip yollar "kesin yollar" olarak isimlendirilir.Dosya
agacinda kok dizinden itibaren bastan sona dogru ilgili klasore
ulasilir.

Ongorulen hata kayit dosyasinin secilmesi

Apache ile cok degisik bilgi kayitlari yaratilabilir.Bunlara ornek
olarak erisim kayitlari, ziyaretci gonderen site adreslerinin kayitlari,
hata kayitlari vb. sayilabilir.

Erisim kayitlari veya diger tip bilgi kayitlari ile ugrasip
ugrasmayacaginizi bilemeyiz ama hata kayitlari bir sunucu icin cok
onemlidir.Erisim kayitlari,gonderen kayitlari vb. kayitlar hem islem
zamani alirlar hemde sabit surucu uzerinde bir suru yer kaplarlar.

Butun hatalarin rapor edilip kayida gercirilmesi icin apache web
sunucusu ErrorLog direktifini kullanmaktadir.Bu kayit dosyasi ongorulen
olarak UNIX sistemler icin logs/error_log olarak, windows icin ise
logs/error.log belirlenmistir.

Yukaridaki yollar gordugunuz gibi "goreceli yollardir".Eger "kesin yol"
ile bunlari belirlemek isterseniz asagidaki gibi sunucu kokunden
itibaren tum yolu belirtmeniz gereklidir :

ErrorLog /usr/local/apache/logs/error_log

veya alternetif olarak "gorece yol " ile :

ErrorLog logs/error_log

Bu durumda bir onceki direktifte gordugumuz ServerRoot yolu bu gorece
yolun onune eklenecektir.

Sunulacak web dokumanlarinin tutulacagi klasorun tayin edilmesi

Son olarak sunacagimiz web sayfalarini hangi klasore koyacagimizi tayin
ediyoruz.Bu herhangi bir dosya klasoru olabilir.Buradaki tek sinirlama
apache'nin bu klasore olan erisiminin olmasi gerekliligidir.Apachenin
calistigi makine uzerinde bulunma zorunlulugu yoktur.Ornegin NFS ile
erisilebilen bir dosya klasoru bile olabilir...

Boyle ag servisleri icin http://www.netapp.com adresine bakabilirsiniz.

Ongorulen olarak apache sunacagi dosyalarin ServerRoot ile belirlenen
klasor altinda, htdocs isimli klasorde oldugunu kabul eder.Bunu
degistirmek icin DocumentRoot direktifi kullanilir.Bu direktif ile
belirlenen klasor gorece veya kesin yola sahip olabilir.Gorece yol
girildiginde ServerRoot ile belirlenen klasor bu yolun onune
eklenecektir.

Asagidaki iki ayar satirinin birincisinde gorece yol ikincisinde ise
kesin yol kullanilarak iki ornek yapilmistir.Secim tamamen size
kalmistir.Dosya sisteminde istediginiz bir klasor secerek bu direktifle
asagidaki gibi web klasorunuzu belirleyebilirisiniz :

DocumentRoot htdocs

DocumentRoot /usr/local/apache/htdocs

Biz kendi web sunucumuz icin ServerRoot klasorunun disinda (Bu sekilde
ayar dosyalarinin yer aldigi klasorden , web klasorunu ayirmak iyi bir
guvenlik onlemidir.) /home klasorunun altindaki webler isimli bir
klasore koyacagiz : Diger kullanicilardan bizim dosyalarimizi ayirmak
icin bir de turk-php isimli klasor actim.Iste bu klasor icine konulacak
her dosya web ile ulasilabilir hale geliyor...

DocumentRoot /home/webler/turk-php

Sonuc olarak asagidaki gibi bir web sunucu konfigurasyonu yapmis olduk :

ServerName www.turk-php.com BindAddress 192.168.1.1 #Port 80 User nobody
Group nobody ServerAdmin < ="" ="text/">document.write('webmaster');document.write('@turk-php.com');webmaster@turk-php.com ServerRoot
/usr/local/apache ErrorLog logs/error_log DocumentRoot
/home/webler/turk-php

Yukarida yer alan butun direktifler aciklamalari ile beraber (ingilizce
olarak) httpd.conf dosyasinda yer almaktadir.Burada # ile bir satir
"yorum" haline getirilip etkisiz hale getirilmektedir.Satiri silmekten
daha iyi bir yol bu sekilde ongorulen ayarlari unutmamak icin onune #
isareti getirerek yorum haline getirmektir.