Apache, bir sunucuya gelen web isteklerini karşılayıp yanıt olarak sayfa gönderen web sunucusu yazılımıdır. Tam adı Apache HTTP Server’dır ve Apache Software Foundation tarafından geliştirilir. Buradaki ilk ayrım şudur: Apache sunucunun kendisi değil, sunucu üzerinde çalışan bir yazılımdır; barındırma paketinizde “Apache” yazması, size bir makine değil o makinede çalışan bir servis verildiği anlamına gelir.
İkinci sık karşılaşılan yanılgı Apache ile NGINX’in rakip sanılmasıdır. İkisi çoğu kurulumda birlikte çalışır: NGINX önde durup statik dosyaları verir, Apache arkada uygulamayı çalıştırır.
Aşağıda Apache’nin bir isteği nasıl karşıladığını, Apache Tomcat karışıklığının ne olduğunu, PHP’yi nasıl çalıştırdığını, .htaccess dosyasının neden Apache’ye özgü olduğunu ve NGINX’ten nerede ayrıldığını sırayla açıklıyoruz.
Apache nedir ve ne işe yarar?
Apache, bir sunucuya gelen web isteklerini karşılayıp yanıt olarak sayfa gönderen web sunucusu yazılımıdır. Sunucuda sürekli çalışır, belirlenen portları dinler ve gelen her isteğe bir yanıt üretir.
Yazılım 1990’ların ortasından beri geliştirilmektedir ve uzun yıllar internetteki sitelerin çoğunluğunu tek başına taşımıştır. Bugün payı azalmış olsa da paylaşımlı barındırmanın standart web sunucusu olmayı sürdürür; bunun sebebi teknik üstünlük değil, esnekliğidir. Kullanıcı başına ayrı yapılandırma yazılabilmesi, yüzlerce hesabın barındığı bir sunucuda çok işe yarar.
Apache tek başına çalışmaz; bir yazılım yığınının parçasıdır. Linux işletim sistemi, Apache web sunucusu, MySQL veri tabanı ve PHP yorumlayıcısının baş harfleri LAMP kısaltmasını verir ve paylaşımlı barındırmanın klasik kurulumu budur. Yığının nasıl kurulduğunu Linux Hosting Nedir? Windows Hostingden Farkı ve Doğru Paket Seçimi yazısında anlattık.
Apache’nin esnekliği modül yapısından gelir. Yazılımın çekirdeği yalnızca temel işi yapar; geri kalan yetenekler ayrı modüller olarak yüklenir. Yönlendirme kuralları, sıkıştırma, önbellek başlıkları ve kimlik doğrulama gibi işlevlerin her biri bir modülün sorumluluğundadır. Bir özelliğin sunucunuzda çalışmamasının sebebi çoğu zaman yapılandırma hatası değil, ilgili modülün yüklü olmamasıdır.
Paylaşımlı barındırmada hangi modüllerin açık olduğuna sağlayıcı karar verir ve bu liste genellikle panelde görülebilir. Yönlendirme kuralları için gereken modül neredeyse her sunucuda açıktır; buna karşılık daha az kullanılan modüller güvenlik ya da performans gerekçesiyle kapalı bırakılabilir. Bir yazılımın kurulum belgesinde “şu modül gereklidir” yazıyorsa, satın almadan önce sorulması gereken şey budur.

Apache bir isteği nasıl karşılar?
Bir sayfanın açılması dört adımda gerçekleşir:
- Tarayıcı isteği gönderir. Şifresiz bağlantılar 80, şifreli bağlantılar 443 numaralı porta gider.
- Apache hangi siteyi istediğinizi anlar. İsteğin başlığındaki
Hostbilgisine bakar ve o alan adına tanımlı yapılandırmayı bulur. - İstenen dosya değerlendirilir. Dosya statikse (görsel, stil dosyası) doğrudan gönderilir; PHP dosyasıysa yorumlayıcıya iletilir ve üretilen çıktı alınır.
- Yanıt gönderilir. Yanıtın başında bir HTTP durum kodu bulunur: 200 başarılı, 404 bulunamadı, 500 sunucu hatası.
İkinci adımdaki yapıya sanal konak (virtual host) denir. Tek bir Apache kurulumu, tek bir IP adresi üzerinden yüzlerce siteyi bu yöntemle ayırt eder. Adresin bu zincirdeki rolünü IP Adresi Nedir? Ne İşe Yarar ve Nasıl Bulunur? yazısında bulabilirsiniz.
Dördüncü adımdaki durum kodu, bir sorunun nerede olduğunu anlamanın en hızlı yoludur. 200 kodu isteğin karşılandığını, 301 ve 302 kodları yönlendirme yapıldığını, 403 erişimin reddedildiğini, 404 dosyanın bulunamadığını, 500 ise sunucunun isteği işlerken hata verdiğini söyler. İlk üç grup ile son grup arasındaki fark önemlidir: 4xx kodları isteğin kendisiyle, 5xx kodları sunucunun durumuyla ilgilidir.
Apache HTTP Server ile Apache Tomcat aynı şey midir?
Hayır. Apache Software Foundation, adını taşıyan onlarca ayrı yazılım projesi yürüten bir vakıftır ve bu projelerin birbiriyle teknik ilgisi yoktur.
Apache HTTP Server bir web sunucusudur ve bu yazının konusudur. Apache Tomcat ise Java uygulamalarını çalıştıran bir uygulama sunucusudur; PHP sitelerinde kullanılmaz. Apache Kafka ve Apache Spark, veri akışı ve büyük veri işleme projeleridir; web sunucusuyla hiçbir ortak yanları yoktur.
Ortak olan tek şey vakıf adıdır. “Sunucumda Apache var” cümlesi barındırma bağlamında her zaman Apache HTTP Server anlamına gelir.
Bu ayrım paket seçerken de işe yarar. Java tabanlı bir uygulamayı çalıştırmanız gerekiyorsa ihtiyacınız olan şey Apache HTTP Server bulunan bir paylaşımlı paket değil, Tomcat kurulabilen bir sunucudur. İki yazılımın adı benzediği için bu ihtiyaç sık sık yanlış anlaşılır ve paylaşımlı pakette Java uygulaması çalıştırmaya çalışılır.

