APACHE’DE DİZİN YAPISI
Apache kurulurken beraberinde birçok dizin yaratır.bunlar arasında yapılandırma dosyalarını ,httpd (80.portu dinleyen program) vs. gibi dizinler vardır.
1. Apache kurulurken oluşturduğu dizinlerden bir tanesi ve en önemlisi
/etc/httpd/httpd.conf
Bu dosya Apache’nin tüm configürasyon dosyalarını barındırır. Yani apachenin tüm ayarları burdan yapılır.
1. /usr/local/httpd/
Bu dizin Microsoft IIS dizin yapısında inetpub dizinin yerini tutar. Httpd dizini bünyesinde 3 tane dizin barındırır. Bunlar;
1- cgi-bin
2- htdocs
3- icons
CGI-BIN:Sunucu tarafında çalıştırılacak olan uygulama programların yerleştirilmesi gereken dizindir.
HTDOCS: İstemcilerden gelen isteklere verilen cevapların yerleştirildiği dizindir. Bir client server’e bağlandığı zaman ilk bakılacak dosya bu dizin içindedir. Bu dosya
/usr/local/httpd/htdocs/index.html
dosyasıdır.
ICONS: sayfalarda kullandığımız iconları içerir.
/var/log/httpd:Bu dizin apache’nin tüm kayıtlarını tutar. Erişim kayıtlarını,hata kayıtlarını, mailleri, mesajları vs. Bunlar arasında;
/var/log/httpd/error_log : hata kayıttlarını tutar.
/var/log/httpd/access_log: erişim kayıtlarının tutulduğu dizindir.
Apache HTTP sunucusu ayar dosyası
Bu dosyada Apache,httpd, ana sunucu birbirine eş anlamda kullanılmıştır.Kullanılan Türkçe terimlerin yanlarında İngilizce karşılıkları da verilmiştir. Ancak, symbolic link,PID, Unix sistem çağrıları gibi temel kavramlar olduğu gibi bırakılmıştır.Bu dosyada hata olup olmadığını /apache/dizini/bin/apachectl configtest'le kontrol edebilirsiniz. Büyük bir değişiklik yaptıktan sonra, Apache'yi tekrar çalıştırmadan önce (../bin/apachectl restart), dosyada hata olmadığından (configtest'le) emin olmalısınız.
Apache Web sunucusu http.conf dosyasından sonra eğer ResourceConfig ve/veya AccessConfig yönergeleriyle (directive) değiştirilmemişse sırasıyla srm.conf ve access.conf dosyalarını okur.
Bu dosya üç ana alana ayrılmıştır:
1- Global Ortamı ayarları (Bu makinenin cevap verdiği, sanal sunucular dahil, bütün sunucuları etkiler)
2- Varsayılan sunucunun ayarları (Bu ayarlar, sanal sunucularda açık olarak 'override' edilebilir, edilmediği takdirde bu bölümdeki ayarlar kullanılır)
3- Sanal sunucu ayarları (Aynı IP adresinden farklı adreslere cevap vermek için kullanılıyor)
Ayar ve kayıt dosyalarının adları:
Dosya adı /'la başlıyorsa absolute path kullanılıyor (ör: /usr/local/apache/logs/dosya)
Dosya adı 'la başlamıyorsa ServerRoot'un değeri bu path'in önüne ekleniyor:
(ör: logs/dosya --> /usr/local/apache/logs/dosya oluyor)
Evrensel Ortam (Global Environment)
Bu bölümdeki ayarlar Apache'nin genel çalışmasını etkiler, örneğin aynı anda kaç isteği karşılayacağı, ayar dosyalarını nerede bulacağı vs.
ServerType: Ya inetd ya da standalone olabilir. Inetd, sadece Unix platformunda
desteklenir.
ServerType standalone
ServerRoot: Sunucunun ayar, hata ve kayıt dosyalarının durduğu ana dizin ismi.
UYARI:Dizin isminin sonunda / OLMAMALIDIR!
ServerRoot "/usr/local/apache"
LockFile: Apache USE_FCNTL_SERIALIZED_ACCEPT ya da USE_FLOCK_ SERIALIZED_ ACCEPT parametreleri kullanılarak derlenmişse, kilit dosyasının yerini belirtir. Normal olarak bu dosyanın adını değiştirmenize gerek yoktur. Ancak, kilit dosyasını NFS üzerinden 'mount' edilen bir yerde tutmak isterseniz değiştirin. Kilit dosyası YEREL BİR DİSKTE TUTULMAK ZORUNDADIR!. Dosya isminin sonuna PID (Process ID) otomatik olarak eklenir.
LockFile /usr/local/apache/logs/httpd.lock
PidFile: Sunucunun çalıştırıldığı zaman işlem numarasını (hafızadaki referansı denilebilir) tuttuğu dosya. Sunucu durdurulurken bu numaraya sahip işlem öldürülür.
PidFile /usr/local/apache/logs/httpd.pid
ScoreBoardFile: İçsel sunucu işlemleri bilgisinin tutulduğu dosya. Bu dosyaya birçok platformda ihtiyaç yoktur. İhtiyacınız olup olmadığını dosyanın yaratılıp yaratılmadığına bakarak anlayabilirsiniz.Eğer aynı makinede iki farklı Apache sunucusu çalıştırıyorsanız, bu dosyaya ikisinin aynı anda erişmediğinden emin olmalısınız.
ScoreBoardFile /usr/local/apache/logs/httpd.scoreboard
Normalde, sunucu bu dosyadan sonra, sırasıyla srm.conf ve access.conf dosyalarını işler. Apache dağıtımında bu iki dosya boş olarak çıkar; kullanım kolaylığı için bütün yönergelerin tek bir dosyada tutulması tavsiye edilir. Sunucunun bu dosyaları yoksaymasını isterseniz:
Unix için "/dev/null", Windows için "null" girebilirsiniz.
ResourceConfig conf/srm.conf
AccessConfig conf/access.conf
Timeout: İsteklerin geliş ve gönderilişleri arasında geçebilecek maksimum süre, bu süre aşıldığında, sunucu gelen isteği düşürür (yoksayar).
Timeout 120
KeepAlive: Israrlı bağlantılara (persistent connection - aynı istemciden birden fazla
istek) izin verilip verilmeyeceği. Kaldırmak için "Off" yapınız.
KeepAlive On
MaxKeepAliveRequests: Israrlı bir bağlantıda kaç isteğe izin verileceği. Sınırsız bağlantı için 0 yapabilirsiniz.En yüksek verim için bu sayıyı yüksek tutmanız tavsiye edilir.
MaxKeepAliveRequests 100
KeepAliveTimeout: Aynı istemciden, bir sonraki isteğin kabul edilmesi için gereken
minimum süre.
KeepAliveTimeout 15
Boştaki sunucu-havuzu düzenlemesi. Boştaki çocuk-işlemler (child process) gelen yeni istekleri karşılamak üzere hazırda bekler. Apache, bu sayıları tahmin etmenizi zorlamak yerine, gerek gördükçe kendini yüke göre adapte eder, yani, o andaki yükü kaldırmak için, gerekli gördüğü kadar çocuk-sunucu çalıştırmaya, ve birkaç tane de boş sunucu bekletmeye çalışır. Eğer, belirli bir anda MinSpareServers değerinden az boş sunucu varsa, aradaki fark kadar yeni sunucuyu beklemek üzere açar. Eğer, MaxSpareServers değerinden fazla sayıda çocuk-sunucu boşta bekliyorsa, fazla olan kadarını öldürür. Diğer bir deyişle, bu değerlerin yüksek olması, ani yüklenmelere karşı daha iyi tepki verilmesini, düşük olması da, geçişlerin daha yumuşak olması ve daha az bellek kullanılması demektir.Varsayılan değerler 5 ve 10'dur.
MinSpareServers 8
MaxSpareServers 16
Sunucu ilk çalıştırıldığında başlatılacak çocuk sunucu sayısı.
StartServers 8
Aynı anda çalışacak çocuk-sunucuların Max değeri, diğer bir deyişle aynı anda bağlanabilecek toplam istemci sayısı. Eğer bu sayıya ulaşılırsa, istemciler KİLİTLENECEKTİR, dolayısıyla bu sayı düşük tutulmamalıdır. Bu ayarın varsayılan değeri 256'dır ve derlemeden önce apache source dizinindeki src/include/httpd.h dosyasındaki HARD_SERVER_LIMIT'le ayarlanması gerekir. Bu dosyayı değiştirip tekrar derlemeden, bu ayarı arttıramazsınız. Bu yönerge aynı zamanda, sunucunun kilitlenmesi ya da sızdırmaya başlaması durumunda, makineyi çökertmemesi için kullanılmaktadır.
MaxClients 1024
MaxRequestsPerChild: Çocuk-sunucunun öldürülmeden önce toplam kaç isteğecevap
verebileceği. Bu ayar sunucunun (ya da kullandığı kütüphanelerin) sızdırma olasılığına karşı kullanılır. Birçok sistemde, bu ayara gereksinim duyulmaz, ancak bazılarında (ör:Solaris) sızdırma çok olabilmektedir. Bu platformlar için, bu sayıyı 10000 civarı bir sayı yapabilirsiniz. 0 sınırsız demektir.
UYARI: Bu sayı, açık tutulan (keepalive) bağlantıları kapsamaz, yani, bir çocuk sunucu aynı istemciden 10 isteğe cevap vermişse, bu 1 istek sayılır.
MaxRequestsPerChild 10000
Listen: Normal 'port' ve IP adresinin dışında, Apache'nin belli IP adresi ve/veya 'port'u dinlemesini/cevap vermesinisağlar. Ayrıca <VirtualHost> yönergesine bakınız.
Listen 3000
Listen 12.34.56.78:80
BindAddress: Bu ayarla sanal sunucuları destekleyebilirsiniz. Bu yönergeyle sunucunun hangi IP adresini dinleyeceğini verebilirsiniz. "*", bir IP adresi ya da tam açık bir Internet ismi (FQDN - Fully Qualified Domain Name, ör: www.ulakbim.gov.tr) kullanabilirsiniz. Ayrıca <VirtualHost> yönergesine bakınız.
BindAddress *
Dinamik Paylaşımlı Nesne (Dynamic Shared Object - DSO) Desteği DSO'lar sunucunun başladıktan sonra çalışma zamanında (runtime) nesne kullanılacağı zaman yüklemesini sağlarlar. Sunucu ilk başlatılırken yüklenmezler. Bir modülü kullanabilmek için karşılık gelen bir 'LoadModule' satırını aşağıya eklemeniz gerekir. Ayrıntılı bilgi için Apache 1.3 dağıtımındaki README.DSO dosyasını okuyunuz. Statik olarak (sunucu başlatılırken yüklenen) bağlanan modüllerin listesini görmek için 'bin' dizininde 'httpd -l' komutunu çalıştırınız.
UYARI: Modüllerin yüklenme sırası önemlidir. Ne yaptığınızdan emin değilseniz, aşağıdaki sırayı değiştirmeyiniz.
Ör: LoadModule foo_module libexec/mod_foo.so
LoadModule define_module libexec/mod_define.so
LoadModule includes_module libexec/mod_include.so
LoadModule speling_module libexec/mod_speling.so
LoadModule anon_auth_module libexec/mod_auth_anon.so
LoadModule digest_module libexec/mod_digest.so
LoadModule expires_module libexec/mod_expires.so
LoadModule headers_module libexec/mod_headers.so
<IfDefine SSL>
LoadModule ssl_module libexec/libssl.so
</IfDefine>
LoadModule cookie_auth_module libexec/mod_auth_cookie.so
LoadModule inst_auth_module libexec/mod_auth_inst.so
LoadModule layout_module libexec/mod_layout.so
LoadModule put_module libexec/mod_put.so
LoadModule macro_module libexec/mod_macro.so
LoadModule roaming_module libexec/mod_roaming.so
LoadModule php4_module libexec/libphp4.so
Doğru modül işletim sırasının belirlenmesi için, eldeki modüllerden tüm modül (statik ya da dinamik yüklenen) listesinin tekrar oluşturulması.
UYARI: Ne zaman, yukarıdaki LoadModule bölümünü değiştirirseniz, bu bölümü de değiştiriniz.
ClearModuleList
AddModule mod_env.c
AddModule mod_define.c
AddModule mod_log_config.c
AddModule mod_mime.c
AddModule mod_negotiation.c
AddModule mod_status.c
AddModule mod_info.c
AddModule mod_include.c
AddModule mod_autoindex.c
AddModule mod_dir.c
AddModule mod_cgi.c
AddModule mod_asis.c
AddModule mod_imap.c
AddModule mod_actions.c
AddModule mod_speling.c
AddModule mod_userdir.c
AddModule mod_alias.c
AddModule mod_rewrite.c
AddModule mod_access.c
AddModule mod_auth.c
AddModule mod_auth_anon.c
AddModule mod_digest.c
AddModule mod_expires.c
AddModule mod_headers.c
AddModule mod_so.c
AddModule mod_setenvif.c
<IfDefine SSL>
AddModule mod_ssl.c
</IfDefine>
AddModule mod_auth_cookie.c
AddModule mod_auth_inst.c
AddModule mod_bandwidth.c
AddModule mod_disallow_id.c
AddModule mod_layout.c
AddModule mod_put.c
AddModule mod_session.c
AddModule mod_macro.c
AddModule mod_roaming.c
AddModule mod_php4.c
ExtendedStatus: /server-status işlemcisi (handler) çağırıldığı zaman, detaylı bilgi üretilip üretilmeyeceği. Varsayılanı 'Off'dur.
ExtendedStatus On
Global Environment end