Takip et

CentOS 8 Üzerine Apache Web Sunucusu Kurulumu

CentOS 8 Üzerine Apache Web Sunucusu Kurulumu Apache HTTP Sunucusu, dünya genelinde en yaygın kullanılan açık kaynaklı web sunucularından bir

CentOS 8 Üzerine Apache Web Sunucusu Kurulumu

Apache HTTP Sunucusu, dünya genelinde en yaygın kullanılan açık kaynaklı web sunucularından biridir. Esnek yapısı, güçlü özellikleri ve geniş topluluk desteği sayesinde milyonlarca web sitesine güç vermektedir. CentOS 8 ise, kararlılığı, güvenliği ve kurumsal kullanıma uygunluğu ile bilinen popüler bir Linux dağıtımıdır. Bu makalede, CentOS 8 işletim sistemi üzerine Apache web sunucusunun nasıl kurulacağını, temel yapılandırmalarını ve sık karşılaşılan sorunlara çözümleri adım adım ele alacağız. Amacımız, başlangıç seviyesinden ileri seviyeye kadar tüm kullanıcıların Apache’yi CentOS 8 ortamında başarıyla kurup yapılandırmasına yardımcı olmaktır.

Giriş

İnternet dünyasının temel taşlarından biri olan web sunucuları, kullanıcıların web tarayıcıları aracılığıyla talep ettiği web sayfalarını, resimleri, videoları ve diğer içerikleri sunmakla görevlidir. Bu sunucular arasında Apache HTTP Sunucusu, açık kaynak kodlu olması, modüler yapısı ve platform bağımsız çalışabilmesi gibi özellikleriyle öne çıkar. Özellikle Linux tabanlı sunucu sistemlerinde tercih edilen Apache, dinamik içerik sunumu, sanal host yönetimi ve güvenlik özellikleriyle her türlü web projesine uyum sağlayabilir.

CentOS 8, Red Hat Enterprise Linux (RHEL) tabanlı, topluluk destekli bir işletim sistemi olup, özellikle sunucu ortamlarında güvenilirliği ve uzun vadeli desteği nedeniyle sıkça tercih edilir. Bu kombinasyon, stabil ve güçlü bir web altyapısı kurmak isteyenler için ideal bir çözümdür. Bu makalede, CentOS 8’in paket yöneticisi olan DNF’yi kullanarak Apache’yi kuracak, güvenlik duvarı ayarlarını yapılandıracak, temel yapılandırmaları yapacak ve bir web sitesini yayına alacağız. Ayrıca, SSL/TLS ile güvenli bağlantı sağlamayı ve SELinux gibi önemli güvenlik bileşenlerini de ele alacağız.

Ön Gereksinimler

Apache kurulumuna başlamadan önce aşağıdaki ön gereksinimlerin karşılandığından emin olmalısınız:

* CentOS 8 İşletim Sistemi: Kurulumu yapacağınız, temiz bir CentOS 8 sunucusu (fiziksel, sanal makine veya VPS) hazır olmalıdır.
* Sudo Yetkileri: Kurulum ve yapılandırma işlemleri için sudo yetkilerine sahip, root olmayan bir kullanıcı hesabına ihtiyacınız olacaktır. Güvenlik açısından root kullanıcısı ile doğrudan işlem yapmak yerine sudo kullanılması önerilir.
* SSH Erişimi: Sunucuya SSH üzerinden bağlanabilmeniz gerekmektedir. Çoğu sunucu sağlayıcı bu erişimi varsayılan olarak sunar.
* Temel Ağ Bilgisi: Sunucunun IP adresini ve temel ağ yapılandırmalarını bilmek faydalı olacaktır.

Sistem Güncellemesi

Herhangi bir yazılım kurulumuna başlamadan önce sistemin güncel olması, olası uyumluluk sorunlarını gidermek ve en son güvenlik yamalarını almak açısından kritik öneme sahiptir. CentOS 8’de DNF paket yöneticisi ile sisteminizi güncelleyebilirsiniz:

