CentOS 8'de Apache Sanal Ana Bilgisayarla Nasıl Kurulur


Apache web sunucusu, barındırma sektöründe büyük bir pazar payına sahip olmaya devam eden açık kaynaklı ve popüler bir HTTP web sunucusudur. Modül geliştirmeleri, çoklu protokol desteği, basitleştirilmiş yapılandırma ve çoklu dil desteği gibi birçok özellikle birlikte gelir.

Ayrıca Okuyun: CentOS 8'e Nginx Nasıl Kurulur?

Bu kılavuzda, Apache web sunucusunun CentOS 8 ve RHEL 8'de Sanal Ana Bilgisayar ortamıyla kurulumu konusunda size yol göstereceğiz. Bu eğitimin yazıldığı sırada Apache'nin en son sürümü Apache 2.2.43'tür.

Apache Web Sunucusunun Kurulumu

Başlamak için öncelikle aşağıdaki dnf komutunu kullanarak CentOS 8 veya RHEL 8 sistem paketi listenizi güncelleyin.

sudo dnf update

Güncelleme tamamlandıktan sonra aşağıdaki komutu yürüterek Apache web sunucusunu yükleyin.

sudo dnf install httpd

Kurulduktan sonra rpm komutunu çalıştırarak Apache sürümünü doğrulayabilirsiniz.

rpm -qi httpd

Komut, paketin sürümü, yayın tarihi, yapısı ve mimarisi gibi bir dizi bilgiyi yazdırır.

Apache HTTP web hizmetini başlatmak için systemctl komutunu çalıştırın.

sudo systemctl start httpd

Hizmetin çalışıp çalışmadığını doğrulamak için yürütün.

sudo systemctl status httpd

Çıktıda yeşil renkli "aktif" durumu, Apache web sunucusunun çalışır durumda olduğunu gösterir.

Web sunucusunun çalıştığına dair şüpheleri ortadan kaldırmak için, gösterildiği gibi sunucunuzun IP adresine veya alan adına göz atarak Apache'den bir test sayfası isteyin.

http://server-ip  

Ifconfig komutunu çalıştırarak sunucu IP'nizi alabilirsiniz. Sunucunuz bulutta barındırılıyorsa curl komutunu çalıştırarak genel IP'yi alabilirsiniz.

curl ifconfig.me 
OR
curl -4 icanhazip.com

Sunucunun IP adresine göz attığınızda aşağıdaki web sayfasının görüntülenmesini sağlamalısınız.

Bu, web sunucusunun çalıştığına dair kesin bir onaydır.

Apache Web Sunucusunu Yönetme

Apache kurulu ve çalışır durumdayken Apache'yi yönetmek için systemctl inceleme aracını kullanabilirsiniz.

Örneğin Apache'yi durdurmak için şu komutu çalıştırın:

sudo systemctl stop httpd

Hizmeti bir kez daha başlatmak için şunu yürütün:

sudo systemctl start httpd

Yapılandırma dosyalarından herhangi birinde değişiklik yaptıysanız ve değişiklikleri uygulamak için yeniden başlatmanız gerekiyorsa şu komutu yürütün:

sudo systemctl restart httpd

Hizmetin yeniden başlatılması genellikle hizmetin kesintiye uğramasına neden olur. Daha iyi bir alternatif, bağlantıda herhangi bir kesinti olmadan basitçe yeniden yüklemektir.

sudo systemctl reload httpd

Apache web sunucusunu önyükleme veya yeniden başlatma sırasında otomatik olarak başlatmak için aşağıdaki komutu çalıştırın. Bu, Apache'nin sizin müdahaleniz olmadan otomatik olarak başlatılmasını sağlayacaktır.

sudo systemctl enable httpd

Hizmeti açılışta otomatik olarak başlatmamayı seçerseniz şunu çalıştırın:

sudo systemctl disable httpd

Apache Sanal Konaklarını Ayarlama

Varsayılan olarak Apache web sunucusu yalnızca bir web sitesine hizmet verecek veya barındıracak şekilde yapılandırılmıştır. Yalnızca bir web sitesini barındırmak istiyorsanız bu adıma gerek yoktur. Ancak sunucunuzda birden fazla alan adı barındırmayı planlıyorsanız Apache sanal konaklarını yapılandırmanız gerekir.

