Apache, dünyanın en köklü ve yaygın web sunucularından biridir. Esnek yapısı, .htaccess desteği ve geniş modül kütüphanesi ile birçok projenin kalbinde yer alır. Bu rehberde Ubuntu sunucuda Apache kurulumunu, virtual host oluşturmayı ve temel güvenlik ayarlarını öğreneceksin.
Adım 1: Apache Kurulumu
# Paket listesini güncelle
sudo apt update
# Apache'yi kur
sudo apt install apache2
# Kurulum sonrası durumu kontrol et
sudo systemctl status apache2
# Sunucu yeniden başladığında otomatik çalışmasını sağla
sudo systemctl enable apache2
Kurulum tamamlandıktan sonra tarayıcına sunucu IP adresini yazdığında "Apache2 Ubuntu Default Page" sayfasını görmelisin.
Adım 2: Firewall Ayarları
UFW kullanıyorsan Apache profillerine izin vermelisin:
# Kullanılabilir uygulama profillerini gör
sudo ufw app list
# Sadece HTTP (80)
sudo ufw allow 'Apache'
# HTTP ve HTTPS (80 ve 443) - Önerilen
sudo ufw allow 'Apache Full'
# Sadece HTTPS (443)
sudo ufw allow 'Apache Secure'
Adım 3: Virtual Host Yapılandırması
Aynı sunucuda birden fazla website barındırmak için "Virtual Host" kullanmalısın. Örnek olarak ornek.com için yapalım.
# Website dizinini oluştur
sudo mkdir -p /var/www/ornek.com/html
# Sahiplik haklarını ver
sudo chown -R $USER:$USER /var/www/ornek.com/html
sudo chmod -R 755 /var/www/ornek.com
# Örnek bir index.html oluştur
nano /var/www/ornek.com/html/index.html
<html>
<head>
<title>Site Çalışıyor!</title>
</head>
<body>
<h1>ornek.com Apache üzerinde çalışıyor.</h1>
</body>
</html>
Virtual Host Dosyası
sudo nano /etc/apache2/sites-available/ornek.com.conf
<VirtualHost *:80>
ServerAdmin admin@ornek.com
ServerName ornek.com
ServerAlias www.ornek.com
DocumentRoot /var/www/ornek.com/html
<Directory /var/www/ornek.com/html>
Options -Indexes +FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/ornek.com-error.log
CustomLog ${APACHE_LOG_DIR}/ornek.com-access.log combined
</VirtualHost>
# Siteyi aktif et
sudo a2ensite ornek.com.conf
# Varsayılan siteyi kapat (opsiyonel)
sudo a2dissite 000-default.conf
# Config dosyasını test et
sudo apache2ctl configtest
# Apache'yi yeniden başlat
sudo systemctl restart apache2
💡 Web Sitelerin İçin Esnek Barındırma
Apache'nin gücünü sınırsız kullanmak istiyorsan, HazalHost'un yüksek performanslı VDS sunucularını dene. Tam root erişimi ile tüm ayarları dilediğin gibi yapılandır.
Adım 4: Önemli Apache Modülleri
Apache'nin en büyük avantajı modülleridir. Bazı temel modülleri aktifleştirelim:
# .htaccess kullanımı için rewrite modülü
sudo a2enmod rewrite
# Güvenlik başlıkları için headers modülü
sudo a2enmod headers
# SSL desteği için ssl modülü
sudo a2enmod ssl
# HTTP/2 desteği
sudo a2enmod http2
# Değişiklikleri uygula
sudo systemctl restart apache2
Adım 5: Temel Güvenlik ve Optimizasyon
Apache versiyon bilgisini gizleyerek güvenliği artıralım:
sudo nano /etc/apache2/conf-available/security.conf
ServerTokens Prod
ServerSignature Off
Büyük boyutlu indirmeleri ve uzun istekleri sınırlamak için timeout değerini düşür:
Timeout 60
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
sudo systemctl restart apache2
Adım 6: MPM Ayarı (Performans)
Apache'nin nasıl process açacağını belirler. mpm_event en performanslı olanıdır.
# mpm_prefork kapat, mpm_event aç (PHP-FPM gerektirir)
sudo a2dismod mpm_prefork
sudo a2enmod mpm_event
sudo systemctl restart apache2
🚀 Yüksek Trafikle Baş Et
Sitendeki hit artıyorsa, güçlü bir altyapıya geçme vakti gelmiştir. HazalHost'ta barındırma hizmetini bir üst seviyeye taşı.
Sonuç
Apache web sunucusu .htaccess desteği, kolay virtual host yönetimi ve güçlü modülleriyle harika bir seçenektir. Güvenlik ayarlarını yapıp mpm_event modülünü aktive ederek performansını maksimize edebilirsin.
Sık Sorulan Sorular (FAQ)
Apache mi Nginx mi tercih etmeliyim?
.htaccess esnekliğine ihtiyacın varsa Apache, saf hız ve yüksek eşzamanlı bağlantı kapasitesine ihtiyacın varsa Nginx tercih etmelisin.
.htaccess dosyam neden çalışmıyor?
İki sebep olabilir: Ya rewrite modülü aktif değildir (sudo a2enmod rewrite), ya da Virtual Host dosyasında AllowOverride All belirtilmemiştir.
Apache yapılandırmasını bozmadan nasıl test edebilirim?
Değişiklik yaptıktan sonra sudo apache2ctl configtest komutunu çalıştırarak sözdizimi hatalarını servis yeniden başlamadan görebilirsin.