# CentOS 8 Apache Virtual Host Kurulumu

- Yazar: [Halit Yeşil](https://halityesil.com/)
- Yayın tarihi: 2020-09-09
- Dil: Türkçe
- Kaynak adres: https://halityesil.com/centos-8-apache-virtual-host-kurulumu/
- Kategori: CentOS
- Etiketler: Apache, centos, centos 8, centos8, Sanal Konak, virtual Host
- Lisans: https://creativecommons.org/licenses/by-nc/4.0/
- Atıf: Halit Yeşil. “CentOS 8 Apache Virtual Host Kurulumu”. halityesil.com, 2020-09-09. https://halityesil.com/centos-8-apache-virtual-host-kurulumu/

---

CentOS 8 yüklü sunucunuza Apache ile birden fazla alan adını host etmek istediğinizde karşınıza VirtualHost yani sanal konaklar kavramı çıkacaktır. Apache Virtual Host ile size alan adlarınız için farklı host alanları açmanıza ve barındırmanıza olanak sağlar.

İşe başlamadan önce sunucu işletim sisteminizin CentOS 8 olduğundan emin olun.

## CentOS 8 Apache Kurulumu

Sunucuzda Apache önceden kurulu değil ise aşağıdaki adımları takip ederek Apache kurulumu ile başlayabilirsiniz.

```bash
sudo dnf install httpd
```

Eğer sisteminizde Firewalld kurulu ve aktifse aşağıdaki komutu çalıştırarak http ve https isteklerini kabul ediyoruz.

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

Şimdi firewall ı yeniden başlatıp değişikliğin geçerli olmasını sağlıyoruz.

```bash
sudo firewall-cmd --reload
```

## Web sunucumuzu kontrol edelim

Apache yi çalıştırıyoruz

```bash
sudo systemctl start httpd
```

Apache çalışma durumuna bakalım

```bash
sudo systemctl status httpd
```

Sonuç çıktısı şöyle olması gerekli "`<span class="has-inline-color" style="color:#00a919">active (running)</span>`" kısmına dikkat!

```bash
httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
  Drop-In: /usr/lib/systemd/system/httpd.service.d
           └─php-fpm.conf
   Active: active (running) since Wed 2020-09-09 13:43:35 +03; 37min ago
     Docs: man:httpd.service(8)
 Main PID: 1655 (httpd)
   Status: "Total requests: 914; Idle/Busy workers 100/0;Requests/sec: 0.404; Bytes served/sec: 2.4KB/sec"
    Tasks: 279 (limit: 47622)
   Memory: 56.0M
   CGroup: /system.slice/httpd.service
           ├─1655 /usr/sbin/httpd -DFOREGROUND
           ├─1814 /usr/sbin/httpd -DFOREGROUND
           ├─1815 /usr/sbin/httpd -DFOREGROUND
           ├─1816 /usr/sbin/httpd -DFOREGROUND
           ├─1817 /usr/sbin/httpd -DFOREGROUND
           ├─1818 /usr/sbin/httpd -DFOREGROUND
           └─3075 /usr/sbin/httpd -DFOREGROUND

Eyl 09 13:43:35 MyServer systemd[1]: Starting The Apache HTTP Server...
Eyl 09 13:43:35 MyServer systemd[1]: Started The Apache HTTP Server.
Eyl 09 13:43:35 MyServer httpd[1655]: Server configured, listening on: port 443, port 80
```

Şimdi Apache'nin reboot sonrasında otomatik başlatılmasını sağlayalım

```bash
sudo systemctl enable httpd
```

Artık Apache nizi kullanabilirsiniz.

## Apache Virtual Host yani Sanal Konakları Yapılandıralım

İlk önce sanal konaklarımızın dosyalarının bulunacağı dizinleri ayarlamakla başlıyoruz. Apache standart olarak "`/var/www/html`" yolundaki dosyaları okur. Ancak CentOS kurulumlarında özellikle ayarlamamışsanız "`/var`" dizini için ayrılan alan düşüktür ve site barındırmanız için yeterli olmayacaktır. Bu nedenle genellikle "`/home`" dizini bu iş için idealdir. Örneğimizde "`/home`" dizini içerisine çeşitli alan adlarını host edeceğiz.

Alan adı olarak "halityesil.com" u kullanacağım. Siz yapılandırmanızda "halityesil.com" olan yerlere kendi alan adınızı yazarak devam edebilirsiniz.

Sitemizin dosyalarının bulunacağı dizini oluşturalım. (burada -p parametresi mevcut olmayan üst dizinlerinde otomatik olarak oluşturulmasını sağlayacaktır)

```bash
sudo mkdir -p /home/halityesil.com/public_html
```

Şimdi apache için logları tutacağı bir dizin oluşturalım

```bash
sudo mkdir -p /home/halityesil.com/log
```

Şimdi dosya izinlerimizi verelim. (-R parametresi içindeki dizinleride aynı değere atar)

```bash
sudo chmod -R 755 /home/halityesil.com
```

Şimdi sitemizi görebilmek için public\_html içerisine bir index.html oluşturalım

```bash
sudo nano /home/halityesil.com/public_html/index.html
```

```markup
<html>
  <head>
    <title>Welcome to Halityesil.com!</title>
  </head>
  <body>
    <h1>Success! The Halityesil.com virtual host is working!</h1>
  </body>
</html>
```

Yukarıdaki html kodunu yazdıktan sonra `CTRL+X` ile kaydedip çıkıyoruz.

Buraya kadar sitemizin dosya ve dizin yapısı hazır.

## Apache Virtual Host Direktiflerini Hazırlayalım

Standart kurulumda apache conf dosyaları "`/etc/httpd/`" dizininde bulunur öncelikle ilgili dizine intikal edelim.

```bash
cd /etc/httpd
```

Şimdi kullanılabilir hostlarımızı tutmak için "`sites-available`" ve aktif hostlarımız için ise "`sites-enabled`" şeklinde iki dizini "`/etc/httpd`" içerisine oluşturalım

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

Nano kullanarak Apache yapılandırma dosyasını açıyoruz ve aktif konaklarımızın okunmasını sağlıyoruz. Bu bölüm genelde `httpd.conf` dosyasının en sonunda yer alır. Kolayca bulmak için en alta inin ve "`IncludeOptional conf.d/*.conf`" deyiminin yerini bulun ve altına ekleyin

```bash
sudo nano /etc/httpd/conf/httpd.conf
```

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

# Sanal konalar buradan okunacak
IncludeOptional sites-enabled/*.conf
```

## Şimdi halityesil.com için bir yapılandırma dosyası hazırlayalım. 

*Nano eğer dosya belirtilen adreste varsa düzenlemek için açar, yoksa boş bir dosya açar ve kaydetmenizi sağlar.*

```bash
sudo nano /etc/httpd/sites-available/halityesil.com.conf
```

```apacheconf
<VirtualHost *:80>
    ServerName halityesil.com
    ServerAlias www.halityesil.com
    DocumentRoot /home/halityesil.com/public_html
    ErrorLog /home/halityesil.com/log/error.log
    CustomLog /home/halityesil.com/log/requests.log combined
</VirtualHost>
```

`CTRL+X` ile kaydetip çıkıyoruz.

Şimdi yapılandırma dosyamızı Apache nin okuması için `sites-enabled` dizinine linkliyoruz. *Bu sayede `sites-enabled` içerisinden sadece linki silerek bir siteyi deaktif yapabilirsiniz. Orjinal dosyanız güvende kalacaktır.*

```bash
sudo ln -s /etc/httpd/sites-available/halityesil.com.conf /etc/httpd/sites-enabled/halityesil.com.conf
```

Buraya kadar Apache Virtual Host kullanıma hazır. Ama önce yapılandırmamızın doğruluğunu kontrol edelim.

```bash
sudo apachectl configtest
```

```bash
Syntax OK
```

Sonuç "Syntax OK" ise şimdi Apache yi yeniden başlatabiliriz.

```bash
sudo systemctl restart httpd
```

Tebrikler artık bir Apache Virtual Host'umuz var.

Takıldığınız, hata aldığınız yapamadığınız yerlerde lütfen sormaktan çekinmeyin. Zamanım oldukça, fırsat buldukça bütün soruları yanıtlamaya gayret ediyorum.
