# Apache HTTP Sunucusu 2.2’de Yeni olan Özellikler

Bu belgede Apache HTTP Sunucusunun 2.0 ve 2.2 sürümleri arasındaki başlıca farklara değinilmiştir. 1.3 sürümüne göre yeni özellikler için Apache 2.0’da Yeni olan Özellikler belgesine bakınız.

# Çekirdekteki Gelişmeler

Authn/Authz
  Mevcut kimlik doğrulama ve yetkilendirme modüllerinin iç işleyişi yeniden düzenlendi. Yeni `mod_authn_alias` modülü (2.3/2.4 sürümlerinde kaldırılmıştır) belli kimlik doğrulama yapılandırmalarını büyük oranda basitleştirebilir. Bu değişikliklerin kullanıcıları ve modül yazarlarını nasıl etkilediğini öğrenmek için modül değişikliklerine ve geliştirici değişikliklerine bakabilirsiniz.
Önbellekleme
  mod_cache
  , mod_cache_disk ve `mod_mem_cache` (2.3/2.4 sürümlerinde kaldırılmıştır) modüllerinde büyük oranda değişikliğe gidilerek bunlar deneysel olmaktan çıkarılıp üretim amaçlı modüller haline getirildiler. mod_cache_disk tarafından kullanılan disk alanının htcacheclean tarafından düzenli aralıklarla temizlenebilmesi sağlandı.
Yapılandırma
  Öntanımlı yapılandırma basitleştirildi ve modüler bir yapıya kavuşturuldu. Sık kullanılan ortak özellikleri etkinleştirmekte kullanılan yapılandırmalar gruplanarak bunların Apache ile gelmesi ve ana sunucu yapılandırılırken yapılandırmaya kolayca eklenebilmesi sağlandı.
Nazikçe Durdurma
  prefork
  , worker ve event MPM’leri artık httpd’yi `graceful-stop` sinyali sayesinde nazikçe durdurabilmektedir. httpd programının sonlandırılmasındaki gecikmelere karşı bir önlem olarak, isteğe bağlı bir zaman aşımı belirtmeyi mümkün kılan GracefulShutdownTimeout yönergesi sayesinde sunum sürüyor olsa bile httpd sonlandırılabilmektedir.
Vekil Sunucu
  Yeni mod_proxy_balancer modülü ile mod_proxy için yük dengeleme hizmetleri sağlanmış, yeni mod_proxy_ajp modülü ile Apache Tomcat tarafından kullanılan Apache JServ Protokolünün 1.3 sürümü için destek eklenmiştir.
Düzenli İfade Kütüphanesi Güncellemesi
  Apache, Perl uyumlu düzenli ifade kütüphanesinin 5.0 sürümünü (PCRE) içermektedir. configure betiğinin `--with-pcre` seçeneği sayesinde httpd programı PCRE destekli olarak derlenebilmektedir.
Akıllı Süzme
  mod_filter
  çıktı süzgeç zincirinin devingen olarak yapılandırılmasını sağlar. Süzgeçlerin herhangi bir istek veya yanıt başlığına veya bir ortam değişkenine dayanarak koşullu olarak yerleştirilmesini mümkün kılar ve bunu yaparken 2.0 mimarisindeki sorunlu bağımlılıklar ve sıralama sorunlarının da üstesinden gelir.
Büyük Dosya (>2GB) Desteği
  httpd
  artık günümüzün 32 bitlik Unix sistemlerinde bulunan 2 GB’lık büyük dosyaları destekleyecek tarzda derlenebilmektedir. 2 GB’lık istek gövdelerine destek de ayrıca eklenmiştir.
Event MPM
  event
  MPM modülü sürekli bağlantı isteklerinin işlenmesi ve bağlantıların kabul edilmesi için ayrı bir evre kullanır. Sürekli bağlantı (keepalive) isteklerinin işlenmesi geleneksel olarak httpd’nin buna bir worker adamasını gerektirirdi. Bu adanmış worker bağlantı zaman aşımına uğrayıncaya değin tekrar kullanılamazdı.
SQL Veritabanı Desteği
  mod_dbd
  modülü `apr_dbd` arayüzü ile birlikte, ihtiyacı olan modüllere SQL desteği sağlar. Evreli MPM’ler için bağlantı havuzlamasını destekler.

# Modüllerdeki Gelişmeler

Authn/Authz
  Kimlik Doğrulama, Yetkilendirme ve Erişim Denetimi ile ilgili modüller özetli kimlik doğrulamasına daha iyi destek sağlamak amacıyla yeniden isimlendirildi. Örneğin, `mod_auth` modülü şimdi mod_auth_basic ve mod_authn_file diye iki modüle bölünmüştür.; `mod_auth_dbm` modülünün ismi mod_authn_dbm ve `mod_access` modülünün ismi de mod_authz_host olarak değiştirilmiştir. Ayrıca, belli kimlik doğrulama yapılandırmalarını basitleştirmek üzere `mod_authn_alias` diye yeni bir modül vardır (2.3/2.4 sürümlerinde kaldırılmıştır).
mod_authnz_ldap
  Bu modül 2.0 sürümü `mod_auth_ldap` modülünün 2.2 `Authn/Authz` arayüzüne bir uyarlamasıdır. Require yönergesine LDAP öznitelik değerlerinin ve karmaşık arama süzgeçlerinin kullanımı gibi yeni özellikler eklenmiştir.
mod_authz_owner
  Dosya sistemi üzerindeki dosyalara erişimi dosya sahibine göre düzenleyebilmeyi sağlayan yeni bir modüldür.
