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.