sudo dnf update -y

Bu komut, sisteminizdeki tüm yüklü paketleri en son sürümlerine güncelleyecektir. -y bayrağı, tüm sorulara otomatik olarak “evet” yanıtı verilmesini sağlar. Güncelleme işlemi tamamlandıktan sonra, bazı durumlarda çekirdek (kernel) güncellemeleri nedeniyle sunucuyu yeniden başlatmanız gerekebilir:

sudo reboot

Yeniden başlatma sonrası SSH ile sunucunuza tekrar bağlanabilirsiniz.

Apache Web Sunucusunu Kurma

CentOS 8’de Apache HTTP Sunucusu paketi httpd olarak adlandırılır. Kurulum işlemi oldukça basittir ve DNF paket yöneticisi aracılığıyla gerçekleştirilir:

sudo dnf install httpd -y

Bu komut, httpd paketini ve onunla birlikte gelen tüm bağımlılıkları sisteminize kuracaktır. Kurulum tamamlandığında, Apache’nin temel dosyaları ve yapılandırmaları /etc/httpd dizinine yerleştirilecektir. Web sitenizin içeriği için varsayılan kök dizin ise /var/www/html olacaktır.

Apache Servisini Başlatma ve Etkinleştirme

Apache paketini kurduktan sonra, web sunucusunu başlatmanız ve sistemin her açılışında otomatik olarak başlamasını sağlamanız gerekir. Bu işlemleri systemctl komutu ile yapabiliriz:

sudo systemctl start httpd

Bu komut, Apache servisini hemen başlatır. Servisin durumunu kontrol etmek için:

sudo systemctl status httpd

Çıktıda Active: active (running) ifadesini görmelisiniz. Bu, Apache’nin başarıyla çalıştığı anlamına gelir.

Apache’nin sunucu her yeniden başlatıldığında otomatik olarak başlamasını sağlamak için aşağıdaki komutu kullanın:

sudo systemctl enable httpd

Bu komut, Apache servisi için bir başlangıç kancası (symlink) oluşturur ve sistemin önyükleme sırasında httpd servisini başlatmasını sağlar.

Güvenlik Duvarı Ayarlarını Yapılandırma

CentOS 8, varsayılan olarak firewalld adlı dinamik bir güvenlik duvarı hizmeti kullanır. Apache’nin dışarıdan erişilebilir olması için, web trafiği için kullanılan portları (HTTP için 80, HTTPS için 443) güvenlik duvarında açmanız gerekir.

Öncelikle, güvenlik duvarının çalıştığından emin olun:

sudo systemctl status firewalld

Eğer çalışmıyorsa başlatın ve etkinleştirin:

sudo systemctl start firewalld
sudo systemctl enable firewalld

Şimdi, HTTP ve HTTPS hizmetleri için portları açalım. firewalld önceden tanımlanmış hizmetleri destekler, bu da işimizi kolaylaştırır:

sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https

--permanent bayrağı, bu kuralların güvenlik duvarı yeniden başlatıldığında da kalıcı olmasını sağlar. Değişikliklerin etkili olması için güvenlik duvarını yeniden yüklememiz gerekir:

sudo firewall-cmd --reload

Artık Apache, dış ağdan gelen HTTP ve HTTPS isteklerine yanıt verebilecektir.

Apache Kurulumunu Doğrulama

Apache’nin doğru bir şekilde kurulup çalışıp çalışmadığını kontrol etmenin en kolay yolu, bir web tarayıcısı kullanarak sunucunuzun IP adresine veya alan adına gitmektir.

Sunucunuzun genel IP adresini bilmiyorsanız, aşağıdaki komutlardan birini kullanarak öğrenebilirsiniz:

ip a s

veya harici bir servis kullanarak:

curl -4 ifconfig.me

