Apache Web Sunucusunda Sanal Host (VirtualHost) Kurulumu
Apache Web Sunucusunda Sanal Host (VirtualHost) Kurulumu
Apache, açık kaynaklı en popüler web sunucularından biridir. Birden fazla web sitesini tek bir sunucu üzerinde barındırmak istiyorsanız, VirtualHost (Sanal Host) yapılandırması en doğru yöntemdir. Bu sayede her alan adı (domain) kendi kök dizinini, log dosyalarını ve ayarlarını kullanarak izole biçimde çalışır. Bu makalede, Linux tabanlı sistemlerde Apache VirtualHost kurulumunu adım adım açıklıyoruz.
- VirtualHost Nedir?
- Kurulum Ön Koşulları
- Adım 1 – Apache Kurulumu (Varsa Atla)
- Adım 2 – Web Dizinlerinin Oluşturulması
- Örnek index.html Dosyaları
- Adım 3 – VirtualHost Dosyalarının Oluşturulması
- site1.com.conf İçeriği
- site2.com.conf İçeriği
- Adım 4 – VirtualHost’ları Etkinleştirme
- Adım 5 – /etc/hosts Dosyasına Ekleme (Test Amaçlı)
- Adım 6 – Yapılandırmayı Doğrulama
- Adım 7 – Apache’yi Yeniden Başlatma
- HTTPS (SSL) Desteği Eklemek
- VirtualHost Yönetimi (Kısa Komutlar)
- Performans ve Güvenlik Önerileri
- Sonuç
VirtualHost Nedir?
VirtualHost, Apache’nin tek bir IP adresinde birden fazla web sitesi barındırmasını sağlayan bir yapılandırma yöntemidir. Bu yöntem üç şekilde uygulanabilir:
- Name-based: Aynı IP adresinde birden fazla alan adı barındırılır.
- IP-based: Her site farklı IP adresine atanır.
- Port-based: Aynı IP üzerinde farklı portlar kullanılır (ör. 8080, 8081).
Kurulum Ön Koşulları
- Apache yüklü olmalı (
sudo apt install apache2 -yveyasudo yum install httpd -y). - Root veya sudo yetkisine sahip kullanıcı.
- DNS kayıtları doğru yapılandırılmış (örnek:
site1.com → 192.168.1.10).
Adım 1 – Apache Kurulumu (Varsa Atla)
# Ubuntu/Debian sudo apt update sudo apt install apache2 -y # CentOS/RHEL sudo yum install httpd -y sudo systemctl enable --now httpd
Adım 2 – Web Dizinlerinin Oluşturulması
Her site için ayrı dizin yapısı oluşturulur:
sudo mkdir -p /var/www/site1.com/public_html sudo mkdir -p /var/www/site2.com/public_html # Sahiplik ve izin ayarları sudo chown -R www-data:www-data /var/www/site1.com /var/www/site2.com sudo chmod -R 755 /var/www
Örnek index.html Dosyaları
echo "<h1>Site1 Yayında!</h1>" | sudo tee /var/www/site1.com/public_html/index.html echo "<h1>Site2 Yayında!</h1>" | sudo tee /var/www/site2.com/public_html/index.html
Adım 3 – VirtualHost Dosyalarının Oluşturulması
Apache’nin site konfigürasyon dizinine her site için bir yapılandırma dosyası eklenir:
sudo nano /etc/apache2/sites-available/site1.com.conf
site1.com.conf İçeriği
<VirtualHost *:80>
ServerAdmin admin@site1.com
ServerName site1.com
ServerAlias www.site1.com
DocumentRoot /var/www/site1.com/public_html
ErrorLog ${APACHE_LOG_DIR}/site1_error.log
CustomLog ${APACHE_LOG_DIR}/site1_access.log combined
</VirtualHost>
site2.com.conf İçeriği
<VirtualHost *:80>
ServerAdmin admin@site2.com
ServerName site2.com
DocumentRoot /var/www/site2.com/public_html
ErrorLog ${APACHE_LOG_DIR}/site2_error.log
CustomLog ${APACHE_LOG_DIR}/site2_access.log combined
</VirtualHost>
Adım 4 – VirtualHost’ları Etkinleştirme
sudo a2ensite site1.com.conf sudo a2ensite site2.com.conf sudo systemctl reload apache2
Varsayılan siteyi devre dışı bırakmak isterseniz:
sudo a2dissite 000-default.conf
Adım 5 – /etc/hosts Dosyasına Ekleme (Test Amaçlı)
Eğer DNS yönlendirmesi yapılmadıysa, test amacıyla yerel host dosyasına aşağıdaki satırları ekleyebilirsiniz:
sudo nano /etc/hosts 192.168.1.10 site1.com 192.168.1.10 site2.com
Adım 6 – Yapılandırmayı Doğrulama
Apache konfigürasyon hatalarını kontrol edin:
sudo apache2ctl configtest # veya CentOS için sudo httpd -t
Çıktıda Syntax OK görüyorsanız yapılandırma doğrudur.
Adım 7 – Apache’yi Yeniden Başlatma
sudo systemctl restart apache2
Artık http://site1.com ve http://site2.com adresleri erişilebilir olmalıdır.
HTTPS (SSL) Desteği Eklemek
Let’s Encrypt ile ücretsiz SSL kurulumu yapmak için:
sudo apt install certbot python3-certbot-apache -y sudo certbot --apache -d site1.com -d www.site1.com
Sertifikalar 90 günde bir otomatik yenilenir (certbot renew cronjob ile).
VirtualHost Yönetimi (Kısa Komutlar)
# Etkin site listesini göster sudo apache2ctl -S # Site devre dışı bırak sudo a2dissite site1.com.conf # Siteyi tekrar etkinleştir sudo a2ensite site1.com.conf
Performans ve Güvenlik Önerileri
- Her site için ayrı log dosyası tutarak analiz kolaylığı sağlayın.
- Directory listing’i kapatın:
Options -Indexes. - Gzip sıkıştırmasını etkinleştirin (
mod_deflate). - PHP-FPM veya mod_proxy_fcgi ile dinamik içerik performansını artırın.
- Yoğun trafik altında HostLigo Premium VDS çözümlerini tercih edin.
Sonuç
Apache VirtualHost yapılandırması, tek bir sunucu üzerinde çoklu site barındırmayı kolaylaştırır. Her domain’in izole edilmiş yapısı, yönetim, güvenlik ve performans açısından avantaj sağlar. SSL desteği, log yönetimi ve doğru izinlerle birlikte, Apache web sunucusu kurumsal düzeyde ölçeklenebilir bir altyapı sunar. Daha yüksek performans ve güvenlik için HostLigo’nun Linux Hosting ve Premium VDS hizmetlerini değerlendirebilirsiniz.