Apache PHP’yi nasıl çalıştırır?
Apache, PHP dosyalarını kendisi yorumlamaz; işi bir yorumlayıcıya devreder. Bu devretmenin iki farklı yolu vardır ve aralarındaki fark, gündelik hayatta hiç beklenmedik yerlerde karşınıza çıkar.
mod_php. PHP, Apache’nin içine yüklenen bir modül olarak çalışır. Kurulumu basittir ve yapılandırma kolaydır; buna karşılık her Apache süreci PHP’yi de bellekte taşır, bu da yoğun trafikte bellek tüketimini artırır.- PHP-FPM. PHP ayrı bir servis olarak çalışır ve Apache istekleri ona iletir. Bellek kullanımı daha verimlidir, PHP sürümü alan adı bazında değiştirilebilir ve modern barındırmada standart yapılandırma budur.
Bu ayrımın en somut sonucu şudur: .htaccess dosyasının içine yazılan php_flag ve php_value satırları yalnızca mod_php ile çalışan sunucularda geçerlidir. PHP-FPM ile çalışan bir sunucuda aynı satırlar tanınmaz ve Apache o dizindeki her isteğe 500 hatası döndürür. Başka bir sunucudan taşınan sitelerin “hiçbir şey yapmadım, aniden 500 vermeye başladı” hatasının en sık sebebi budur. Bu hatanın diğer sebeplerini HTTP 500 Internal Server Hatası Nedir, Nasıl Çözülür? yazısında ele aldık.
PHP sürümünün panelden nasıl değiştirildiği ve hangi sürümlerin desteklendiği ayrı bir konudur; ayrıntısını PHP Hosting Nedir, Kimler İçin Uygundur? yazısında bulabilirsiniz.
.htaccess dosyası neden Apache’ye özgüdür?
.htaccess, Apache’nin dizin bazında yapılandırma okumasını sağlayan dosyadır. Apache, bir isteği karşılarken hedef dizine giden yol üzerindeki her klasörde bu dosyayı arar ve bulduklarını sırayla uygular.
Bu davranışın pratik sonucu büyüktür: paylaşımlı barındırmada kullanıcı, sunucunun ana yapılandırmasına dokunmadan kendi dizininde yönlendirme kuralı yazabilir, önbellek süresi tanımlayabilir, dizin listelemeyi kapatabilir. Sağlayıcı açısından da güvenlidir, çünkü bu dosyanın yetkisi o hesabın dizinini aşmaz.
Karşı tarafta NGINX bu dosyayı hiç okumaz; kurallar merkezi yapılandırmada tutulur ve değiştirmek için sunucu yöneticisi olmak gerekir. Bu yüzden .htaccess alışkanlığıyla NGINX’e geçen kullanıcılar, yönlendirmelerinin çalışmadığını görüp şaşırır.
Dosyanın bir maliyeti de vardır. Apache her istekte dizin ağacını tarayıp bu dosyayı aradığı için, çok sayıda küçük istek alan sitelerde ölçülebilir bir gecikme oluşur. Kendi sunucusunu yöneten kullanıcılar bu yüzden kuralları .htaccess yerine ana yapılandırmaya taşır ve dizin taramasını kapatır; paylaşımlı barındırmada ise bu esneklik zorunludur, çünkü kullanıcının ana yapılandırmaya erişimi yoktur.

