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