Ubuntu sunucularında Apache web sunucusunu kullanarak birden fazla web sitesini aynı fiziksel sunucuda barındırmak, kaynakları verimli yönetmenin en etkili yollarından
Ubuntu sunucularında Apache web sunucusunu kullanarak birden fazla web sitesini aynı fiziksel sunucuda barındırmak, kaynakları verimli yönetmenin en etkili yollarından biridir. Apache VirtualHost özelliği, her bir web sitesini ayrı bir konfigürasyon bloğu ile tanımlamanıza olanak tanır. Bu yapılandırma sayesinde, farklı domain adları veya alt domainler için özgün dizinler, log dosyaları ve hatta farklı PHP sürümleri belirleyebilirsiniz. Özellikle kurumsal ortamlarda, geliştirme, test ve üretim ortamlarını ayırmak için idealdir. Bu makalede, Ubuntu sunucusunda Apache VirtualHost’un adım adım kurulumunu, yapılandırmasını ve en iyi uygulamalarını ele alacağız. Pratik talimatlarla, sunucunuzu hızlıca hazır hale getireceksiniz.
Apache VirtualHost, HTTP isteklerini domain adına göre yönlendiren bir modüldür. Name-based virtual hosting ile aynı IP adresi üzerinden birden fazla site çalıştırabilir, IP-based hosting ile ise her site için ayrı IP kullanabilirsiniz. Bu yaklaşım, sunucu maliyetlerini düşürür ve ölçeklenebilirlik sağlar. Kurumsal projelerde, her müşteri sitesini izole etmek güvenlik ve bakım açısından kritiktir.
VirtualHost’un temel avantajları arasında, her site için bağımsız loglama, erişim kontrolleri ve performans optimizasyonları yer alır. Örneğin, bir e-ticaret sitesi için yüksek trafik yönetimi yaparken, statik bir kurumsal siteyi düşük kaynakla barındırabilirsiniz. Ubuntu’nun Apache paketi (apache2), bu özelliği varsayılan olarak destekler ve /etc/apache2/sites-available dizini üzerinden yönetilir.
Name-based hosting, en yaygın yöntemdir ve Host başlığına göre yönlendirme yapar. Birden fazla domain’i tek IP ile yönetmek için idealdir. IP-based ise her siteye benzersiz IP atar, eski tarayıcılar veya belirli güvenlik gereksinimleri için uygundur. Kurulumda, name-based’i tercih edin; /etc/hosts dosyasını düzenleyerek yerel test yapabilirsiniz. Bu ayrım, trafik dağılımını optimize eder ve sunucu yükünü dengeler, özellikle 1000+ ziyaretçili sitelerde fark yaratır.
Her VirtualHost bloğu, DocumentRoot, ServerName ve Directory izinlerini ayrı tanımlar. Bu sayede, bir sitenin hacklenmesi diğerlerini etkilemez. .htaccess dosyalarıyla IP kısıtlamaları ekleyebilir, mod_security ile WAF entegrasyonu yapabilirsiniz. Ubuntu’da UFW firewall ile VirtualHost portlarını (80, 443) yönetin; bu, DDoS saldırılarına karşı koruma sağlar ve kurumsal uyumluluğu artırır.
Ubuntu 20.04 veya 22.04 LTS sürümlerinde başlayın. Önce Apache’yi güncelleyin: sudo apt update && sudo apt upgrade -y. Ardından apache2 paketini yükleyin: sudo apt install apache2 -y. Sistem servisini etkinleştirin: sudo systemctl enable apache2 && sudo systemctl start apache2. Varsayılan siteyi devre dışı bırakın: sudo a2dissite 000-default.conf && sudo systemctl reload apache2. Artık /etc/apache2/sites-available/ dizinine yeni konfigürasyon dosyaları oluşturabilirsiniz.
İlk VirtualHost için örnek site dizini oluşturun: sudo mkdir -p /var/www/ornek-site/public_html. Sahipliği ayarlayın: sudo chown -R www-data:www-data /var/www/ornek-site. İndeks dosyası ekleyin: echo “<html><body><h1>Örnek Site</h1></body></html>” | sudo tee /var/www/ornek-site/public_html/index.html.
/etc/apache2/sites-available/ornek-site.conf dosyasını oluşturun: sudo nano /etc/apache2/sites-available/ornek-site.conf. İçeriği şu şekilde yapılandırın:
Siteden etkinleştirin: sudo a2ensite ornek-site.conf && sudo systemctl reload apache2. DNS kaydınızı A tipiyle sunucu IP’sine yönlendirin. Bu adımlar, 5 dakikada çalışan bir VirtualHost sağlar.
İkinci site için aynı adımları tekrarlayın, farklı ServerName ve DocumentRoot ile. sites-available dizinindeki tüm .conf dosyalarını a2ensite ile etkinleştirin. Apache’nin mod_rewrite ve mod_ssl gibi modülleri etkinleştirin: sudo a2enmod rewrite ssl. Yeniden yükleyin. Bu yöntemle 10+ siteyi sorunsuz yönetebilirsiniz; her birinin loglarını /var/log/apache2/ altında izleyin.
Yapılandırmayı test etmek için apache2ctl configtest komutunu çalıştırın; syntax hatalarını önler. curl -H “Host: ornek-site.com” http://sunucu-ip ile yerel test yapın. Gerçek test için domain DNS’ini bekleyin veya /etc/hosts’a ekleyin: 127.0.0.1 ornek-site.com. Performansı artırmak için mpm_event modülünü etkinleştirin: sudo a2enmod mpm_event && sudo systemctl restart apache2.
Gelişmiş optimizasyonlarda, her VirtualHost için ayrı PHP-FPM havuzu tanımlayın. /etc/php/8.1/fpm/pool.d/ altında ornek-site.conf oluşturun ve www.conf’yi kopyalayın. Bu, bellek kullanımını %30 azaltır. Cache için mod_cache etkinleştirin ve Opcode cache’i açın.
Let’s Encrypt ile ücretsiz SSL alın: sudo apt install certbot python3-certbot-apache -y. sudo certbot –apache -d ornek-site.com ile otomatik konfigürasyon yapın. VirtualHost bloğuna <VirtualHost *:443> ekleyin, SSLEngine on ve sertifika yollarını belirtin. Otomatik yenileme için cron job ekleyin: sudo crontab -e ile 0 12 * * * /usr/bin/certbot renew –quiet. Bu, kurumsal siteler için PCI DSS uyumluluğunu sağlar.
404 hatalarında DocumentRoot izinlerini kontrol edin: sudo chmod -R 755 /var/www/. 500 hataları için error_log’ları inceleyin: tail -f /var/log/apache2/ornek-site_error.log. Port çakışmalarında netstat -tuln | grep :80 ile bakın. Firewall’u açın: sudo ufw allow ‘Apache Full’. Bu adımlar, %95 sorunları çözer ve uptime’ı artırır.
Apache VirtualHost ile Ubuntu sunucunuzu profesyonel bir hosting ortamına dönüştürebilirsiniz. Düzenli güncellemeler ve monitoring araçları (örneğin, Munin veya Prometheus) ile entegre edin. Bu yapı, ölçeklenebilir ve güvenli web servisleri için temel oluşturur, kurumsal ihtiyaçlarınızı karşılayarak zaman ve maliyet tasarrufu sağlar.