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
- **Apache Paketini Kurma (DNF):** `httpd` paketini DNF paket yöneticisi ile kurun.
sudo dnf install httpd -y
- **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
- **Durum Kontrolü:** Servisin sorunsuz çalıştığını doğrulayın.
sudo systemctl status httpd
- **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ı
- **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.
- **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.
- **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
- **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
- **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
- **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
- **İ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
- **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
- **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.
- **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
- **Apache'yi Yeniden Başlatma:** Değişikliklerin geçerli olması için servisi yeniden başlatın:
sudo systemctl restart httpd
- **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 →