Tarayıcınızda http://your_server_ip adresini açtığınızda, “CentOS Apache Test Page” başlıklı varsayılan bir Apache test sayfası görmelisiniz. Bu sayfa, Apache’nin başarıyla kurulduğunu ve çalıştığını gösterir.

Temel Apache Yapılandırması

Apache’nin esnekliği, kapsamlı yapılandırma seçeneklerinden gelir. Yapılandırma dosyaları, Apache’nin nasıl davranacağını, hangi portları dinleyeceğini, hangi dizinlerden içerik sunacağını ve daha fazlasını belirler.

Yapılandırma Dosyaları

Apache’nin ana yapılandırma dosyası /etc/httpd/conf/httpd.conf konumundadır. Ancak, daha modüler ve yönetilebilir bir yapı için, çoğu zaman ek yapılandırmalar /etc/httpd/conf.d/ dizinindeki .conf uzantılı dosyalarda yapılır. Bu dizindeki tüm .conf dosyaları Apache tarafından otomatik olarak yüklenir.

* /etc/httpd/conf/httpd.conf: Ana yapılandırma dosyası.
* /etc/httpd/conf.d/: Ek yapılandırma dosyalarını içeren dizin.
* /etc/httpd/conf.modules.d/: Modül yükleme yapılandırmalarını içeren dizin.
* /var/www/html: Varsayılan belge kökü (web sitesi dosyalarının bulunduğu dizin).
* /var/log/httpd/: Erişim ve hata günlüklerinin tutulduğu dizin.

ServerName Ayarı

