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 "nul" 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ğe cevap 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üklenebilmesini 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
"Varsayılan" Sunucu Ayarları
Bu bölümdeki ayarlar, hiçbir sanal sunucu tarafından ele alınmayan istekleri karşılayan # "Varsayılan" sunucu ayarlarını içerir. # Ayrıca, <VirtualHost>"larda tanımlanmayan her değer bu bölümden alınır.
# Buradaki bütün yönergeler <VirtualHost>"larda yeralabilir, ki o zaman, bu bölümdeki yönergeler # "override" edilmiş olur, ve <VirtualHost>"daki değer kullanılır. # Eğer yukarıda Evrensel Ortam bölümünde, ServerType inetd olarak ayarlanmışsa, aşağıdaki # "port", "user" ve "group" ayarlarının bir etkisi olmayacaktır. # Bu durumda, ServerAdmin kısmına atlayınız.
# Port: Tekbaşına (standalone) sunucunun dinlediği "port". 1023"den küçük "port"lar için httpd"nin # çalıştırılma sırasında root haklarına sahip olması gerekir. Port 80
# Eğer, httpd"yi (Ana sunucu) farklı bir kullanıcı ya da grupta çalıştırmak isterseniz, # başlangıçta root olarak çalıştırın, httpd kendisini o kullanıcıyla/grupla yerdeğiştirecektir.
# Kullanıcı/Grup: httpd"nin çalışacağı kullanıcı ve/veya grup ismi (ya da #numarası) # . SCO Unix (ODT 3) için "nouser" ve "nogroup" kullanınız. # . HPUX"da paylaşımlı belleği "nobody" kullanıcısıyla kullanamazsınız, bunun yerine www gibi bir # kullanıcı yaratıp onu kullanın. # UYARI: Bazı işletim sistemlerinin çekirdekleri, grup numarası 60000"in üzerinde olduğu zaman # setgid(Grup) ya da semctl(IPC_SET) Unix fonksiyonlarını çağırmayı reddeder. # Bu sistemlerde webgroup grubunu kullanmayın. User webuser Group webgroup
# ServerAdmin: Sunucuda problem çıktığında, e-posta gönderilebilecek adres. Bu adres, hata mesajları # gibi, sunucu tarafından üretilen sayfalarda "görünebilir". # Ayrıca ServerSignature yönergesine bakınız. ServerAdmin webmaster@kurum.edu.tr
# ServerName: Eğer makinenizin ismi www"den farklıysa, istemciye geri gönderilecek sunucu ismini # değiştirebilmenizi sağlar. Yani, makinenin gerçek ismi, ör. sunucu.kurum.edu.tr, yerine # www.kurum.edu.tr kullanmak isterseniz, bu ayarı değiştirin. # UYARI: Kendi başınıza makine ismi yaratıp, bunların çalışmasını bekleyemezsiniz. Burada verdiğiniz # ismin DNS"de tanımlı olması gerekir. Daha detaylı bilgi için sistem yöneticinize başvurunuz. # Eğer sunucunuzun kayıtlı bir DNS ismi yoksa, IP numarasını giriniz. Ancak bu durumda, sunucuya sadece # IP adresiyle erişebilirsiniz (ör. http://123.45.67.89/). ServerName www.kurum.edu.tr
# DocumentRoot: Belgelerinizi sunacağınız dizin. Varsayılanı, bütün isteklerin bu dizinden # karşılanmasıdır. Ancak, sembolik bağ (symbolic link) ya da alias (lakap) kullanarak farklı dizinlere # erişim de sağlayabilirsiniz. # Kişisel tecrübelere dayanarak Web sayfalarının Apache programlarının durduğu dizinden farklı bir # dizinde durması yararlı olacaktır. Bu hem yedeklemede, hem de dosyaların yönetiminde avantaj sağlar. # Bu yolu seçtiğiniz takdirde, ör. /web dizini altında her sanal sunucu için ayrı bir kök dizin, # bu dizinlerin altında da HTML sayfaları ve CGI programları için ayrı dizinler açmak # işinizi rahatlatacaktır. DocumentRoot "/web/www/docs"
# Apache"nin erişiminin olduğu her dizin ve altdizinleri için, hangi servis, özelliklerin vb izin # verildiği ve/veya verilmediği belirtilebilir. # İlk olarak "varsayılan" dizinin haklarını epey kısacağız. # Güvenliği maksimuma getirmek isterseniz FollowSymLinks"i de kaldırıp Options None yapın. # FollowSymLinks"le kullanıcılarınızdan biri /etc gibi kritik bir dizine bir symbolik verebilir ve bu # dizin dış dünya tarafından okunabilir hale gelir. Bir diğer alternatif olarak görülen # SymLinksIfOwnerMatch daha güvenlidir ancak istenen dizinin birkaç seviye içerde olması durumunda # tepki süresini epey yavaşlatır. Örneğin "Option SymLinksIfOwnerMatch" verilmişse, sunucu # /usr/local/apache/htdocs/dosyalar/ dizini istendiği zaman /, /usr, /usr/local, /usr/local/apache, # /usr/local/apache/htdocs ve /usr/local/apache/htdocs/dosyalar dizinlerinin *hepsinin* bir symbolik # link olup olmadığını ve sahiplerinin kim olduğunu kontrol eder. <Directory /> Options FollowSymLinks AllowOverride None </Directory>
# Bu noktadan itibaren, ayrıntılıca hangi özelliklerin kullanılabileceği belirtilebilir. # Dolayısıyla, birşeyler istediğiniz gibi çalışmıyorsa, aşağıda açık olarak izin verildiğine emin olun.
# Bu dizin DocumentRoot yönergesinde verdiğiniz dizin olmalıdır. <Directory "/web/www/docs">
# Bu ayar aşağıdakilerin yanısıra "None", "All", veya "Indexes", "Includes", "FollowSymLinks", # "ExecCGI", "MultiViews""in bir kombinasyonu olabilir. # UYARI: "MultiViews" açık olarak(explicitly) vermek zorundasınız --- "Options All" bu işi görmez. # # Daha fazla güvenlik istiyorsanız, hızdan bir miktar taviz vererek buradaki FollowSymLinks"i # SymLinksIfOwnerMatch yapabilirsiniz. Bu şekilde, sembolik bağın sahibiyle, bağ verilen yolun sahibi # aynı olmadıkça o yol açılmayacaktır. Ör. webuser kullanıcısı /etc"ye sembolik bağ verse bile, # /etc"nin sahibi root olduğu için /etc"nin içeriği Web sitesinden erişilemez olur. Options Indexes FollowSymLinks MultiViews
# Belli dizinlere .htaccess dosyası koyarak, o dizine şifreli erişim, belli adreslerden erişim gibi # kısıtlamalar getirebilirsiniz. Bu ayar .htaccess dosyalarında nelerin "override" edilebileceğini # söyler. Aşağıdakinin yanısıra "All", ya da "Options", "FileInfo", "AuthConfig", "Limit""in bir # kombinasyonu olabilir. AllowOverride None
# Bu sunucudan kimlerin dosya okumasına izin verildiği ayarı.
#Bütün adreslerden erişime izin ver... Order allow,deny Allow from all
# Sadece aşağıdaki IP bloğundan okumaya izin ver... #Order deny,allow #Allow from 193.140.83. #Deny from all </Directory>
# UserDir: Sistemdeki kullanıcıların kendi sayfalarına http://www.kurum.edu.tr/~kullanıcı_adı/ şeklinde # ulaşabilmeleri için ev dizinlerinde oluşturmaları gereken dizinin adı. <IfModule mod_userdir.c> UserDir public_html </IfModule> # Aşağıdaki satırla, Apache"nin çalışma esnasında, LD_LIBRARY_PATH ortam değişkeninini verilen şekliyle # kullanmasını belirtiyoruz. # Bu satır, kurulan bazı modüllerin kütüphanelerinin varsayılan olarak /usr/local/lib"e kurulması # ve Apache"nin varsayılanında /usr/local/lib"i yeralmaması nedeniyle gereklidir. <IfModule mod_env.c> SetEnv LD_LIBRARY_PATH /usr/local/lib:/lib:/usr/ucblib:/usr/openwin/lib </IfModule>
# Kullanıcı dizinlerine erişim hakları. Aşağıdaki ayarlar, bu dizinlere sadece-okuma (read-only) izni # verildiği bir örnektir. <Directory /home/*/public_html> AllowOverride FileInfo AuthConfig Limit Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec <Limit GET POST OPTIONS PROPFIND> Order allow,deny Allow from all </Limit> <LimitExcept GET POST OPTIONS PROPFIND> Order deny,allow Deny from all </LimitExcept> </Directory>
# DirectoryIndex: Dizin endeksleri (diğer bir deyişle varsayılan sayfa) için kullanılan dosya ya da # dosyaların adları. Birden fazla girdi arasında boşluk kullanınız. # Apache, istenen dizinde bu dosyalara verilen sırada bakar, ve bulduğu *ilkini* gönderir, # yani sıralama önemlidir. <IfModule mod_dir.c> DirectoryIndex index.ozeluzanti index.php index.php3 index.html index.htm </IfModule>
# AccessFileName: Dizinlerin altında erişim kontrol bilgilerinin tutulduğu dosya. # Ayrıca AllowOverride yönergesine bakınız. AccessFileName .htaccess
# Aşağıdaki satırlar, istemcilerin .htaccess dosyalarına doğrudan erişimini kısıtlar. Bu dosyaların # doğrulama bilgisi (şifre vb) gibi kritik bilgiler tutması nedeniyle, doğrudan erişimin kısıtlanması # gerekir. Bu dosyalara ancak Apache programının kendisi erişebilir. Bu davranışı istemiyorsanız, # aşağıdaki satırların başına # koyunuz. # Ayrıca, eğer yukarıda AccessFileName yönergesinde bu dosyalara farklı bir isim verdiyseniz, bu ayarı # da değiştiriniz. # Aşağıdaki ayar .ht"yle başlayan tüm dosyaları filtreler, yani, .htaccess"den başka (bazı sitelerin # kullandığı) .htpasswd, .htfiles gibi dosyaları da korur. <Files ~ "^\.ht"> Order allow,deny Deny from all </Files> # ozel.dosya ismindeki dosyaların sunucunun kendisi haricinde kimse tarafından okunmaması için. # Örneğin bir PHP programı sunucu tarafında çalıştığı için bu dosyaları okuyabilirken, istemciler # doğrudan bu dosyalara erişemezler. <Files ~ "^ozel\.dosya$"> Order allow,deny Deny from all </Files>
# CacheNegotiatedDocs: Varsayılanı, Apache"nin her sayfayla birlikte "Pragma: no-cache" göndermesidir. # Böylece "Cache/Proxy" (Önbellek/Vekil) sunucuları (ör. http://wwwcache.ulak.net.tr/) bu dosyaları # önbelleklemezler. Eğer bu davranışı istemiyorsanız, aşağıdaki satırın başındaki #"i kaldırınız. #CacheNegotiatedDocs
# UseCanonicalName: (Apache 1.3 ve yukarısı) Bu ayar açıldığı zaman, ne zaman Apache geri-referans # (self-referencing - cevabın geldiği sunucuyu gösteren) URL oluştursa, ServerName ve Port # yönergelerinden oluşturulan bir "Canonical" (yaklaşık olarak çözülmüş/gerçek denilebilir) isim # kullanır. # Bu ayar kapatıldığı zaman, Apache, istemcinin gönderdiği sunucuismi:port ikilisini kullanır. # Ayrıca bu ayar, CGI programlarındaki SERVER_NAME ve SERVER_PORT değişkenlerini de etkiler. UseCanonicalName On
# TypesConfig: MIME tiplerinin verildiği dosyanın nerede tutulduğunun ayarı. <IfModule mod_mime.c> TypesConfig /usr/local/apache/conf/mime.types </IfModule>
# DefaultType: Sunucu, dosya uzantısında MIME tipini bulamadığı zaman kullanacağı # varsayılan MIME tipidir. # Eğer sunucunuzda çoğunlukla metin ya da HTML dosyaları varsa, "text/plain" iyi bir değerdir. # Eğer çoğunlukla ikili (binary), ör. program ya da resim, dosyanız varsa, tarayıcıların istediği # dosyayı metin gibi göstermeye çalışmaması için, "application/octet-stream" kullanmak isteyebilirsiniz. DefaultType text/plain
# mod_mime_magic modülü, sunucunun dosyanın içeriğine bakarak dosya tipini bulabilmesini sağlar # (ör. UNIX"de resim dosyalarının uzantısının .gif, .jpg olması zorunlu değildir). # MIMEMagicFile yönergesi, mime_magic modülü için ipuçları dosyasının nerede tutulduğunu ayarlar. # Eğer yukarıdaki "Evrensel Ortam: DSO" bölümünde bu modülün LoadModule yönergesiyle yüklenmiş olması # gerekmektedir. # <IfModule> bu modülün gerektiği şekilde yüklenip yüklenmediğini kontrol eder, aksi takdirde # sunucu hata verir. <IfModule mod_mime_magic.c> MIMEMagicFile /usr/local/apache/conf/magic </IfModule>
# HostnameLookups: Sunucu kayıtlarında (logfiles) İstemcilerin (varsa) açık isimlerinin # (ör. descent.ulakbim.gov.tr) mi, yoksa sadece IP numaralarının (ör. 193.140.83.12) mı tutulacağı. # Varsayılanı "Off"dur çünkü tersi durumda her istek için DNS sunucusundan istemcinin varsa ismi # bulunmaya çalışılır. # Diğer bir deyişle, "Off" durumunda sunucunun tepki süresi iyileşir. # Ancak kayıtlarınızda istemcilerin tam adreslerini (FQDN) görmek isterseniz açın (On durumuna getirin), # güvenliğe destek olan cinsten bir yönergedir. HostnameLookups Off
|