Temel Apache Konfigurasyonu
İçindekiler
- 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.- ">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 İ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.
- 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
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
İ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.
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
İ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.