httpd.conf dosyasında ServerName yönergesi genellikle yorum satırı (hash # ile başlar) olarak gelir. Bu yönergeyi yapılandırmak, Apache’nin başlatılırken veya yeniden yüklenirken DNS çözümleme hataları vermesini engeller ve sunucunun kendisini hangi alan adı veya IP adresiyle tanıtacağını belirtir.

httpd.conf dosyasını bir metin düzenleyici ile açın (örneğin vi veya nano):

sudo vi /etc/httpd/conf/httpd.conf

Dosya içinde ServerName satırını bulun ve yorum satırını kaldırarak sunucunuzun IP adresini veya alan adını ekleyin:

#ServerName www.example.com:80
ServerName your_server_ip_or_domain:80

Değişiklikleri kaydettikten sonra Apache’yi yeniden başlatın:

sudo systemctl restart httpd

Virtual Host (Sanal Sunucu) Oluşturma

Bir sunucuda birden fazla web sitesi barındırmak istiyorsanız, Virtual Host (Sanal Sunucu) yapılandırmalarını kullanmanız gerekir. Her Virtual Host, kendi belge köküne, günlük dosyalarına ve alan adına sahip ayrı bir web sitesini temsil eder.

Yeni bir Virtual Host dosyası oluşturmak için /etc/httpd/conf.d/ dizinini kullanacağız. Örneğin, example.com adında bir web sitesi için example.com.conf adında bir dosya oluşturalım:

sudo vi /etc/httpd/conf.d/example.com.conf

Dosyanın içine aşağıdaki içeriği ekleyin:


    ServerAdmin webmaster@example.com
    DocumentRoot /var/www/example.com/html
    ServerName example.com
    ServerAlias www.example.com
    ErrorLog /var/log/httpd/example.com-error.log
    CustomLog /var/log/httpd/example.com-access.log combined

    
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    

Bu yapılandırmada:
* ServerAdmin: Web sitesi yöneticisinin e-posta adresi.
* DocumentRoot: Web sitesinin dosyalarının bulunduğu dizin.
* ServerName: Web sitesinin ana alan adı.
* ServerAlias: Web sitesinin alternatif alan adları (örneğin, www versiyonu).
* ErrorLog ve CustomLog: Hata ve erişim günlüklerinin kaydedileceği dosyalar.
* bloğu: Belirtilen dizine erişim ve davranış kurallarını tanımlar.
* Options Indexes FollowSymLinks: Dizin listeleme ve sembolik bağlantıları takip etme izinleri.
* AllowOverride All: .htaccess dosyalarının kullanılmasına izin verir.
* Require all granted: Tüm isteklere izin verir.

Şimdi, DocumentRoot olarak belirttiğimiz dizini ve bir test HTML dosyasını oluşturalım:

sudo mkdir -p /var/www/example.com/html
echo "Merhaba example.com" | sudo tee /var/www/example.com/html/index.html

Apache’nin web dizinlerine erişebilmesi için doğru dosya izinlerini ve sahipliklerini ayarlamamız gerekir. Apache varsayılan olarak apache kullanıcısı ve grubu altında çalışır:

sudo chown -R apache:apache /var/www/example.com
sudo chmod -R 755 /var/www/example.com

SELinux Yapılandırması: CentOS’un güvenlik katmanı olan SELinux, Apache’nin yeni oluşturulan dizinlere erişmesini engelleyebilir. Bu durumu düzeltmek için, yeni web dizininin SELinux bağlamını httpd_sys_content_t olarak ayarlamamız gerekir:

sudo semanage fcontext -a -t httpd_sys_content_t "/var/www/example.com(/.*)?"
sudo restorecon -Rv /var/www/example.com

Bu komutlar, /var/www/example.com dizini ve altındaki tüm dosyalar için doğru SELinux bağlamını atar.

Tüm bu değişikliklerden sonra, Apache yapılandırma dosyalarının sözdizimini test etmek ve ardından servisi yeniden başlatmak önemlidir:

sudo apachectl configtest

Eğer çıktı Syntax OK ise, her şey yolunda demektir. Şimdi Apache’yi yeniden başlatın:

sudo systemctl restart httpd

Artık example.com (veya www.example.com) alan adını tarayıcınızda açtığınızda, oluşturduğunuz “example.com çalışıyor!” sayfasını görmelisiniz. (Bu alan adının DNS kayıtlarını sunucunuzun IP adresine yönlendirmeniz gerektiğini unutmayın.)

Apache ile SSL/TLS Kullanımı (HTTPS)

Günümüzde web siteleri için SSL/TLS (HTTPS) kullanımı bir zorunluluk haline gelmiştir. HTTPS, tarayıcı ile sunucu arasındaki iletişimi şifreleyerek veri güvenliğini sağlar, SEO açısından da önemlidir ve birçok modern tarayıcı HTTP sitelerini “güvensiz” olarak işaretler.

CentOS 8’de Apache ile HTTPS kullanmak için mod_ssl modülünü kurmamız gerekir:

sudo dnf install mod_ssl -y

Bu modül, SSL/TLS sertifikalarını yönetmek ve HTTPS bağlantılarını kurmak için gereken bileşenleri sağlar. Kurulumdan sonra Apache’yi yeniden başlatmanız gerekmez, ancak yapılandırma dosyalarıyla çalışırken her zaman yeniden başlatmak iyi bir alışkanlıktır.

HTTPS yapılandırması için bir SSL sertifikasına ihtiyacınız olacaktır. Bu sertifikayı Let’s Encrypt gibi ücretsiz bir sertifika sağlayıcısından alabilir veya kendi imzalı (self-signed) bir sertifika oluşturabilirsiniz.

Let’s Encrypt ile SSL

Let’s Encrypt, ücretsiz, otomatik ve açık bir Sertifika Yetkilisidir (CA). certbot aracı, Let’s Encrypt sertifikalarını Apache ile entegre etmek için en kolay yoldur.

Öncelikle epel-release deposunu etkinleştirmemiz ve ardından certbot ve Apache eklentisini kurmamız gerekiyor:

sudo dnf install epel-release -y
sudo dnf install certbot python3-certbot-apache -y

Kurulumdan sonra, alan adınız için bir sertifika almak üzere certbot‘u çalıştırın:

sudo certbot --apache

certbot, alan adlarınızı otomatik olarak algılamaya çalışacak ve size hangi alan adları için sertifika almak istediğinizi soracaktır. Ayrıca bir e-posta adresi girmeniz ve hizmet şartlarını kabul etmeniz istenecektir. Kurulum sırasında, HTTP trafiğini HTTPS’e yönlendirmek isteyip istemediğiniz de sorulacaktır; genellikle bu seçeneği kabul etmek iyi bir uygulamadır.

certbot işlemi tamamlandığında, sertifikalarınız otomatik olarak Apache yapılandırmanıza eklenecek ve HTTPS üzerinden sitenize erişilebilir olacaktır.

Let’s Encrypt sertifikaları 90 gün geçerlidir. certbot paketi, sertifikaları otomatik olarak yenilemek için bir cron işi veya systemd zamanlayıcısı da kurar. Yenileme işleminin düzgün çalıştığından emin olmak için bir kuru çalıştırma (dry-run) yapabilirsiniz:

sudo certbot renew --dry-run

Kendi İmzalı Sertifika (Self-Signed)

Geliştirme veya test ortamları için kendi imzalı bir sertifika oluşturabilirsiniz. Bu sertifikalar tarayıcılar tarafından güvenilir olarak kabul edilmez ve bir uyarı mesajı gösterir, ancak şifrelenmiş bir bağlantı sağlar.

Kendi imzalı bir sertifika oluşturmak için openssl kullanabiliriz:

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/pki/tls/private/apache-selfsigned.key -out /etc/pki/tls/certs/apache-selfsigned.crt

Bu komut sizden bazı bilgiler (ülke, şehir, organizasyon vb.) isteyecektir. Common Name alanına sunucunuzun IP adresini veya alan adını girin.

Sertifika ve anahtar dosyalarını oluşturduktan sonra, Apache’nin ssl.conf dosyasını düzenleyerek bu sertifikaları kullanmasını sağlayın:

sudo vi /etc/httpd/conf.d/ssl.conf

SSLCertificateFile ve SSLCertificateKeyFile yönergelerini oluşturduğunuz sertifika ve anahtar dosyalarının yollarıyla güncelleyin:

SSLCertificateFile /etc/pki/tls/certs/apache-selfsigned.crt
SSLCertificateKeyFile /etc/pki/tls/private/apache-selfsigned.key

Değişiklikleri kaydedin ve Apache’yi yeniden başlatın:

sudo systemctl restart httpd

Artık tarayıcınızdan https://your_server_ip_or_domain adresine gittiğinizde, bir güvenlik uyarısı ile birlikte sitenize HTTPS üzerinden erişebileceksiniz.

Apache Yönetimi İçin Temel Komutlar

Apache servisini yönetmek için systemctl komutunu kullanırız:

* Başlatma: sudo systemctl start httpd
* Durdurma: sudo systemctl stop httpd
* Yeniden Başlatma: sudo systemctl restart httpd (Servisi durdurur ve tekrar başlatır.)
* Yeniden Yükleme: sudo systemctl reload httpd (Servisi durdurmadan yapılandırma değişikliklerini uygular. Kesinti süresi olmadan değişiklik yapmak için idealdir.)
* Durumu Kontrol Etme: sudo systemctl status httpd
* Sistem Başlangıcında Etkinleştirme: sudo systemctl enable httpd
* Sistem Başlangıcında Devre Dışı Bırakma: sudo systemctl disable httpd

Ayrıca, Apache yapılandırma dosyalarındaki sözdizimi hatalarını kontrol etmek için apachectl komutunu kullanabilirsiniz:

sudo apachectl configtest

Bu komut, Apache’yi yeniden başlatmadan önce olası yapılandırma hatalarını tespit etmenize yardımcı olur.

Sık Karşılaşılan Sorunlar ve Çözümleri

Apache kurulumu ve yapılandırması sırasında bazı yaygın sorunlarla karşılaşabilirsiniz. İşte bunlardan bazıları ve çözümleri:

Firewall Engeli

Sorun: Apache çalışıyor gibi görünüyor, ancak web tarayıcısından erişilemiyor.
Çözüm: Güvenlik duvarınızın HTTP (80) ve HTTPS (443) portlarını açtığından emin olun.

sudo firewall-cmd --list-all
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

SELinux Engeli

Sorun: Web sitesi “Forbidden” hatası veriyor veya oluşturduğunuz dizinlere erişilemiyor.
Çözüm: SELinux’un Apache’nin web dizinlerine erişimini engellemesi yaygın bir durumdur. Web içeriğinizin bulunduğu dizinler için doğru SELinux bağlamını ayarladığınızdan emin olun:

sudo semanage fcontext -a -t httpd_sys_content_t "/var/www/example.com(/.*)?"
sudo restorecon -Rv /var/www/example.com

Eğer hala sorun yaşıyorsanız, SELinux’u geçici olarak devre dışı bırakıp sorunun SELinux’tan kaynaklanıp kaynaklanmadığını kontrol edebilirsiniz: sudo setenforce 0. Sorun çözülürse, kalıcı bir çözüm için bağlamları doğru ayarlamanız veya SELinux kurallarını değiştirmeniz gerekir. Güvenlik açısından SELinux’u kalıcı olarak devre dışı bırakmak önerilmez.

Yapılandırma Hatası

Sorun: Apache servisi başlatılamıyor veya configtest hatası veriyor.
Çözüm: Yapılandırma dosyalarınızda bir sözdizimi hatası olabilir. sudo apachectl configtest komutunu kullanarak hatayı tespit edin. Genellikle hata mesajında hangi dosyanın ve satırın sorunlu olduğu belirtilir. Hata günlüklerini (/var/log/httpd/error_log) kontrol etmek de sorunun kaynağını anlamanıza yardımcı olabilir.

Servis Başlatılamıyor

Sorun: sudo systemctl start httpd komutu başarısız oluyor.
Çözüm: Daha detaylı hata mesajları için sudo systemctl status httpd veya sudo journalctl -xe | grep httpd komutlarını kullanın. Genellikle port çakışması (başka bir servisin 80 veya 443 portunu kullanması) veya yapılandırma dosyasındaki ciddi bir hata bu duruma neden olabilir.

Erişim İzinleri

Sorun: Web sitesi “403 Forbidden” hatası veriyor veya dosyalara erişemiyor.
Çözüm: Web dizinlerinizin ve dosyalarınızın Apache kullanıcısı (apache) tarafından okunabilir olduğundan emin olun.

sudo chown -R apache:apache /var/www/your_website
sudo chmod -R 755 /var/www/your_website

Ayrıca bloklarında Require all granted yönergesinin doğru ayarlandığından emin olun.

Sonuç

Bu makalede, CentOS 8 işletim sistemi üzerine Apache web sunucusunun nasıl kurulacağını, temel yapılandırmalarını ve yaygın sorunlara çözümleri ayrıntılı bir şekilde ele aldık. Apache’nin kurulumu ve ilk yapılandırması oldukça basit olsa da, güvenlik duvarı ayarları, SELinux politikaları ve sanal host yapılandırmaları gibi adımlar dikkat gerektirir.

Artık CentOS 8 sunucunuzda çalışan bir Apache web sunucunuz var. Bu temel kurulumun üzerine PHP, MySQL/MariaDB gibi ek bileşenleri kurarak dinamik web uygulamaları barındırabilir veya WordPress gibi popüler içerik yönetim sistemlerini çalıştırabilirsiniz. Apache’nin modüler yapısı ve geniş yapılandırma seçenekleri sayesinde, ihtiyaçlarınıza göre sunucunuzu daha da optimize edebilir ve güvenlik önlemlerini artırabilirsiniz. Güvenliğiniz için her zaman sisteminizi ve yazılımlarınızı güncel tutmayı, güçlü parolalar kullanmayı ve düzenli yedeklemeler yapmayı unutmayın.

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Gönder

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.
Exit mobile version