Her ne kadar hafifliği ve hızı dolayısıyla nginx tercih edenlerimiz olsa da, apache halen web sunucu yazılımı olarak liderliği elinde tutuyor. Hatta son aylarda kullanım yüzdesinde artış gözlemlendi.

Bu kılavuzda centos 8 üzerinde apache ve virtual host kurulumu yapacağız ve firewall ayarlarını uygulayacağız. İşlemler için root olmayan, sudo yetkilerine sahip bir kullanıcı seçmeniz gerekiyor.

 

Adım 1 - Apache Kurulumu

Apache CentOS 8 resmi depolarında olduğu için direkt kuruluma geçebiliriz. Onayınızla birlikte apache ve tüm bağımlılıkları kurulacaktır.

sudo dnf install httpd

 

Adım 2 - Firewall Ayarları

Sunucuda firewalld programının kurulu olduğunu varsayıyorum.

Web sitenizde güvenli katman (SSL) üzerinden erişim verecekseniz eğer -ki artık ssl olmayan site kalmadı- 433 portunu açmamız gerekiyor.

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

Bu komutla ssl portunu kalıcı olarak açtık ve firewall ayarlarını yeniden yükledik. Artık sunucumuz SSL kurulumundan sonra sorunsuz hizmet verebilir.

 

Adım 3 - Web Sunucu Kontrolü

Apache kurulduktan sonra otomatik olarak çalışmaya başlamıyor. Bu nedenle her açılışta otomatik başlayacak şekilde ayarlamamız gerekli.

sudo systemctl enable httpd
sudo systemctl start httpd
sudo systemctl status httpd

Komutun çıktısı aşağıdaki gibi olacaktır:

httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disa>
   Active: active (running) since Thu 2020-04-23 22:25:33 UTC; 11s ago
     Docs: man:httpd.service(8)
 Main PID: 14219 (httpd)
   Status: "Running, listening on: port 80"
    Tasks: 213 (limit: 5059)
   Memory: 24.9M
   CGroup: /system.slice/httpd.service
           ├─14219 /usr/sbin/httpd -DFOREGROUND
           ├─14220 /usr/sbin/httpd -DFOREGROUND
           ├─14221 /usr/sbin/httpd -DFOREGROUND
           ├─14222 /usr/sbin/httpd -DFOREGROUND
           └─14223 /usr/sbin/httpd -DFOREGROUND

Çıktıdan anlaşılacağı üzere, apache her açılışta otomatik başlayacak şekilde ayarlandı ve sorunsuz başlatıldı. Tarayıcı adres çubuğuna sunucu ip adresinizi yazdığınızda apache hoşgeldiniz sayfasını göreceksiniz.

 

Adım 4 - Virtual Host Ayarları

Herhangi bir sunucuda birden çok web sayfasını barındırmak için virtual host kullanıyoruz. Konfigürasyonu oldukça kolaydır. Burada örnek alan adı olarak example.com kullanacağım. Kurulum yaparken bu değeri kendi alan adınızla değiştirmelisiniz.

sudo mkdir -p /var/www/example.com/html
sudo mkdir -p /var/www/example.com/log
sudo chown -R $USER:$USER /var/www/example.com/html
sudo chmod -R 755 /var/www
sudo nano /var/www/example.com/html/index.html

Burada ne yaptığımızı açıklayayım. Öncelikle alan adımızın tarayıcıda göstereceği içeriği barındıracak olan html ve example.com dizinlerini oluşturduk. Ekstra log dizini açtık. html dizini için erişim hakkını kullanıcımıza verdik ki sorunsuz dosya işlemleri yapalım. /var/www dizini için 755 erişim yetkisi tanımladık ve en son olarak html dizini içerisinde ana sayfamız olacak index.html dosyasını oluşturduk.

Şimdi bu index.html dosyasının içine aşağıdaki içeriği yapıştırın.

<html>
  <head>
    <title>Example.com Deneme Sayfası</title>
  </head>
  <body>
    <h1>Tebrikler! The example.com virtual host başarıyla kuruldu.</h1>
  </body>
</html>

Başlangıç aşamaları bu kadardı. Şimdi virtual host kurulumuna geçmeden önce yapmamız gereken son iki ayar var. Sitemizin içeriğini barındıracağımız sites-available dizinini açacağız ve sites-enabled ile apache’ye sitemizin yayına hazır olduğunu ileteceğiz.

Öncelikle gerekli 2 dizini açalım:

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

Sıra apache ana konfigürasyon dosyasına ayarları girmeye geldi.

sudo nano /etc/httpd/conf/httpd.conf
..

# Supplemental configuration
#
# Load config files in the "/etc/httpd/conf.d" directory, if any.

IncludeOptional conf.d/*.conf
IncludeOptional sites-enabled/*.conf # BU SATIRI EKLEYİN

Apache artık web sitemizin nerede olacağını biliyor. Bakacağı dizinde ihtiyacımız olan virtual host dosyasını oluşturabiliriz.

Aşağıdaki içeriği example.com.conf dosyasının içine yapıştırın.

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

Virtual host dosyamızı oluşturduk. Artık geriye sembolik bağlantıyı verip host dosyasını aktif hale getirmek kaldı.

sudo ln -s /etc/httpd/sites-available/example.com.conf /etc/httpd/sites-enabled/example.com.conf

Virtual host dosyamız ayarlandı ve web sitemizin içeriğini sunmaya hazır. Apache’yi yeniden başlatmadan önce SELinux ayarlaması yapacağız.

 

Adım 5 - SELinux Ayarları

Varsayılan SELinux ayarlarında, apache web sitemizin log dizininde sadece okuma yetkisine sahiptir. Biz apache’ye log oluşturma ve yazma yetkisi tanıyacağız. Bunu yapmak için sırasıyla aşağıdaki komutları girin:

sudo setsebool -P httpd_unified 1
sudo semanage fcontext -a -t httpd_log_t "/var/www/example.com/log(/.*)?"
sudo restorecon -R -v /var/www/example.com/log

Eğer semanage paketi kurulu değilse:

sudo dnf install policycoreutils-python -y

ile kurulum gerçekleştirebilirsiniz.

Bu komut dizini ile apache’ye log dizininde yazma ve okuma erişimleri vermiş olduk. Artık virtual host kurulumunu internet ortamında test edebiliriz.

Apache’yi yeniden başlatarak işe başlayalım:

sudo systemctl restart httpd

Log dizini için yetkilendirmeyi kontrol edelim:

ls -lZ /var/www/example.com/log

Aşağıdaki gibi bir çıktı alacaksınız:

-rw-r--r--. 1 root root system_u:object_r:httpd_log_t:s0 0 Apr 24 00:06 error.log
-rw-r--r--. 1 root root system_u:object_r:httpd_log_t:s0 0 Apr 24 00:06 requests.log

SELinux yetkilendirme ayarları doğru yapıldı ve sunucu web ortamına açılmak için hazır durumda. Tarayıcıdan example.com alan adını çağırdığınızda index.html dosyasının içeriği gelecektir.

Aynı adımları tekrar ederek dilediğiniz kadar virtual host oluşturabilir ve domain host edebilirsiniz. Host edeceğiniz web siteleri için farklı kullanıcılar oluşturabilir ve onlara yetkilendirme atayabilir ya da tek bir kullanıcı ile devam edebilirsiniz. Tamemen sizin seçiminize kalmış bir olay.

Sorunuz olursa lütfen konu altına yazınız.