Sanal ana bilgisayar, varsayılan alandan ayrı bir etki alanı ayarlamanıza olanak tanıyan yapılandırmaları içeren ayrı bir dosyadır. Bu kılavuz için crazytechgeek.info alanı için sanal bir ana makine kuracağız.

Varsayılan sanal ana bilgisayar /var/www/html dizininde bulunur. Bu yalnızca tek bir site için işe yarar. Alan adımıza ayrı bir sanal host oluşturmak için gösterildiği gibi /var/www dizini içerisinde başka bir dizin yapısı oluşturacağız.

sudo mkdir -p /var/www/crazytechgeek.info/html

Ayrıca günlük dosyalarını depolamak için bir dizin de oluşturabilirsiniz.

sudo mkdir -p /var/www/crazytechgeek.info/log

Daha sonra, gösterildiği gibi $USER ortam değişkenini kullanarak dosya izinlerini düzenleyin.

sudo chown -R $USER:$USER /var/www/crazytechgeek.info/html

Ayrıca webroot dizininin izinlerini de gösterildiği gibi ayarlayın.

sudo chmod -R 755 /var/www

Daha sonra gösterildiği gibi örnek bir index.html dosyası oluşturun.

sudo vim /var/www/crazytechgeek.info/html/index.html

Klavyede 'i' harfine basın ve sanal ana bilgisayarı test ederken web tarayıcısında görüntülenecek örnek içeriğin bir kısmını gösterildiği gibi yapıştırın.

<html>
  <head>
    <title>Welcome to crazytechgeek.info!</title>
  </head>
  <body>
    <h1>Success! The crazytechgeek.info virtual host is up and perfectly working!</h1>
  </body>
</html>

Yapılandırma dosyasını kaydedin ve çıkın.

Örnek dizin dosyası ve site dizini oluşturulduktan sonra artık devam edebilir ve sanal ana bilgisayar dosyasını oluşturabilirsiniz. Sanal ana bilgisayar dosyası, alan adınızın site yapılandırmasını içerecek ve Apache'ye, istemcilerin isteklerine nasıl yanıt vereceği konusunda talimat verecektir.

Sanal ana bilgisayar dosyası, alan adınızın site yapılandırmasını içerecek ve Apache'ye, istemcilerin isteklerine nasıl yanıt vereceği konusunda talimat verecektir. Ancak devam ederek 2 dizin oluşturmanız gerekir: sites-available ve sites-enabled dizinleri.

Sanal ana bilgisayar dosyası sites-available dizininde depolanırken, sites-enabled dizini sanal ana bilgisayara sembolik bağlantıyı içerecektir.

Her iki dizini de gösterildiği gibi oluşturun.

sudo mkdir /etc/httpd/sites-available
sudo mkdir /etc/httpd/sites-enabled

Daha sonra, Apache web sunucusunun ana yapılandırma dosyasını değiştirin ve Apache'ye, sitelerin etkin olduğu dizinde sanal ana bilgisayarı nerede bulacağını söyleyin.

sudo vim /etc/httpd/conf/httpd.conf

Satırı yapılandırma dosyasının en sonunda gösterildiği gibi ekleyin.