mod_version
  Çalışan sunucunun sürüm numarasına göre belli yapılandırma bloklarını etkinleştirebilen bir modüldür.
mod_info
  Apache tarafından çözümlenen haliyle yapılandırma yönergelerinin gösterilmesini sağlayan yeni `?config` parametresini ekler. Modül ayrıca, `httpd -V`’nin yaptığı gibi ek olarak derleme bilgisini ve tüm istek kancalarının sırasını da gösterir.
mod_ssl
  TLS şifrelemesini HTTP/1.1 için güncelleyen RFC 2817 için destek sağlar.
mod_imagemap
  `mod_imap` modülünün ismi yanlış anlamalara meydan vermemek için mod_imagemap olarak değiştirildi.

# Programlardaki Gelişmeler

httpd
  Mevcut yapılandırmaya göre yüklenen modülleri listelemek için `-M` diye yeni bir komut satırı seçeneği eklendi. `-l` seçeneğinin aksine, bu seçenekle elde edilen liste mod_so üzerinden yüklenen DSO’ları içerir.
httxt2dbm
  RewriteMap
  yönergesinde `dbm` eşlem türü ile kullanmak üzere metin girdilerden DBM dosyaları üretmek için kullanılan yeni bir program.

# Modül Geliştirici Değişiklikleri

APR
1.0 Programlama Arayüzü
  Apache 2.2’de APR 1.0 API kullanılmıştır. Kullanımı önerilmeyen tüm işlevler ve simgeler `APR` ve `APR-Util`’den kaldırılmıştır. Ayrıntılar için APR Sitesine bakınız.
Authn/Authz
  Dağıtımla gelen kimlik doğrulama ve yetkilendirme modüllerinin isimleri aşağıdaki gibi değiştirildi:
  - `mod_auth_*` -> HTTP kimlik doğrulamasını gerçekleştiren modüller.
  - `mod_authn_*` -> Kimlik doğrulamasının artalanına destek sağlayan modüller.
  - `mod_authz_*` -> Yetkilendirmeyi (veya erişimi) gerçekleştiren modüller.
  - `mod_authnz_*` -> Kimlik doğrulama ve yetkilendirmeyi birlikte gerçekleştiren modüller.
  Yeni kimlik doğrulama artalanının oluşturulmasını büyük oranda kolaylaştıran yeni bir kimlik doğrulama artalanı sağlayıcı şeması vardır.
Bağlantı Hatalarının Günlüklenmesi
  İstemci bağlantısında ortaya çıkan hataları günlüğe kaydetmek için `ap_log_cerror` isminde yeni bir işlev eklendi. Böyle bir durumda günlük kaydı istemcinin IP adresini içermektedir.
Deneme Yapılandırma Kancası Eklendi
  Kullanıcı, httpd’yi sadece `-t` seçeneği ile kullandığı takdirde özel kod icra edilmesini isteyen modüllere yardımcı olmak üzere `test_config` diye yeni bir kanca işlev eklendi.
Evreli MPM’lerin Yığıt Boyutunun Ayarlanması
  Tüm evreli MPM’lerin yığıt boyutunu ayarlamak üzere ThreadStackSize isminde yeni bir yönerge eklendi. Öntanımlı yığıt boyutunun küçük olduğu platformlarda bazı üçüncü parti modüller tarafından buna ihtiyaç duyulmaktadır.
Çıktı süzgeçlerinde protokoller
  Evvelce her süzgeç etkilediğini yanıt başlıklarının doğru olarak üretilmesini sağlamak zorundaydı. Süzgeçler artık protokol yönetimini `ap_register_output_filter_protocol` veya `ap_filter_protocol` işlevi üzerinden mod_filter modülüne devredebilmektedir.
İzleme kancası eklendi
  İzleme kancası, modüllerin ana (tepe) süreçteki sıradan/zamanlanmış işlerini yapacak modülleri etkinleştirir.
Düzenli ifade programlama aryüzü değişti
  `pcreposix.h` başlık dosyası artık yok; yerine `ap_regex.h` dosyası geçti. Eski başlık dosyasınca ifade olunan POSIX.2 `regex.h` gerçeklenimi şimdi `ap_` isim alanı altında `ap_regex.h` başlık dosyasındadır. `regcomp`, `regexec` gibi işlevlerin yerine de artık `ap_regcomp`, `ap_regexec` işlevleri geçerlidir.
DBD Arayüzü (SQL Veritabanı API)

  Apache 1.x ve 2.0’da, modüller, SQL veritabanlarını kendileri yönetebilmek için sorumluluğu alacak bir SQL artalanına ihtiyaç duymaktadır. Her biri kendi bağlantısına sahip bir sürü modül olduğunda bu yöntem çok verimsiz olabilmektedir.

  Apache 2.1 ve sonrasında veritabanı bağlantılarını (evreli olsun olmasın MPM’lerin eniyilenmiş stratejileri dahil) yönetmek için `ap_dbd` arayüzü kullanılmıştır. APR 1.2 ve sonrasında ise veritabanı ile etkileşim `apr_dbd` arayüzüyle sağlanmıştır.

  Yeni modüllerin tüm SQL veritabanı işlemlerinde bu arayüzü kullanmaları ÖNERİlir. Mevcut uygulamaların uygulanabildiği takdirde hem kullanıcılarına önerilen bir seçenek olarak hem de şeffaf olarak kullanmak üzere kendilerini güncellemeleri ÖNERİir.