Apache Web Sunucusunu Ubuntu 20.04 Üzerine Kurulum Rehberi
Apache HTTP Sunucusu, dünya genelinde en yaygın kullanılan açık kaynak kodlu web sunucularından biridir. Esnek yapısı, geniş modül desteği ve güçlü topluluk desteği sayesinde, küçük kişisel bloglardan büyük kurumsal uygulamalara kadar çeşitli web sitelerini barındırmak için ideal bir çözümdür. Ubuntu 20.04 (Focal Fossa), uzun süreli destek (LTS) sağlayan kararlı bir işletim sistemi olduğundan, Apache’yi bu platform üzerine kurmak, güvenilir ve bakımı kolay bir web sunucusu ortamı oluşturmak isteyenler için mükemmel bir seçimdir.
Bu kapsamlı rehberde, Apache web sunucusunu Ubuntu 20.04 üzerine adım adım nasıl kuracağınızı, temel yapılandırmaları nasıl yapacağınızı, sanal ana bilgisayarları (virtual hosts) kullanarak birden fazla web sitesini nasıl barındıracağınızı ve sunucunuzun güvenliğini ve performansını artırmak için ek ipuçlarını öğreneceksiniz. Bu rehber, temel Linux komut bilgisine sahip ve sudo ayrıcalıklarına sahip bir kullanıcı hesabı olan herkes için uygundur.
1. Ön Koşullar ve İlk Adımlar
Apache kurulumuna başlamadan önce, sunucunuzun güncel olduğundan ve temel güvenlik duvarı ayarlarının yapıldığından emin olmalıyız. Bu adımlar, sorunsuz bir kurulum süreci ve güvenli bir çalışma ortamı için kritik öneme sahiptir.
1.1 Sunucuya Bağlanma
Kuruluma başlamak için Ubuntu 20.04 sunucunuza SSH (Secure Shell) üzerinden bağlanmanız gerekmektedir. Eğer yerel bir makinede çalışıyorsanız bu adımı atlayabilirsiniz.
ssh kullanici_adi@sunucu_ip_adresi
kullanici_adi yerine kendi kullanıcı adınızı ve sunucu_ip_adresi yerine sunucunuzun IP adresini yazarak bağlanabilirsiniz.
1.2 Sistem Güncelleme
Kuruluma başlamadan önce, sisteminizdeki paket listelerini ve mevcut paketleri en son sürümlerine güncellemek iyi bir uygulamadır. Bu, potansiyel güvenlik açıklarını kapatır ve yazılım uyumluluğu sorunlarını önler.
Öncelikle paket listesini güncelleyin:
sudo apt update
Ardından, yüklü paketleri yükseltin:
sudo apt upgrade
Bu komutlar, sisteminizdeki tüm yazılımların en güncel hallerine getirilmesini sağlar. Yükseltme işlemi sırasında bazı servislerin yeniden başlatılması gerekebilir; onay istendiğinde Y tuşuna basarak devam edin.
1.3 Güvenlik Duvarı Yapılandırması (UFW)
Ubuntu’da varsayılan güvenlik duvarı aracı UFW (Uncomplicated Firewall)’dur. Web sunucunuzun düzgün çalışabilmesi için HTTP (80) ve HTTPS (443) trafiğine izin vermeniz gerekmektedir.
Öncelikle UFW’nin durumunu kontrol edin:
sudo ufw status
Eğer UFW etkin değilse veya Apache için gerekli kurallar tanımlı değilse, bu adımları izleyin. UFW genellikle varsayılan olarak devre dışıdır.
Apache kurulumu sırasında UFW, otomatik olarak bazı profil tanımları ekler. Bu profilleri listeleyerek hangi servislerin mevcut olduğunu görebilirsiniz:
sudo ufw app list
Bu komutun çıktısında genellikle şu profilleri görmelisiniz:
* Apache: Sadece 80 numaralı bağlantı noktasından (HTTP) gelen trafiğe izin verir.
* Apache Secure: Sadece 443 numaralı bağlantı noktasından (HTTPS) gelen trafiğe izin verir.
* Apache Full: Hem 80 (HTTP) hem de 443 (HTTPS) numaralı bağlantı noktalarından gelen trafiğe izin verir.
Web sunucunuzu hem HTTP hem de HTTPS üzerinden erişilebilir kılmak istiyorsanız, Apache Full profilini etkinleştirmelisiniz:
sudo ufw allow 'Apache Full'
Eğer sadece HTTP üzerinden erişim sağlamak istiyorsanız Apache profilini, sadece HTTPS üzerinden erişim sağlamak istiyorsanız Apache Secure profilini etkinleştirebilirsiniz. Genellikle, gelecekte SSL/TLS kullanmayı planladığınız için Apache Full seçeneği daha uygundur.
SSH bağlantınızın kesilmemesi için SSH portuna (varsayılan 22) izin verildiğinden emin olun:
sudo ufw allow OpenSSH
Şimdi UFW’yi etkinleştirin:
sudo ufw enable
Onay istendiğinde Y tuşuna basarak devam edin. UFW’nin durumunu tekrar kontrol ederek kuralların doğru bir şekilde uygulandığından emin olun:
sudo ufw status
Çıktıda hem Apache Full (veya seçtiğiniz diğer Apache profili) hem de OpenSSH kurallarının “ALLOW” olarak listelendiğini görmelisiniz.
2. Apache Kurulumu
Ön koşulları tamamladıktan sonra, Apache web sunucusunu sisteminize kurmaya başlayabiliriz.
2.1 Apache Paketini Yükleme
Apache paketi, Ubuntu’nun varsayılan depolarında mevcuttur. Kurulum için apt paket yöneticisini kullanacağız:
sudo apt install apache2
Bu komut, Apache ve gerekli tüm bağımlılıkları yükleyecektir. Kurulum tamamlandığında, Apache servisi otomatik olarak başlayacak ve sistem açılışında otomatik olarak başlamak üzere ayarlanacaktır.
2.2 Apache Servisini Kontrol Etme
Kurulumdan sonra Apache servisinin düzgün çalışıp çalışmadığını kontrol etmek önemlidir. Bunu systemctl komutu ile yapabilirsiniz:
sudo systemctl status apache2
Çıktıda active (running) ifadesini görmeniz, Apache servisinin başarıyla çalıştığı anlamına gelir. Eğer servis çalışmıyorsa, aşağıdaki komutlarla başlatabilir ve sistem açılışında otomatik başlamasını sağlayabilirsiniz:
sudo systemctl start apache2
sudo systemctl enable apache2
2.3 Web Sunucusunu Doğrulama
Apache’nin düzgün bir şekilde kurulduğundan ve güvenlik duvarı ayarlarının doğru olduğundan emin olmak için, web tarayıcınızdan sunucunuzun IP adresine erişmeyi deneyebilirsiniz.
Sunucunuzun genel IP adresini öğrenmek için çeşitli yöntemler vardır:
* Eğer bir bulut sunucu kullanıyorsanız, sağlayıcınızın kontrol panelinden IP adresini bulabilirsiniz.
* Sunucunuzun komut satırından aşağıdaki komutlardan birini kullanabilirsiniz:
ip a s eth0 | grep inet | awk '{print $2}' | cut -d/ -f1
veya harici bir servis kullanarak:
curl -4 icanhazip.com
Tarayıcınızın adres çubuğuna http://sunucu_ip_adresi yazarak erişmeye çalıştığınızda, Ubuntu’nun varsayılan Apache 2 karşılama sayfasını görmelisiniz. Bu sayfa, Apache’nin başarıyla kurulduğunu ve erişilebilir olduğunu gösterir.
3. Apache Yapılandırmasının Temelleri
Apache, oldukça modüler ve yapılandırılabilir bir web sunucusudur. Temel yapılandırma dosyalarını ve dizin yapısını anlamak, ileride daha karmaşık yapılandırmalar yapmanıza yardımcı olacaktır.
3.1 Apache Dosya ve Dizin Yapısı
Ubuntu üzerindeki Apache kurulumu, belirli bir dosya ve dizin yapısına sahiptir:
* /etc/apache2/: Apache’nin ana yapılandırma dizinidir. Tüm genel yapılandırma dosyaları burada bulunur.
* /etc/apache2/apache2.conf: Ana Apache yapılandırma dosyasıdır. Bu dosya, global ayarları, modül yüklemelerini ve diğer yapılandırma dosyalarının dahil edilmesini içerir.
* /etc/apache2/ports.conf: Apache’nin hangi bağlantı noktalarını dinleyeceğini tanımlar (varsayılan olarak 80 ve 443).
* /etc/apache2/conf-available/: Ek yapılandırma parçacıklarını (fragment) içerir.
* /etc/apache2/conf-enabled/: Etkinleştirilmiş yapılandırma parçacıklarının sembolik bağlantılarını içerir.
* /etc/apache2/mods-available/: Mevcut modül yapılandırma dosyalarını içerir.
* /etc/apache2/mods-enabled/: Etkinleştirilmiş modül yapılandırma dosyalarının sembolik bağlantılarını içerir.
* /etc/apache2/sites-available/: Sanal ana bilgisayar yapılandırma dosyalarını içerir. Bu dizindeki dosyalar, a2ensite komutu ile etkinleştirilene kadar kullanılmaz.
* /etc/apache2/sites-enabled/: Etkinleştirilmiş sanal ana bilgisayar yapılandırma dosyalarının sembolik bağlantılarını içerir. a2dissite komutu ile devre dışı bırakılabilirler.
* /var/www/html/: Varsayılan belge kök dizinidir. Tarayıcınızdan sunucunuzun IP adresine eriştiğinizde gördüğünüz varsayılan Apache sayfası burada bulunur. Web sitelerinizin dosyalarını genellikle bu dizin altına veya özel sanal ana bilgisayar dizinlerine yerleştirirsiniz.
* /var/log/apache2/: Apache’nin erişim (access.log) ve hata (error.log) günlük dosyalarını içerir. Sorun giderme için bu günlükler hayati öneme sahiptir.
3.2 Apache Modüllerini Yönetme
Apache’nin gücünün önemli bir kısmı, modüler yapısından gelir. Modüller, Apache’ye ek işlevsellik katar. Örneğin, SSL/TLS şifrelemesi için mod_ssl, URL yeniden yazma için mod_rewrite gibi modüller bulunur.
Yüklü ve etkin modülleri listelemek için:
apache2ctl -M
Bir modülü etkinleştirmek için a2enmod komutunu kullanırız:
sudo a2enmod [modül_adı]
Örneğin, URL yeniden yazma modülünü etkinleştirmek için:
sudo a2enmod rewrite
Bir modülü devre dışı bırakmak için a2dismod komutunu kullanırız:
sudo a2dismod [modül_adı]
Herhangi bir yapılandırma değişikliğinden sonra (modül etkinleştirme/devre dışı bırakma dahil), Apache yapılandırmasını test etmeli ve ardından servisi yeniden başlatmalısınız:
sudo apache2ctl configtest
sudo systemctl restart apache2
configtest komutu, yapılandırma dosyanızda herhangi bir sözdizimi hatası olup olmadığını kontrol eder. Eğer Syntax OK çıktısını görürseniz, yeniden başlatma güvenlidir.
4. Sanal Ana Bilgisayarlar (Virtual Hosts) Oluşturma
Sanal ana bilgisayarlar, tek bir Apache sunucusu üzerinde birden fazla web sitesini barındırmanıza olanak tanır. Her web sitesi, kendi alan adına, belge köküne ve yapılandırmasına sahip olabilir. Bu, çoğu web sitesi barındırma senaryosu için standart bir yaklaşımdır.
Bu bölümde, ornekalanadi.com adında bir alan adı için sanal ana bilgisayar oluşturma sürecini adım adım ele alacağız. Kendi alan adınızı kullanmak için ornekalanadi.com yerine kendi alan adınızı yazmanız gerekmektedir.
4.1 Alan Adı için Dizin Yapısı Oluşturma
İlk adım, web sitenizin dosyalarını barındıracak bir dizin yapısı oluşturmaktır. Genellikle, her sanal ana bilgisayar için /var/www/ altında ayrı bir dizin oluşturulur.
sudo mkdir -p /var/www/ornekalanadi.com/html
Bu komut, ornekalanadi.com için ana dizini ve içinde web sitesi dosyalarını barındıracak html alt dizinini oluşturur.
Ardından, web sunucusunun bu dizinlere erişebilmesi için doğru izinleri ayarlamamız gerekir. Genellikle, web sunucusu süreçleri www-data kullanıcısı altında çalışır. Ancak, dosyaları oluşturup düzenlerken kendi kullanıcı hesabınızın sahipliğinde olması daha pratiktir.
sudo chown -R $USER:$USER /var/www/ornekalanadi.adresi/html
Bu komut, html dizininin ve içeriğinin sahipliğini mevcut kullanıcınıza ($USER) verir.
Son olarak, web kök dizini için genel okuma izinlerini ayarlayın, böylece herkes web sitenizi görüntüleyebilir:
sudo chmod -R 755 /var/www/ornekalanadi.com
4.2 Örnek Bir HTML Sayfası Oluşturma
Sanal ana bilgisayarınızın çalıştığını test etmek için basit bir index.html dosyası oluşturalım:
sudo nano /var/www/ornekalanadi.com/html/index.html
Dosyanın içine aşağıdaki HTML içeriğini yapıştırın:
Hoş Geldiniz!
Bu, ornekalanadi.com için varsayılan bir web sayfasıdır.
Kaydedin ve kapatın (CTRL+X, Y, Enter).
4.3 Sanal Ana Bilgisayar Yapılandırma Dosyası Oluşturma
Apache, sanal ana bilgisayar yapılandırma dosyalarını /etc/apache2/sites-available/ dizininde saklar. Varsayılan yapılandırma dosyasını kopyalayarak yeni bir dosya oluşturmak en kolay yoldur:
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/ornekalanadi.com.conf
Şimdi yeni oluşturduğunuz yapılandırma dosyasını düzenleyin:
sudo nano /etc/apache2/sites-available/ornekalanadi.com.conf
Dosyanın içeriğini aşağıdaki gibi düzenleyin. Özellikle ServerAdmin, DocumentRoot, ServerName ve ServerAlias direktiflerine dikkat edin:
ServerAdmin webmaster@ornekalanadi.com
ServerName ornekalanadi.com
ServerAlias www.ornekalanadi.com
DocumentRoot /var/www/ornekalanadi.com/html
ErrorLog ${APACHE_LOG_DIR}/ornekalanadi.com_error.log
CustomLog ${APACHE_LOG_DIR}/ornekalanadi.com_access.log combined
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
Açıklamalar:
* ServerAdmin: Sunucu yöneticisinin e-posta adresi. Hata mesajlarında görünebilir.
* ServerName: Bu sanal ana bilgisayarın yanıt vereceği birincil alan adı.
* ServerAlias: Bu sanal ana bilgisayarın yanıt vereceği diğer alan adları (örneğin www ön eki ile).
* DocumentRoot: Web sitesi dosyalarının bulunduğu dizin.
* ErrorLog ve CustomLog: Bu sanal ana bilgisayar için hata ve erişim günlüklerinin kaydedileceği dosyalar. Bu, her site için ayrı günlük tutmanıza olanak tanır.
* bloğu: Bu dizin için özel ayarları tanımlar.
* Options Indexes FollowSymLinks: Dizin listelemeye (Indexes) ve sembolik bağlantıları takip etmeye (FollowSymLinks) izin verir. Güvenlik nedeniyle Indexes seçeneğini kaldırmak isteyebilirsiniz.
* AllowOverride All: .htaccess dosyalarının bu dizindeki Apache direktiflerini geçersiz kılmasına izin verir. Bu, WordPress gibi CMS’ler için genellikle gereklidir.
* Require all granted: Bu dizine tüm isteklerin erişmesine izin verir.
Kaydedin ve kapatın.
4.4 Sanal Ana Bilgisayarı Etkinleştirme
Yeni sanal ana bilgisayar yapılandırma dosyasını etkinleştirmek için a2ensite komutunu kullanın:
sudo a2ensite ornekalanadi.com.conf
Bu komut, /etc/apache2/sites-available/ornekalanadi.com.conf dosyasından /etc/apache2/sites-enabled/ dizinine bir sembolik bağlantı oluşturur.
4.5 Varsayılan Sanal Ana Bilgisayarı Devre Dışı Bırakma (İsteğe Bağlı)
Eğer sunucunuzda sadece özel alan adlarınız üzerinden erişim sağlamak istiyorsanız, varsayılan 000-default.conf sanal ana bilgisayarını devre dışı bırakabilirsiniz. Bu, sunucunuzun IP adresine doğrudan erişildiğinde sitenizin görünmesini engeller.
sudo a2dissite 000-default.conf
4.6 Yapılandırmayı Test Etme ve Apache’yi Yeniden Başlatma
Değişiklikleri uygulamadan önce Apache yapılandırmanızda hata olup olmadığını kontrol etmek her zaman iyi bir uygulamadır:
sudo apache2ctl configtest
Syntax OK çıktısını görmeniz durumunda, Apache servisini yeniden başlatarak değişiklikleri uygulayın:
sudo systemctl restart apache2
4.7 Alan Adını Test Etme
Sanal ana bilgisayarınızın doğru çalıştığını doğrulamak için, alan adınızın (örneğin ornekalanadi.com) sunucunuzun IP adresine işaret ettiğinden emin olmanız gerekir. Bunu, alan adı kayıt şirketinizin DNS ayarlarından bir A kaydı oluşturarak yaparsınız.
DNS değişikliklerinin internet genelinde yayılması biraz zaman alabilir (genellikle birkaç dakika ile birkaç saat arasında). DNS yayılımı tamamlandıktan sonra, web tarayıcınızdan http://ornekalanadi.com adresine giderek oluşturduğunuz örnek HTML sayfasını görmelisiniz.
5. Ek Apache Yapılandırmaları ve Güvenlik İpuçları
Apache kurulumunuzu daha işlevsel, güvenli ve performanslı hale getirmek için bazı ek yapılandırmalar ve en iyi uygulamalar mevcuttur.
5.1 .htaccess Dosyalarını Etkinleştirme
.htaccess dosyaları, Apache’nin dizin bazında yapılandırma değişiklikleri yapmasına olanak tanır. Özellikle WordPress gibi içerik yönetim sistemleri (CMS) veya diğer web uygulamaları için URL yeniden yazma (mod_rewrite) gibi özellikler için gereklidir.
Önceki sanal ana bilgisayar yapılandırmanızda (ornekalanadi.com.conf), bloğu içinde AllowOverride All direktifini zaten ekledik. Bu direktif, .htaccess dosyalarının bu dizindeki Apache direktiflerini geçersiz kılmasına izin verir.
Eğer henüz etkin değilse, mod_rewrite modülünü etkinleştirmeniz gerekebilir:
sudo a2enmod rewrite
Değişiklikleri uygulamak için Apache’yi yeniden başlatın:
sudo systemctl restart apache2
Artık DocumentRoot dizininizde .htaccess dosyaları oluşturarak URL yeniden yazma kuralları, parola korumalı dizinler veya özel hata sayfaları gibi ayarları yapabilirsiniz.
5.2 SSL/TLS Kurulumu (Certbot ile Let’s Encrypt)
Günümüzde web siteleri için HTTPS kullanmak bir zorunluluk haline gelmiştir. HTTPS, tarayıcı ile sunucu arasındaki iletişimi şifreleyerek veri güvenliğini sağlar. Let’s Encrypt, ücretsiz SSL/TLS sertifikaları sağlayan bir sertifika yetkilisidir ve Certbot aracı ile kolayca entegre edilebilir.
Öncelikle Certbot ve Apache eklentisini kurun:
sudo apt install certbot python3-certbot-apache
Ardından, alan adınız için bir SSL sertifikası almak ve Apache yapılandırmasını otomatik olarak yapmak için Certbot’u çalıştırın:
sudo certbot --apache -d ornekalanadi.com -d www.ornekalanadi.com
Certbot, e-posta adresi, hizmet şartları onayı gibi bazı sorular soracak ve ardından sertifikayı otomatik olarak alıp Apache yapılandırmanızı HTTPS için güncelleyecektir. Ayrıca, sertifikaların otomatik yenilenmesini de ayarlayacaktır.
5.3 Apache Güvenliğini Artırma
Web sunucunuzun güvenliği, siber saldırılara karşı koruma sağlamak için hayati öneme sahiptir. İşte bazı temel güvenlik ipuçları:
* Sunucu İmzalarını Kapatma: Varsayılan olarak Apache, hata sayfalarında veya HTTP başlıklarında sunucu sürümü ve işletim sistemi hakkında bilgi gösterir. Bu bilgiler, potansiyel saldırganlar için faydalı olabilir. Bu bilgileri gizlemek için /etc/apache2/apache2.conf dosyasını düzenleyin:
sudo nano /etc/apache2/apache2.conf
Aşağıdaki satırları bulun veya ekleyin:
ServerTokens Prod
ServerSignature Off
ServerTokens Prod, Apache’nin sadece “Apache” olarak görünmesini sağlar (sürüm numarası olmadan). ServerSignature Off, sunucu tarafından oluşturulan sayfalarda (hata sayfaları gibi) sunucu sürümünün gösterilmesini engeller.
* Dizin Listelemeyi Devre Dışı Bırakma: Eğer bir dizinde index.html veya index.php gibi bir dizin dosyası yoksa, Apache varsayılan olarak dizin içeriğini listeler. Bu, hassas bilgilerin açığa çıkmasına neden olabilir. Dizin listelemeyi devre dışı bırakmak için, sanal ana bilgisayar yapılandırmanızdaki bloğunda Options -Indexes kullanın:
Options -Indexes FollowSymLinks
AllowOverride All
Require all granted
Indexes seçeneğinin önündeki eksi işareti, bu özelliğin devre dışı bırakıldığı anlamına gelir.
* Gereksiz Modülleri Devre Dışı Bırakma: Kullanmadığınız Apache modüllerini devre dışı bırakmak, sunucunuzun yüzey alanını azaltır ve potansiyel güvenlik açıklarını azaltır. Örneğin, eğer CGI betikleri kullanmıyorsanız mod_cgi veya mod_cgid modüllerini devre dışı bırakabilirsiniz.
* mod_security Kullanımı: mod_security, Apache için güçlü bir Web Uygulaması Güvenlik Duvarı (WAF) modülüdür. SQL enjeksiyonu, XSS (Cross-Site Scripting) gibi yaygın web saldırılarına karşı koruma sağlar. Kurulumu ve yapılandırması daha karmaşık olsa da, yüksek güvenlik gerektiren uygulamalar için önerilir.
* Düzenli Güncellemeler: Sisteminizdeki ve Apache’deki güvenlik güncellemelerini düzenli olarak yapmak, bilinen güvenlik açıklarına karşı korunmanın en temel yoludur.
Tüm bu değişikliklerden sonra Apache’yi yeniden başlatmayı unutmayın.
5.4 Performans Optimizasyonu
Web sitenizin yükleme hızını artırmak ve sunucu kaynaklarını daha verimli kullanmak için Apache performansını optimize edebilirsiniz:
* MPM (Multi-Processing Modules) Seçimi: Apache, istemci bağlantılarını işlemek için farklı MPM’ler kullanır. Ubuntu 20.04’te varsayılan olarak event MPM etkinleştirilmiştir ve çoğu modern web sitesi için iyi bir performans sunar. Ancak, PHP’yi mod_php ile kullanıyorsanız prefork MPM’ye geçmeniz gerekebilir. PHP-FPM kullanıyorsanız event MPM daha uygun olacaktır.
* Etkin MPM’yi kontrol etmek için: sudo apache2ctl -V | grep -i mpm
* Bir MPM’yi devre dışı bırakmak: sudo a2dismod [mpm_adı]
* Bir MPM’yi etkinleştirmek: sudo a2enmod [mpm_adı]
* Örneğin, prefork MPM’yi etkinleştirmek için:
sudo a2dismod mpm_event
sudo a2enmod mpm_prefork
sudo systemctl restart apache2
* mod_deflate (Sıkıştırma): Bu modül, sunucudan gönderilen dosyaları (HTML, CSS, JavaScript gibi metin tabanlı içerikler) sıkıştırarak bant genişliğini azaltır ve sayfa yükleme sürelerini hızlandırır.
sudo a2enmod deflate
sudo systemctl restart apache2
Daha sonra /etc/apache2/mods-enabled/deflate.conf dosyasını düzenleyerek hangi dosya türlerinin sıkıştırılacağını yapılandırabilirsiniz.
* mod_expires (Önbellekleme): Bu modül, tarayıcılara belirli dosya türlerini ne kadar süreyle önbelleğe alacaklarını bildirerek tekrar eden ziyaretlerde sayfa yükleme sürelerini azaltır.
sudo a2enmod expires
sudo systemctl restart apache2
/etc/apache2/mods-enabled/expires.conf veya sanal ana bilgisayar yapılandırma dosyanızda önbellekleme kurallarını tanımlayabilirsiniz.
6. Sorun Giderme ve Yaygın Hatalar
Apache ile çalışırken bazı sorunlarla karşılaşmanız olasıdır. Sorun giderme yeteneği, bir sunucu yöneticisinin en önemli becerilerinden biridir.
6.1 Apache Günlüklerini Kontrol Etme
Apache’nin günlük dosyaları, sorun giderme için en değerli bilgi kaynaklarıdır.
* Hata Günlüğü: Sunucunun karşılaştığı sorunları, uyarıları ve hataları kaydeder.
sudo tail -f /var/log/apache2/error.log
Bu komut, hata günlüğünü gerçek zamanlı olarak izlemenizi sağlar.
* Erişim Günlüğü: Web sitenize yapılan tüm istekleri kaydeder. Hangi sayfaların ziyaret edildiğini, hangi IP adreslerinden istek geldiğini ve HTTP durum kodlarını gösterir.
sudo tail -f /var/log/apache2/access.log
Sanal ana bilgisayarlar için özel günlük dosyaları ayarladıysanız (örneğin /var/log/apache2/ornekalanadi.com_error.log), bunları kontrol etmeyi unutmayın.
6.2 Yapılandırma Söz Dizimi Hataları
Apache yapılandırma dosyalarında yapılan hatalar, servisin başlamamasına veya beklenmedik davranışlara neden olabilir.
sudo apache2ctl configtest
Bu komut, yapılandırma dosyalarınızdaki söz dizimi hatalarını kontrol eder. Eğer bir hata varsa, hatanın konumunu ve türünü belirtir. Örneğin, Syntax error on line 123 of /etc/apache2/apache2.conf: Invalid command 'ServerNamee' gibi bir çıktı alabilirsiniz.
6.3 Bağlantı Noktası Çakışmaları
Apache’nin varsayılan olarak 80 (HTTP) ve 443 (HTTPS) numaralı bağlantı noktalarını dinlemesi gerekir. Başka bir servis bu bağlantı noktalarını kullanıyorsa, Apache başlatılamaz.
Hangi servislerin hangi bağlantı noktalarını kullandığını kontrol etmek için:
sudo ss -tulnp | grep -E ':80|:443'
veya
sudo netstat -tulnp | grep -E ':80|:443'
Bu komutlar, 80 veya 443 numaralı bağlantı noktalarını dinleyen süreçleri listeler. Eğer Apache dışında bir süreç listeleniyorsa, o servisi durdurmanız veya bağlantı noktasını değiştirmeniz gerekebilir.
6.4 Güvenlik Duvarı Engellemeleri
UFW kurallarınızın doğru yapılandırıldığından emin olun. Eğer 80 veya 443 numaralı bağlantı noktalarına izin verilmediyse, web siteniz dışarıdan erişilemez olacaktır.
sudo ufw status verbose
Bu komut, UFW’nin tüm kurallarını ayrıntılı bir şekilde gösterir. Apache için gerekli bağlantı noktalarının “ALLOW” olarak listelendiğinden emin olun.
7. Sonuç
Bu rehberde, Apache web sunucusunu Ubuntu 20.04 üzerine kurmanın tüm adımlarını, temel yapılandırmalarını, sanal ana bilgisayarlar oluşturmayı, güvenlik ve performans ipuçlarını ve yaygın sorun giderme yöntemlerini ayrıntılı olarak ele aldık. Artık kendi web sitelerinizi barındırmak için sağlam ve güvenilir bir Apache sunucusuna sahipsiniz.
Kurulumdan sonraki adımlarınız şunlar olabilir:
* İçerik Yönetim Sistemi (CMS) Kurulumu: WordPress, Joomla, Drupal gibi bir CMS kurarak web sitenizin içeriğini kolayca yönetebilirsiniz.
* Veritabanı Kurulumu: Çoğu web uygulaması bir veritabanı gerektirir. MySQL/MariaDB veya PostgreSQL gibi bir veritabanı sunucusu kurmanız gerekebilir.
* FTP Sunucusu Kurulumu: Dosyaları sunucuya daha kolay aktarmak için bir FTP sunucusu (örneğin vsftpd) kurabilirsiniz.
* İleri Seviye Apache Yapılandırmaları: Daha karmaşık yönlendirmeler, kimlik doğrulama mekanizmaları veya özel modüller gibi ihtiyaçlarınıza göre Apache’yi daha da özelleştirebilirsiniz.
Unutmayın ki bir sunucuyu yönetmek sürekli bir öğrenme ve dikkat gerektiren bir süreçtir. Güvenlik güncellemelerini takip etmek, günlükleri düzenli olarak kontrol etmek ve performans iyileştirmeleri yapmak, sunucunuzun sağlıklı ve güvenli çalışmasını sağlamak için önemlidir.