Apache ile NGINX arasındaki fark nedir?
İki yazılım da aynı işi yapar, ama bunu farklı biçimde yapar. Fark üç noktada toplanır.
Bağlantı modeli. Apache klasik yapılandırmasında her istek için ayrı bir süreç ya da iş parçacığı ayırır. NGINX ise olay tabanlı çalışır: tek bir süreç binlerce bağlantıyı sırayla yönetir. Bu, çok sayıda eşzamanlı bağlantıda NGINX’e bellek avantajı sağlar.
Yapılandırma. Apache dizin bazında .htaccess okur ve kullanıcıya esneklik verir. NGINX merkezi yapılandırma kullanır; daha hızlıdır çünkü her istekte dosya araması yapmaz, ama son kullanıcıya kural yazma imkânı tanımaz.
Tipik rol. Çoğu modern kurulumda ikisi birlikte bulunur: NGINX önde durup gelen bağlantıları karşılar ve statik dosyaları doğrudan verir, dinamik istekleri arkadaki Apache’ye iletir. Yani ikisi rakip değil, aynı zincirin iki halkasıdır. Bu kurulumda ziyaretçinin gördüğü sunucu NGINX’tir; Apache dışarıdan hiç görünmez ve yalnızca kendisine iletilen dinamik istekleri işler. Paylaşımlı barındırmada da yaygın olan yapı budur, çünkü hem NGINX’in bağlantı verimliliğinden hem Apache’nin kullanıcı başına yapılandırma esnekliğinden aynı anda yararlanmayı sağlar. NGINX’in kendi başına ne yaptığını NGINX Nedir? Hangi Amaçla Kullanılır? yazısında ayrıntısıyla anlattık.
Windows bilgisayarda Apache nasıl çalışır?
Windows’ta Apache genellikle tek başına değil, hazır bir geliştirme paketi içinde kurulur. Bu paketler Apache, MySQL ve PHP’yi bir arada yükler ve bilgisayarınızı yerel bir sunucuya çevirir.
Amacın ne olduğunu netleştirmek gerekir: bu kurulum siteyi internete yayınlamak için değil, denemek içindir. Yerel Apache yalnızca kendi bilgisayarınızdan localhost adresiyle erişilebilir; dışarıdan kimse göremez. Siteyi yayına almak için barındırma gerekir. Yerel ortamın nasıl kurulduğunu Localhost Nedir? Nasıl Kurulur? yazısında bulabilirsiniz.
Yerel ortam ile sunucu arasındaki farklar taşımada ortaya çıkar. Yerel kurulumlarda dosya izinleri genellikle kontrol edilmez, büyük-küçük harf duyarlılığı Windows’ta yoktur ve PHP ayarları geliştirmeye uygun biçimde gevşek bırakılır. Aynı site sunucuya taşındığında bu üç fark birden devreye girer; “bilgisayarımda çalışıyordu” cümlesinin arkasındaki teknik sebep çoğu zaman bunlardan biridir.
Apache hakkında sık sorulan sorular
Hosting paketimde Apache kurulu mu?
Evet. Paylaşımlı Linux barındırma paketlerinde web sunucusu kurulu gelir; kullanıcının kurması gereken bir şey yoktur. Yapılandırmaya panel üzerinden ve .htaccess dosyasıyla dokunulur.
Kendi sanal ya da fiziksel sunucusunu yöneten kullanıcı için durum farklıdır: Apache’yi kurmak, güncellemek ve güvenlik yamalarını uygulamak onun sorumluluğundadır. Paylaşımlı ile sunucu arasındaki yetki farkını Linux Hosting Nedir? Windows Hostingden Farkı ve Doğru Paket Seçimi yazısında karşılaştırdık.
Apache ücretsiz midir?
Evet. Apache açık kaynaklıdır ve Apache Lisansı ile ücretsiz dağıtılır. Barındırma paketine ödediğiniz bedel yazılıma değil, sunucunun kaynağına, bakımına ve verilen hizmete gider.
Apache sitemi yavaşlatır mı?
Hayır. Sayfa hızını belirleyen şey web sunucusu yazılımının adı değil, pakete ayrılan işlemci ve bellek payı, kullanılan PHP sürümü ve devrede olan önbellek katmanlarıdır. Aynı sunucuda aynı site, PHP sürümü yükseltildiğinde ya da önbellek açıldığında belirgin biçimde hızlanır; web sunucusu değişmemiştir.
Bu yüzden doğru soru “Apache mi NGINX mi” değil, “paket bu sitenin yüküne yetiyor mu” olmalıdır. Önbellek katmanlarının nasıl çalıştığını Cache Nedir? Hostingte Cache Katmanları Nasıl Çalışır? yazısında anlattık; kaynak tarafında sınıra dayanıyorsanız Limitsiz Web Hosting Çözümleri sayfasındaki paketleri karşılaştırabilirsiniz.