IncludeOptional sites-enabled/*.conf

Kaydet ve çık.

Şimdi gösterildiği gibi bir sanal ana bilgisayar dosyası oluşturun:

sudo vim /etc/httpd/sites-available/crazytechgeek.info

İçeriği aşağıya yapıştırın ve crazytechgeek.info'yu kendi alan adınızla değiştirin.

<VirtualHost *:80>
    ServerName www.crazytechgeek.info
    ServerAlias crazytechgeek.info
    DocumentRoot /var/www/crazytechgeek.info/html
    ErrorLog /var/www/crazytechgeek.info/log/error.log
    CustomLog /var/www/crazytechgeek.info/log/requests.log combined
</VirtualHost>

Dosyayı kaydedip çıkın.

Şimdi sites-enabled dizininde sembolik bir bağlantı oluşturarak sanal ana bilgisayar dosyasını etkinleştirin.

sudo ln -s /etc/httpd/sites-available/crazytechgeek.info.conf /etc/httpd/sites-enabled/crazytechgeek.info.conf

Sanal Ana Bilgisayarlar için SELinux İzinlerini Ayarlama

CentOS 8 ve RHEL 8, Linux sisteminin güvenliğini güçlendirmeye yönelik bir güvenlik modülü olan SELinux ile birlikte gelir. Önceki adımda özel bir log dizini yapılandırdığınız için, Apache web sunucusuna dizine yazması talimatını vermek üzere bazı SELinux politikalarını güncellemeniz gerekir.

SELinux Apache politikalarını ayarlamada 2 yaklaşım vardır: Politikaları evrensel olarak ayarlamak ve bir dizindeki politikaları ayarlamak. İkincisi daha çok tercih edildiği için tercih edilir.

Bir Dizindeki SELinux Politikalarını Ayarlama

Günlük dizini için SELinux izinlerini düzenlemek size Apache'nin web sunucusunun politikaları üzerinde mutlak kontrol sağlar. Bu yöntem oldukça uzundur ve sanal ana bilgisayar yapılandırma dosyasında belirtilen ek dizinler için bağlam türünü manuel olarak yapılandırmanızı gerektirir.

Başlamadan önce, ilk olarak SELinux tarafından günlük dizinine atanan içerik türünü doğrulayın:

sudo ls -dlZ /var/www/crazytechgeek.info/log/

Çıktı aşağıda sahip olduğumuza benzer olmalıdır.

Çıktıda ayarlanan içerik şu şekildedir: httpd_sys_content_t. Bu, web sunucusunun yalnızca günlük dizinindeki dosyaları okuyabildiğini gösterir. Apache'nin günlük girişleri oluşturup dizine eklemesini sağlamak için bu bağlamı httpd_log_t olarak değiştirmeniz gerekir.

Bu nedenle şu komutu yürütün:

sudo semanage fcontext -a -t httpd_log_t "/var/www/crazytechgeek.info/log(/.*)?"

Aşağıdaki hatayı alıyorsanız “semanage: command not Found”.

Bu, semanage komutunu sağlayan paketlerin kurulu olmadığı anlamına gelir. Bu hatayı düzeltmek için bu paketleri yüklemeniz gerekir. Ancak önce aşağıdakileri çalıştırarak hangi paketlerin semanage komutunu sağladığını kontrol edin:

sudo dnf whatprovides /usr/sbin/semanage

Çıktı bize semanage sağlayan policycoreutils-python-utils paketini veriyor.

Şimdi paketi gösterildiği gibi DNF paket yöneticisini kullanarak yükleyin.

sudo dnf install policycoreutils-python-utils

Bağlamı değiştirme komutu artık çalışmalıdır.

sudo semanage fcontext -a -t httpd_log_t "/var/www/crazytechgeek.info/log(/.*)?"

Değişiklikleri kaydetmek ve kalıcı hale getirmek için restorecon komutunu gösterildiği gibi çalıştırın:

sudo restorecon -R -v /var/www/crazytechgeek.info/log

Komutu bir kez daha çalıştırarak değişiklikleri onaylayabilirsiniz:

sudo ls -dlZ /var/www/crazytechgeek.info/log/

Çıktıda görüldüğü gibi içerik türünün httpd_log_t olarak değiştiğini unutmayın.

Uygulanacak değişiklikler için Apache'yi yeniden başlatın.

sudo systemctl restart httpd

Artık Apache'nin günlük dosyalarını günlük dizinine kaydedip kaydetmediğini, içeriğini gösterildiği gibi listeleyerek doğrulayabilirsiniz:

ls -l /var/www/crazytechgeek.info/log/

Gösterildiği gibi iki günlük dosyasını görebilmeniz gerekir: hata günlüğü ve istek günlüğü dosyaları.

Apache Sanal Ana Bilgisayarını Test Etme

Son olarak Apache web sunucusunun sanal ana bilgisayar dosyanıza hizmet verdiğinden emin olmanız gerekir. Bunu yapmak için tarayıcınızı açın ve sunucunuzun IP adresine veya alan adına gidin:

http://domain-name

Mükemmel! Bu, her şeyin yolunda gittiğini ve sanal ana makinemize beklendiği gibi hizmet verildiğini gösterir.

Çözüm

Bu kılavuzda Apache web sunucusunun CentOS 8 ve RHEL 8'e nasıl kurulacağını ve ayrıca bir sanal ana bilgisayar dosyasının nasıl yapılandırılacağını öğrendik. Ekstra bir alan adı için içerik sunun. Ek etki alanlarını barındırmak için uygun olduğunu düşündüğünüz birden çok sanal ana bilgisayar dosyasını yapılandırmaktan çekinmeyin.

Eksiksiz bir barındırma yığını kurmak istiyorsanız CentOS 8'e bir LAMP yığını yüklemenizi öneririm.