APACHE WEB SUNUCUSU (HTTPD) KURULUMU VE VIRTUAL HOST

CentOS/RHEL üzerinde Apache HTTP sunucusunun kurulumu, güvenliği (Firewalld ve SELinux) ile uyumu ve tek bir IP adresi üzerinden birden fazla web sitesini yayınlamak için Virtual Host konfigürasyonları.

Giriş: Apache HTTP Sunucusu (`httpd`), dünya genelinde en yaygın kullanılan web sunucularından biridir. Linux'ta web hizmetleri sunmak, uygulama barındırmak veya ters proxy (reverse proxy) görevi görmek için temel bileşendir.

Bölüm 1: Apache Kurulumu ve Servis Yönetimi

Kurulum ve Temel Servis Konfigürasyonu

  1. **Apache Paketini Kurma (DNF):** `httpd` paketini DNF paket yöneticisi ile kurun.
    sudo dnf install httpd -y
  2. **Servisi Başlatma ve Etkinleştirme (Systemctl):** Apache servisini başlatın ve sunucu açılışında otomatik başlamasını sağlayın.
    sudo systemctl start httpd
    sudo systemctl enable httpd
  3. **Durum Kontrolü:** Servisin sorunsuz çalıştığını doğrulayın.
    sudo systemctl status httpd
  4. **Firewall'da HTTP/HTTPS Portlarını Açma:** Eğer 7. Adımda yapmadıysanız, Firewalld'da 80 (HTTP) ve 443 (HTTPS) portlarını kalıcı olarak açın.
    sudo firewall-cmd --zone=public --add-service=http --permanent
    sudo firewall-cmd --zone=public --add-service=https --permanent
    sudo firewall-cmd --reload

İlk Test ve Dosya Yolları

  1. **Test Sayfasına Erişim:** Sunucunuzun IP adresini web tarayıcınıza yazarak Apache'nin varsayılan test sayfasının göründüğünü kontrol edin.
  2. **Varsayılan Dizin:** Apache'nin varsayılan kök dizini (DocumentRoot), genellikle `/var/www/html/` dizinidir. Tüm web içeriği buraya yerleştirilir.
  3. **Ana Konfigürasyon Dosyası:** Apache'nin tüm global ayarları `/etc/httpd/conf/httpd.conf` dosyasında bulunur.

Bölüm 2: Virtual Host (Sanal Sunucu) Konfigürasyonu

Virtual Host, tek bir Apache kurulumunda, IP adresine veya Alan Adına (Domain Name) göre farklı web siteleri yayınlamanızı sağlar.

Adım Adım Virtual Host Oluşturma

  1. **Virtual Host Konfigürasyon Dizinini Hazırlama:** Ana `httpd.conf` dosyasını karmaşıklaştırmamak için, sanal sunucu tanımlarını ayrı bir dizine koymak standart ve temiz bir yaklaşımdır.
    sudo mkdir /etc/httpd/conf.d/vhosts
  2. **Ana Konfigürasyonu Değiştirme:** `/etc/httpd/conf/httpd.conf` dosyasını açarak (vi/nano), Apache'nin yeni dizindeki ayar dosyalarını da okumasını sağlayın. Dosyanın sonuna ekleyin:
    # conf.d içindeki tüm .conf dosyalarını zaten okur. 
    # Sadece Virtual Host dizinini okumasını sağlamak için:
    IncludeOptional conf.d/vhosts/*.conf
  3. **Web Sitesi Kök Dizinini Oluşturma:** Yeni web sitesi için içerik dizinini oluşturun (Örn: `site1.com`).
    sudo mkdir -p /var/www/site1.com/public_html
  4. **İzinleri Ayarlama:** Apache kullanıcısının (`apache` veya `httpd`) bu dizine erişebilmesi için sahipliği ayarlayın (Kullanıcı Yönetimi - 4. Adım).
    sudo chown -R apache:apache /var/www/site1.com
    sudo chmod -R 755 /var/www/site1.com
  5. **SELinux Bağlamını Ayarlama:** SELinux'un Apache'nin bu yeni dizine erişimine izin vermesi için güvenlik bağlamını ayarlayın (SELinux Yönetimi - 8. Adım).
    sudo chcon -R -t httpd_sys_content_t /var/www/site1.com
  6. **Virtual Host Konfigürasyon Dosyasını Oluşturma:** `/etc/httpd/conf.d/vhosts/site1.com.conf` adında bir dosya oluşturun ve içine aşağıdaki konfigürasyonu girin.
    sudo vi /etc/httpd/conf.d/vhosts/site1.com.conf
    **`site1.com.conf` İçeriği:**
    <VirtualHost *:80>
        ServerAdmin webmaster@site1.com
        ServerName site1.com
        ServerAlias www.site1.com
        DocumentRoot /var/www/site1.com/public_html
        ErrorLog /var/log/httpd/site1.com_error.log
        CustomLog /var/log/httpd/site1.com_access.log combined
    </VirtualHost>

Bölüm 3: Son Kontrol ve Yayınlama

Konfigürasyonları uygulamadan önce syntax hatalarını kontrol edin ve servisi yeniden başlatın.

  1. **Apache Syntax Kontrolü:** Konfigürasyon dosyalarında herhangi bir yazım hatası olup olmadığını kontrol edin. Hata yoksa `Syntax OK` mesajı görünür.
    sudo apachectl configtest
  2. **Apache'yi Yeniden Başlatma:** Değişikliklerin geçerli olması için servisi yeniden başlatın:
    sudo systemctl restart httpd
  3. **DNS Kontrolü:** Web sitesine erişmek için, DNS sunucunuzda (veya yerel `hosts` dosyanızda) `site1.com` adresinin bu Linux sunucusunun IP adresini gösterdiğinden emin olun.
Kritik Uyarı (SELinux): Yeni bir dizin (`/var/www/site1.com/`) oluşturduğunuzda, Apache varsayılan olarak bu dizine erişemeyecektir. Mutlaka **Adım 12'deki `chcon` veya `semanage`** komutlarını kullanarak SELinux bağlamını ayarlayın. Aksi takdirde, tarayıcıda `403 Forbidden` hatası alırsınız.

← ÖNCEKİ: SSH & SELINUX | SONRAKİ: CRON OTOMASYON →