Apache2 VirtualHost Nedir?

Apache HTTP sunucusu, geliştiriciler için esneklik, güç ve yaygın destek sunan popüler bir açık kaynaklı web sunucusudur. Bu modüler tasarım içinde, sanal ana bilgisayar adı verilen bağımsız bir site veya etki alanı oluşturabilirsiniz .
Bir Apache örneği, sanal ana bilgisayarları kullanarak birden çok web sitesine hizmet verebilir. Apache kullanılarak yapılandırılan her etki alanı veya bağımsız site, ziyaretçiyi o sitenin bilgilerini içeren belirli bir dizine yönlendirecektir. Bu, ziyaretçiye aynı sunucunun diğer sitelerden de sorumlu olduğu belirtilmeden yapılır. Bu şema, sunucunuz yükü kaldırabildiği sürece herhangi bir yazılım sınırı olmaksızın genişletilebilir.
Bu kılavuzda, Apache sanal ana bilgisayarları kuracağız.
Daha fazla bilgi için bakınız:
Prerequisites
- Ubuntu 14x -22x
- superuser
- Apache2
Apache sunucusu üzerinde sanal konakları yapılandırmakla bu konak isimleri için sihirli bir şekilde DNS kayıtlarının da oluşturulmasını sağlamış olmazsınız. Bu isimler için ilgili DNS kayıtlarında sizin IP adresinize çözümlenen A kayıtlarının olması gerekir, yoksa sitenize kimse erişemez. Sitelere erişimi yerel olarak denemek isterseniz, bu girdileri hosts dosyanıza yazabilirsiniz. Fakat bu sadece sizin makinenizde çalışır. Yerel ağınızdaki her makinenin hosts dosyasına bu girdileri yazarak yerel ağdan erişimi bu yolla sağlayabilirsiniz ama dış ağdan gelecek ziyaretçileriniz için DNS kayıtlarınızın olması şarttır.
Apache2 VirtualHost Oluşturma
Paket listesini güncelleyin ve resmi Ubuntu depoları aracılığıyla apache2 kurulumunu gerçekleştirin.
sudo apt-get update && sudo apt install apache2 -y
Apache harici olarak iletişim kurduğundan, Güvenlik Duvarınızın istisnaları arasına eklenmelidir. UFW kullanılması durumunda, şunu yazarak Apache ile İstemci arasında çift yönlü iletişime izin verin.
Güvenlik Duvarınız aktif değilse bu adımı geçebilirsiniz.
sudo ufw allow 'Apache Full'
Akabinde sistemimizde apache2 olduğunu doğrulayalım.
apache2 -v && systemctl status apache2

Birden fazla web sitesini barındırmak istiyorsanız, her web sitesi için, sanal ana bilgisayarın web üzerinden erişilebilir olmasını sağlayacak yapılandırma dosyasının doğru ayarlanması koşuluyla, web sitesi sayısı kadar klasörün nasıl oluşturulacağını görmek kolaydır. Bu nedenle /var/www içine gidin ve siteniz için klasör oluşturun. Size kolaylık sağlamak için, ilgili alan adını her klasöre atayabilirsiniz.
sudo mkdir -p /var/www/mehmetoz.com/html/
Mevcut kullanıcınızı bu klasörlerin sahipliklerini tanımlayalım.
sudo chown -R $USER:$USER /var/www/mehmetoz.com/html
Dosyaları okumak ve düzenlemek için doğru izinleri atayın.
sudo chmod -R 755 /var/www/mehmetoz.com

Bu klasörün içeriğine bağlanmaya çalışırken görsel bir geri bildirim almak için etki alanınızda bir index.html dosyası oluşturun.
sudo vim /var/www/mehmetoz.com/html/index.html
Aşağıdaki HTML kodunu metin düzenleyiciye kopyalayın.
<html>
<head>
<title>HOŞGELDİNİZ</title>
</head>
<body>
<h1>mehmetoz.com!</h1>
</body>
</html>

Dosyayı kayıt edin ve çıkın.
:wq!
Şimdi oluşturacağım projenin adreslerini ve yollarını tekrar hatırlayalım.
- Uygulama adı: virtualhost
- Uygulama Yolu: /var/www/mehmetoz.com
- Uygulama Adresi: mehmetoz.com
Şimdi yukarıdaki bilgileri kullanarak uygulamamızın host tanımlamalarını yapalım.
Tek yapmanız gereken, aşağıdaki satırı yazarak sanal ana makineniz için yapılandırma dosyasını oluşturmaktır.
sudo vim /etc/apache2/sites-available/mehmetoz.com.conf
Aşağıdaki içeriği yeni açılan düzenleyiciye yapıştırın, her seferinde mehmetoz.com'u alan adınızla değiştirmeye dikkat edin.
<VirtualHost *:80>
ServerAdmin mehmetoz.com
ServerName mehmetoz.com
ServerAlias www.mehmetoz.com
DocumentRoot /var/www/mehmetoz.com/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Dosyayı kayıt edin ve çıkın.
:wq!
Yukarıdaki satırlardan kısaca bahsedelim.
- ServerAdmin: Uygulamanın server adı.
- Servername: Sanal Ana Bilgisayarın adına atıfta bulunur.
- ServerAlias: sunucu tarafından nasıl çevrileceğini tanımlar .
- DocumentRoot: Uygulamanın çalışma dizini.
- ErrorLog: Sistem günlük dosyalarının yolunu içerir.
- CustomLog: Sistem günlük dosyalarının yolunu içerir.
Artık yeni web sitemizi etkinleştirebiliriz.
sudo a2ensite mehmetoz.com.conf

Varsayılan Apache yapılandırmasını devre dışı bırakalım.
sudo a2dissite 000-default.conf

Siterinizi devre dışı bıraktıktan sonra, konfig dosyalarını belirterek aşağıdaki komut ile etkinleştirebilirsiniz.
sudo a2ensite 000-default.conf
Her şeyin Apache tarafından sağlanan söz dizimini kullandığını doğrulamak için aşağıdaki komut satırını kullanın.
sudo apache2ctl -t
Cevap olarak Sözdizimi OK döndürülmelidir.

Eğer syntax hatası alırsanız. VirtualHost dosyanızda boşluklara ve yazım hatasını kontrol ediniz.
Ardından değişiklikleri uygulamak ve web sunucusunun yapılandırma dosyanızı kullanmasını sağlamak için Apache'yi yeniden başlatalım.
sudo systemctl restart apache2
Alan adımız dış dünyaya açık olmadığı için, içeride test edeceğim. Bilgisayarımızın alan adını tanıması için, hosts dosyamıza bir kayıt ekleyelim. Aşağıdaki yola gidelim ve hosts dosyasını açalım.
hosts dosyasını masaüstüne alabilir veya notepad ++ gibi bir editör ile yönetici olarak açıp düzenleyebilirsiniz.
C:\Windows\System32\drivers\etc

Web sunucu ip adresini ve alan adını ekleyiniz.
192.168.168.130 mehmetoz.com

Son olarak, alan adımızın çözümlenebildiğini doğrulayalım.

Sanal Ana Bilgisayarın yapılandırması başarılıysa, etki alanı klasöründe önceden oluşturulmuş HTML sayfasında yer alan mesaj gösterilecektir.
