Sunucu Yönetimi & Linux

    Apache Web Sunucusu Kurulumu ve Yapılandırma

    Apache web sunucusunu kurup temel yapılandırmayla ilk sitenizi yayınlamanın adım adım rehberi.

    11 dk okuma Güncellendi: 10 Temmuz 2026

    Apache HTTP Server, internetin en eski ve en çok kullanılan web sunucularından biridir. Bir alan adına gelen ziyaretçi isteklerini karşılayan, HTML sayfalarını, resimleri ve PHP çıktılarını tarayıcıya ulaştıran arka plandaki motor budur. WordPress'ten kurumsal bir web uygulamasına kadar sayısız sitenin altında Apache çalışır; çünkü olgun, kararlı ve devasa bir eklenti ekosistemine sahiptir. Yıllarca sistem yönettikten sonra şunu rahatlıkla söyleyebilirim: Apache'yi doğru kurup temiz bir dizin düzeniyle yapılandırdığınızda, üzerine yıllarca sorunsuz siteler eklersiniz.

    Bu rehberde sıfırdan bir sunucuda Apache'yi kurmayı, iki büyük dağıtım ailesindeki (Ubuntu/Debian ve AlmaLinux/RHEL) yol ve komut farklarını, güvenlik duvarında gerekli portları açmayı, yapılandırma dosyalarının nerede durduğunu ve ilk sitenizi nasıl yayına aldığınızı adım adım göreceksiniz. Amaç sadece "çalışsın" demek değil; neyi neden yaptığınızı anlayarak kalıcı ve yönetilebilir bir kurulum bırakmak. Örnek komutları kendi sunucunuzda birebir çalıştırabilir, gerektiğinde kendi alan adınıza uyarlayabilirsiniz.

    Apache Nedir ve Ne Zaman Tercih Edilir?#

    Apache, gelen HTTP/HTTPS isteklerini dinleyen, istenen dosyayı veya uygulama çıktısını istemciye döndüren bir web sunucusu yazılımıdır. En güçlü yanı modüler mimarisidir: mod_rewrite ile URL yönlendirme, mod_ssl ile HTTPS, mod_php veya PHP-FPM ile dinamik içerik gibi yetenekleri modül olarak ekler ya da çıkarırsınız. Bir diğer öne çıkan özelliği .htaccess dosyalarıdır; dizin bazında ayar yapmanıza izin verdiği için özellikle paylaşımlı hosting ve WordPress dünyasında Apache'yi vazgeçilmez kılar.

    Peki her senaryoda Apache mi kullanmalı? Kısa cevap: hayır, duruma göre değişir. Yüksek eşzamanlı bağlantı ve statik içerik ağırlıklı işlerde Nginx daha hafif davranabilir; buna karşılık .htaccess esnekliği, geniş modül yelpazesi ve klasik LAMP yığınına uyumu gereken projelerde Apache hâlâ çok mantıklıdır. İkisini teknik olarak karşılaştıran ayrıntılı bir yazı için Apache ile Nginx karşılaştırması makalemize göz atabilirsiniz. Nginx'i denemek isterseniz Ubuntu'da Nginx kurulumu rehberimiz de hazır.

    Kurulum Öncesi Hazırlık ve Sistem Güncellemesi#

    Kuruluma geçmeden önce sunucunuza sudo yetkili bir kullanıcıyla SSH ile bağlanın ve paket listelerini güncelleyin. Güncel bir sistem, bilinen güvenlik açıklarını ve paket çakışmalarını baştan eler. Ubuntu/Debian tarafında paket yöneticisi apt, AlmaLinux/RHEL tarafında ise dnf'tir.

    Ubuntu veya Debian kullanıyorsanız:

    sudo apt update && sudo apt upgrade -y
    

    AlmaLinux, Rocky Linux, CentOS Stream veya RHEL kullanıyorsanız:

    sudo dnf update -y
    

    Bir diğer önemli hazırlık, bu sunucunun 80 numaralı portunu başka bir servisin tutmadığından emin olmaktır. Örneğin sistemde daha önce Nginx kuruluysa Apache 80 portuna bağlanamaz. Aşağıdaki komutla portu kimin dinlediğini kontrol edebilirsiniz:

    sudo ss -tlnp | grep ':80'
    

    Çıktı boşsa yolunuz açık demektir. Eğer temiz bir sunucu değil de mevcut bir sistemde çalışıyorsanız, kuruluma başlamadan bir yedek almanız isabetli olur; düzenli yedekleme stratejisi için yedekleme hizmetimizi inceleyebilirsiniz.

    Ubuntu/Debian'da Apache (apache2) Kurulumu#

    Debian ailesinde Apache paketinin adı apache2'dir. Tek komutla kurulur ve kurulumun ardından servis otomatik olarak başlatılıp önyükleme sırasına eklenir:

    sudo apt install apache2 -y
    

    Kurulum bittiğinde servisin ayakta olup olmadığını doğrulayın:

    systemctl status apache2
    

    active (running) ifadesini görüyorsanız her şey yolunda. Şimdi tarayıcıdan sunucunuzun IP adresine gidin (http://SUNUCU_IP); Ubuntu'nun varsayılan "Apache2 Ubuntu Default Page" karşılama sayfasıyla karşılaşmalısınız. Bu sayfa, dosya sisteminde /var/www/html/index.html konumundan sunulur.

    Debian dünyasında dikkat edilmesi gereken önemli bir ayrıntı, yapılandırma yönetiminin a2ensite, a2dissite, a2enmod, a2dismod yardımcı komutlarıyla yapılmasıdır. Bu komutlar sites-available ve mods-available klasörlerindeki dosyalara sembolik bağlantı oluşturarak siteleri veya modülleri etkinleştirir. Örneğin mod_rewrite modülünü açmak için:

    sudo a2enmod rewrite
    sudo systemctl reload apache2
    

    AlmaLinux/RHEL'de Apache (httpd) Kurulumu#

    Red Hat ailesinde ise paketin ve servisin adı httpd'dir. Debian'daki apache2 ile aynı yazılımdır; sadece paketleme geleneği farklıdır. Kurulum dnf ile yapılır:

    sudo dnf install httpd -y
    

    Debian'ın aksine RHEL tarafında servis kurulumdan sonra otomatik başlamaz; el ile başlatıp önyüklemeye eklemeniz gerekir:

    sudo systemctl start httpd
    sudo systemctl enable httpd
    

    Ardından durumu kontrol edin:

    systemctl status httpd
    

    RHEL ailesinde bir başka fark, a2ensite gibi yardımcı komutların bulunmamasıdır. Site tanımlarınızı doğrudan /etc/httpd/conf.d/ klasörüne .conf uzantılı dosyalar olarak koyarsınız; Apache bu klasördeki tüm .conf dosyalarını otomatik yükler. Ayrıca AlmaLinux/RHEL'de SELinux varsayılan olarak etkindir. Web köküne standart dışı bir dizin kullanacaksanız (/var/www/html haricinde) SELinux bağlamını ayarlamanız gerekebilir; aksi halde Apache dosyaları okuyamaz. Bu tür ince noktaları tek tek kurcalamak istemiyorsanız, sunucu yönetimi hizmetimiz ekibimizin bu işleri sizin adınıza üstlenmesini sağlar.

    İki dağıtım ailesindeki temel farkları tek bakışta görmek için aşağıdaki tabloyu kullanabilirsiniz:

    KonuUbuntu / DebianAlmaLinux / RHEL
    Paket adıapache2httpd
    Paket yöneticisiaptdnf
    Servis adıapache2httpd
    Ana yapılandırma/etc/apache2/apache2.conf/etc/httpd/conf/httpd.conf
    Site tanımları/etc/apache2/sites-available//etc/httpd/conf.d/
    Site etkinleştirmea2ensite / a2dissiteDoğrudan conf.d'ye dosya
    Varsayılan web kökü/var/www/html/var/www/html
    Çalışan kullanıcıwww-dataapache
    Kurulumda otomatik başlarEvetHayır (el ile enable)

    Güvenlik Duvarında HTTP/HTTPS Portlarını Açmak#

    Apache çalışıyor ama dışarıdan siteye erişemiyorsanız suçlu genelde güvenlik duvarıdır. Web trafiği 80 (HTTP) ve 443 (HTTPS) portları üzerinden akar; bu portları açmadan sitenize internetten ulaşılamaz. Kullandığınız güvenlik duvarı aracı dağıtıma göre değişir.

    Ubuntu'da genellikle UFW aktiftir. Apache'nin UFW için hazır uygulama profilleri gelir:

    sudo ufw allow 'Apache Full'
    sudo ufw reload
    

    Apache Full profili 80 ve 443'ü birlikte açar. Sadece HTTP açmak isterseniz Apache profilini, sadece HTTPS için Apache Secure profilini kullanabilirsiniz. Mevcut kuralları sudo ufw status ile görebilirsiniz.

    AlmaLinux/RHEL tarafında ise firewalld kullanılır. HTTP ve HTTPS servislerini kalıcı olarak açıp güvenlik duvarını yeniden yükleyin:

    sudo firewall-cmd --permanent --add-service=http
    sudo firewall-cmd --permanent --add-service=https
    sudo firewall-cmd --reload
    

    Bir noktayı hatırlatmakta fayda var: eğer sunucunuz bir bulut sağlayıcısında ise, işletim sistemi güvenlik duvarına ek olarak sağlayıcı panelindeki ağ güvenlik grubu (security group) kurallarını da açmanız gerekebilir. İki katmandan biri kapalıysa trafik yine geçmez. Sunucunuzu yeni kuruyorsanız VDS veya sanal sunucu paketlerimizde bu ağ ayarlarına panelden kolayca erişebilirsiniz.

    Dizin Yapısı ve Yapılandırma Dosyaları#

    Apache'yi rahat yönetmenin sırrı, dosyaların mantığını kavramaktır. Debian ailesinde yapılandırma modüler bir klasör düzenine bölünmüştür ve apache2.conf bu parçaları Include yönergeleriyle birleştirir. Başlıca klasörler ve görevleri şöyledir:

    /etc/apache2/
    ├── apache2.conf          # Ana yapılandırma, diğerlerini içeri alır
    ├── ports.conf            # Dinlenen portlar (Listen 80, Listen 443)
    ├── sites-available/      # Tanımlı tüm site (vhost) dosyaları
    ├── sites-enabled/        # Etkin sitelere sembolik bağlantılar
    ├── mods-available/       # Kurulu tüm modüller
    ├── mods-enabled/         # Etkin modüllere sembolik bağlantılar
    └── conf-available/       # Genel amaçlı ek yapılandırma parçaları
    

    Mantık şudur: bir dosyayı sites-available içinde tanımlarsınız ama a2ensite ile sites-enabled içine bağlanmadıkça devreye girmez. Bu ayrım, bir siteyi silmeden geçici olarak devre dışı bırakmanıza olanak tanır. RHEL ailesinde ise düzen daha yalındır; her şey httpd.conf ve conf.d altında toplanır:

    /etc/httpd/
    ├── conf/httpd.conf       # Ana yapılandırma
    ├── conf.d/               # Site ve ek yapılandırmalar (*.conf)
    └── conf.modules.d/       # Modül yükleme tanımları
    

    Hangi dağıtımda olursanız olun, bir yapılandırma değişikliği yaptıktan sonra servisi yeniden yüklemeden önce sözdizimini test etme alışkanlığı kazanın. Bu tek komut, sizi hatalı bir ayar yüzünden sunucunun ayağa kalkmamasından kurtarır:

    # Debian ailesi
    sudo apache2ctl configtest
    
    # RHEL ailesi
    sudo apachectl configtest
    

    Çıktıda Syntax OK görüyorsanız güvenle devam edebilirsiniz.

    systemctl ile Servis Yönetimi#

    Apache'yi günlük olarak systemctl ile yönetirsiniz. Komutlar iki ailede aynıdır; yalnızca servis adı apache2 veya httpd olarak değişir. En sık kullanacağınız işlemler şunlardır:

    # Başlat
    sudo systemctl start apache2
    
    # Durdur
    sudo systemctl stop apache2
    
    # Yeniden başlat (bağlantıları keser)
    sudo systemctl restart apache2
    
    # Yumuşak yeniden yükleme (mevcut bağlantıları kesmeden ayarları uygular)
    sudo systemctl reload apache2
    
    # Önyüklemede otomatik başlasın
    sudo systemctl enable apache2
    
    # Durum ve son log satırları
    systemctl status apache2
    

    Buradaki en kritik ayrım restart ile reload arasındadır. restart servisi tamamen durdurup yeniden başlatır ve o anki tüm bağlantıları koparır; canlı bir sitede küçük de olsa bir kesinti yaratır. reload ise Apache'ye "yapılandırmayı tazele ama çalışmaya devam et" der ve açık bağlantıları etkilemez. Sadece bir ayar dosyasını güncellediyseniz, refleks olarak reload kullanın.

    Bir şeyler ters gittiğinde ilk bakacağınız yer log dosyalarıdır. Apache erişim ve hata kayıtlarını Debian'da /var/log/apache2/, RHEL'de /var/log/httpd/ altında tutar. Sorun anında hata logunu canlı izlemek çok işe yarar:

    sudo tail -f /var/log/apache2/error.log
    

    İlk Sitenizi Yayınlamak (DocumentRoot ve Virtual Host)#

    Şimdi eğlenceli kısma geldik: kendi sitenizi yayınlamak. Apache, hangi alan adı için hangi klasörü sunacağını Virtual Host (sanal konak) tanımlarıyla bilir. DocumentRoot, o sitenin dosyalarının bulunduğu kök dizindir. Tek sunucuda birden çok siteyi bu şekilde yan yana barındırabilirsiniz.

    Önce siteniz için bir web kök klasörü oluşturup basit bir açılış sayfası koyalım. orneksite.com alan adını kendi alan adınızla değiştirin:

    sudo mkdir -p /var/www/orneksite.com/public_html
    echo "<h1>orneksite.com yayinda!</h1>" | sudo tee /var/www/orneksite.com/public_html/index.html
    

    Debian ailesinde dosyaların Apache kullanıcısı tarafından okunabilmesi için sahipliği ve izinleri düzenleyin:

    sudo chown -R www-data:www-data /var/www/orneksite.com
    sudo chmod -R 755 /var/www/orneksite.com
    

    Şimdi sanal konak dosyasını oluşturalım. Debian'da bu dosya /etc/apache2/sites-available/orneksite.com.conf yolunda durur:

    <VirtualHost *:80>
        ServerName orneksite.com
        ServerAlias www.orneksite.com
        DocumentRoot /var/www/orneksite.com/public_html
    
        <Directory /var/www/orneksite.com/public_html>
            Options -Indexes +FollowSymLinks
            AllowOverride All
            Require all granted
        </Directory>
    
        ErrorLog ${APACHE_LOG_DIR}/orneksite_error.log
        CustomLog ${APACHE_LOG_DIR}/orneksite_access.log combined
    </VirtualHost>
    

    Buradaki AllowOverride All satırı, o dizindeki .htaccess dosyalarının etkin olmasını sağlar ki WordPress kalıcı bağlantıları gibi özellikler bu sayede çalışır. Options -Indexes ise klasör içeriğinin dizin olarak listelenmesini kapatarak küçük bir güvenlik önlemi ekler. Dosyayı kaydettikten sonra siteyi etkinleştirip Apache'yi yeniden yükleyin:

    sudo a2ensite orneksite.com.conf
    sudo apache2ctl configtest
    sudo systemctl reload apache2
    

    RHEL ailesinde ise aynı <VirtualHost> bloğunu doğrudan /etc/httpd/conf.d/orneksite.com.conf dosyasına yazarsınız; a2ensite adımı yoktur, log yolunda ${APACHE_LOG_DIR} yerine /var/log/httpd/ kullanın ve sahiplik için www-data yerine apache kullanıcısını verin. Yerel testte alan adınız henüz DNS'e bağlı değilse, kendi bilgisayarınızın hosts dosyasına SUNUCU_IP orneksite.com satırını ekleyerek siteyi görebilirsiniz. Alan adınızı gerçekten yönlendirmek için ise alan adının A kaydını sunucu IP'nize işaret etmelisiniz; alan adı almadıysanız domain sayfamızdan bir tane edinebilirsiniz.

    Güvenlik, HTTPS ve Sonraki Adımlar#

    Temel kurulum bittiğinde iş bitmiş sayılmaz; siteyi üretim ortamına açmadan önce birkaç sağlamlaştırma adımı gerekir. İlk iş, Apache'nin sürüm bilgisini ve işletim sistemi ayrıntısını yanıt başlıklarında sızdırmasını engellemektir. Ana yapılandırmaya (ya da conf-available/security.conf içine) şu satırları ekleyin:

    ServerTokens Prod
    ServerSignature Off
    TraceEnable Off
    

    İkinci ve olmazsa olmaz adım HTTPS'tir. Günümüzde şifresiz HTTP ile yayın yapmak hem güvenlik hem SEO açısından kabul edilemez. Ücretsiz Let's Encrypt sertifikası kurmanın en pratik yolu Certbot'tur:

    # Ubuntu
    sudo apt install certbot python3-certbot-apache -y
    sudo certbot --apache -d orneksite.com -d www.orneksite.com
    

    Certbot sertifikayı alır, <VirtualHost *:443> bloğunu sizin için oluşturur ve HTTP'den HTTPS'e yönlendirmeyi kurar. Kurumsal düzeyde doğrulama gerektiren sertifikalar veya wildcard ihtiyacı için SSL sertifikası hizmetimizi değerlendirebilirsiniz. Sunucunuzu kaba kuvvet ve uygulama katmanı saldırılarına karşı korumak istiyorsanız WAF ve DDoS koruma çözümlerimiz devreye girer.

    Son olarak, Apache'yi bir WordPress veya PHP uygulaması için kullanıyorsanız mod_php yerine PHP-FPM ile eşleştirmek performansı belirgin biçimde artırır; ayrıca mod_deflate ile sıkıştırma ve mod_expires ile tarayıcı önbelleği başlıkları ekleyerek sayfa yükleme sürelerini kısaltabilirsiniz. WordPress'e özel bakım ve optimizasyon için WordPress bakım hizmetimize göz atabilir, tüm bu altyapıyı sizin yerinize kurup yönetmemizi isterseniz web hosting paketlerimizi inceleyebilirsiniz.

    Sıkça Sorulan Sorular#

    apache2 ve httpd aynı yazılım mı?#

    Evet, ikisi de tamamen aynı Apache HTTP Server yazılımıdır; yalnızca paketleme geleneği farklıdır. Debian ve Ubuntu bu paketi apache2 adıyla dağıtırken, Red Hat, AlmaLinux, Rocky ve CentOS ailesi aynı yazılımı httpd adıyla sunar. Servis adı, yapılandırma klasörleri ve çalışan kullanıcı adı da bu isimlendirmeye göre değişir, ama işlevsel olarak birebir aynı sunucuyu çalıştırırsınız.

    Apache kurulumundan sonra siteye erişemiyorum, ne yapmalıyım?#

    Öncelikle sorunu katman katman daralttığınızda çözüm hızla ortaya çıkar. systemctl status ile servisin gerçekten çalıştığını, sudo ss -tlnp | grep ':80' ile 80 portunu Apache'nin dinlediğini doğrulayın. Bunlar tamamsa büyük ihtimalle güvenlik duvarı kapalıdır; UFW'de Apache Full profilini veya firewalld'de http/https servislerini açın. Bulut sunucusu kullanıyorsanız sağlayıcı panelindeki ağ güvenlik grubu kurallarını da kontrol etmeyi unutmayın.

    Bir sunucuda birden fazla site barındırabilir miyim?#

    Kesinlikle, bu Apache'nin en güçlü yönlerinden biridir. Her alan adı için ayrı bir Virtual Host bloğu tanımlar, her birine kendi DocumentRoot klasörünü ve ServerName değerini verirsiniz. Apache gelen isteğin Host başlığına bakarak doğru siteyi seçer. Bu yönteme isim tabanlı sanal konak (name-based virtual hosting) denir ve tek IP üzerinde onlarca siteyi rahatça barındırabilirsiniz.

    restart ile reload arasındaki fark nedir?#

    Bu ayrım canlı sitelerde çok önemlidir. restart komutu Apache'yi tamamen durdurup yeniden başlatır ve o an açık olan tüm bağlantıları koparır, yani kısa bir kesinti oluşur. reload ise servisi durdurmadan yapılandırmayı yeniden okur ve mevcut bağlantıları etkilemez. Yalnızca bir ayar dosyasını değiştirdiyseniz reload kullanmalısınız; restart yalnızca modül ekleme gibi köklü değişikliklerde gereklidir.

    .htaccess dosyası neden çalışmıyor?#

    Bunun en yaygın sebebi ilgili dizin için AllowOverride yönergesinin None olarak ayarlanmış olmasıdır. Virtual Host içindeki <Directory> bloğunda AllowOverride All tanımlı değilse Apache .htaccess dosyalarını görmezden gelir. Ayrıca yeniden yazma kuralları için mod_rewrite modülünün etkin olması gerekir; Debian'da sudo a2enmod rewrite komutuyla açıp servisi yeniden yükledikten sonra kurallarınız çalışmaya başlar.

    Apache mı Nginx mi kullanmalıyım?#

    İhtiyacınıza bağlı olarak ikisi de doğru cevap olabilir. .htaccess esnekliği, geniş modül ekosistemi ve klasik PHP/WordPress uyumu önceliğinizse Apache çok uygundur. Çok yüksek eşzamanlı bağlantı ve statik içerik dağıtımı ön plandaysa Nginx daha az bellekle daha iyi ölçeklenebilir. Birçok profesyonel kurulumda ise ikisi birlikte, Nginx ters vekil ve Apache arka uç olacak biçimde kullanılır. Kararınızı netleştirmek için Apache ile Nginx karşılaştırma yazımızı okumanızı öneririm.

    Kapanış#

    Buraya kadar geldiyseniz artık temiz, yönetilebilir bir Apache kurulumuna sahipsiniz: paket kuruldu, servis systemctl ile kontrol altında, güvenlik duvarı portları açık, dizin yapısı ve yapılandırma dosyalarının mantığı oturmuş, ilk siteniz de bir Virtual Host ile yayında. Bundan sonrası HTTPS'i kalıcı hale getirmek, önbellek ve sıkıştırma modüllerini eklemek ve düzenli yedek almakla ilgili tekrarlanabilir bir bakım rutinine dönüşür.

    Tüm bu adımlarla tek tek uğraşmak yerine altyapıyı hazır ve yönetilir teslim almak isterseniz Clou.TR yanınızda. Kendi sunucunuzu kontrol etmek için VDS ve sanal sunucu paketlerimize, uygulamalarınızı zahmetsiz yayınlamak için web hosting ve WordPress hosting çözümlerimize, kurulum ve sürekli bakımı bize bırakmak için de sunucu yönetimi hizmetimize göz atabilirsiniz. Doğru temel üzerine kurulan bir web sunucusu, yıllarca sizi yormadan çalışır.

    ApacheWeb SunucuLinux

    Uygulamaya geçmeye hazır mısınız?

    NVMe SSD, ücretsiz SSL ve %99.9 uptime garantisiyle Clou.TR hosting ve sunucu çözümleriyle projenizi hayata geçirin.