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.