
Apache HTTP Server, alan adına göre farklı siteleri sunabilen açık kaynaklı bir web sunucusudur. Bu rehber Ubuntu 24.04 LTS ve dağıtımın Apache 2.4 paketi için tek bir sanal sunucu oluşturur. CentOS/RHEL komutlarıyla karıştırılmaz: a2ensite, www-data ve APACHE_LOG_DIR bu Ubuntu akışına aittir.

Görselin adım adım açıklaması
- Karşıla: Bağlantının adres ve portunu belirle.
- Eşleştir: Host ve HTTPS için SNI bilgisini kullan.
- Yönlendir: Uygun VirtualHost yapılandırmasını seç.
- Kontrol et: Varsayılan siteyi de test et.
Ön koşullar ve kapsam
Yeni veya ayrı bir test sunucusu, sudo yetkili kullanıcı ve üretim için size ait bir alan adı gerekir. Örneklerdeki site.example.com adını kullanacağınız gerçek adla tutarlı biçimde değiştirin. Mevcut Nginx, Apache, panel veya konteyner sunucusunun üzerine kurulum yapmayın. Önce portları ve mevcut yapılandırmayı inceleyin:
cat /etc/os-release
sudo ss -ltnp '( sport = :80 or sport = :443 )' Bu yazıdaki sanal sunucu ve yanıt kontrolleri ayrı ortamda doğrulanmalıdır. Paket kurulumu, sistem servisi ve kamuya açık TLS sertifikası kendi sunucunuzda ayrıca kabul gerektirir; komutların verilmesi tam ortam testi yapıldığı anlamına gelmez.
1. Apache paketini kurun
sudo apt update
sudo apt install apache2
apache2 -v
sudo systemctl status apache2 --no-pager Ubuntu paket kurulumunun servisi başlatabileceğini unutmayın. Güvenlik duvarı kullanıyorsanız SSH erişiminizi koruyun ve yalnız gereken web portlarını açın. Yeni kurulum için bütün güvenlik duvarını kapatmayın. HTTPS yayını için 443, HTTP yönlendirmesi ve HTTP-01 sertifika doğrulaması için 80 gerekebilir.
2. Ayrı site kökü ve test sayfası hazırlayın
Aşağıdaki dizin bu örnek siteye aittir. Dağıtım kullanıcısı dosyaları yönetir; web sunucusuna içerik ağacının tamamında yazma yetkisi verilmez.
sudo install -d -o "$(id -u)" -g "$(id -g)" -m 0755 /var/www/fc-example/public
cat > /var/www/fc-example/public/index.html <<'HTML'
<!doctype html>
<html lang="tr"><meta charset="utf-8"><title>Apache test</title>
<h1>Apache virtual host OK</h1></html>
HTML
chmod 0644 /var/www/fc-example/public/index.html Uygulamanız yükleme veya önbellek klasörüne yazacaksa yalnız gereken klasör için ayrı izin tanımlayın. Statik site için web kullanıcısının dosya değiştirme yetkisine ihtiyacı yoktur.
3. Sanal sunucu dosyasını oluşturun
/etc/apache2/sites-available/fc-example.conf zaten varsa önce içeriğini inceleyin ve yedekleyin; mevcut bir siteyi bu örnekle ezmeyin. Yeni dosyaya şunu yazın:
<VirtualHost *:80>
ServerName site.example.com
DocumentRoot /var/www/fc-example/public
<Directory /var/www/fc-example/public>
Options -Indexes +FollowSymLinks
AllowOverride None
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/fc-example-error.log
CustomLog ${APACHE_LOG_DIR}/fc-example-access.log combined
</VirtualHost> Options -Indexes dizin listesini kapatır. AllowOverride None, .htaccess dosyalarının bu statik örneği değiştirmesini engeller. WordPress gibi yeniden yazma kuralı isteyen uygulamalarda yalnız ilgili dizin ve gerekli yönergeler için izin verin.
sudo a2ensite fc-example.conf
sudo apache2ctl configtest
sudo apache2ctl -S configtest sonucunda Syntax OK görmeden servis yüklemeyin. -S çıktısında alan adının doğru dosya ve porta bağlandığını kontrol edin. Sonra:
sudo systemctl reload apache2
curl --fail --resolve site.example.com:80:127.0.0.1 http://site.example.com/
curl -I --resolve site.example.com:80:127.0.0.1 http://site.example.com/not-found İlk istek test başlığını, ikinci istek 404 yanıtını vermelidir. --resolve yalnız bu curl isteğinin DNS çözümünü değiştirir; gerçek DNS kaydı oluşturmaz. Sunucunun IP adresiyle görülen varsayılan site, alan adının doğru sanal sunucuyu açtığını kanıtlamaz.
4. DNS ve HTTPS’i tamamlayın
Gerçek alan adının A ve varsa AAAA kayıtlarını bu sunucuya yönlendirin. Ek bir www adı kullanacaksanız DNS, ServerAlias ve sertifika kapsamına birlikte ekleyin. Bu örnek tek alan adı kullanır.
Ubuntu deposundaki Certbot Apache eklentisiyle sertifika alacaksanız:
sudo apt install certbot python3-certbot-apache
sudo certbot --apache -d site.example.com
sudo apache2ctl configtest
sudo certbot renew --dry-run Gerçek alan adı ve doğrulama erişimi hazır olmadan komutu çalıştırmayın. DNS-01 veya dış yük dengeleyici kullanıyorsanız o yöntemin kendi sertifika akışını izleyin. Certbot’un yaptığı sanal sunucu değişikliklerini inceleyin; HTTP’den HTTPS’e yönlendirme ve sertifika yenilemesini doğrulayın. Kurulum hesabı veya uygulama parolasıyla giriş yapmadan önce HTTPS çalışmalıdır.
Kabul, sorun giderme ve geri dönüş
Alan adından dışarıdan HTTPS yanıtı, geçerli sertifika zinciri, doğru iç sayfa ve 404 davranışını kontrol edin. Kaynak klasöründe dosya listelenmediğini, günlüklerde beklenmeyen hata olmadığını ve web kullanıcısının kodu değiştiremediğini doğrulayın.
- Address already in use: 80/443 dinleyen süreci bulun; mevcut sunucuyu rastgele durdurmayın.
- 403: dizin geçiş izinlerini ve
Requirekuralını inceleyin; çözüm olarak777vermeyin. - Yanlış site:
apache2ctl -S, Host adı ve DNS/AAAA kayıtlarını kontrol edin. - Yükleme başarısız:
configtestvejournalctl -u apache2çıktısını inceleyin. Geçersiz yapılandırmayla yeniden başlatma denemelerini tekrarlamayın.
Geri dönüşte önceki site dosyasını geri koyun veya yalnız bu yeni örneği sudo a2dissite fc-example.conf ile devre dışı bırakın; sertifika aracı ek dosya oluşturduysa onu da inceleyin. Ardından configtest ve kontrollü reload uygulayın. Mevcut siteleri veya içerik dizinlerini topluca silmeyin. Yedek dosyalarını da web kökünün dışında saklayın.
Resmî kaynaklar
- Ubuntu üzerinde Apache kurulumu
- Apache 2.4 sanal sunucu örnekleri
- apachectl ve yapılandırma testi
- Directory Options yönergesi
- Certbot Apache plugin and renewal
Teknik içerik ve kaynaklar 4 Ekim 2026 tarihinde gözden geçirildi. Sürüm veya sağlayıcı değişikliğinde ilgili resmî belgeyi yeniden kontrol edin.
Bir yanıt yazın