Bu makalemizde çok yaygın olarak kullanılan Apache Web sunucu üzerinde nasıl Virtual Host tanımlayacağınızı anlatacağız. Virtul Host ile bir web sunucu üzerinde birden fazla web sitesi tanımlayabilir ve her birine özel ayarlar yapabilirsiniz.

Gereksinimler

Bu makalede anlatılan kurulumlar Ubuntu 14.04 LTS ‘e göre anlatılmıştır ancak benzer komutlar ile farklı Linux dağılımlarında da işlem yapabilirsiniz.

İşlemlerimizi root olmayan bir kullanıcı ile gerçekleştireceğiz, bu yüzden yazdığımız komutların önüne “sudo” komutunu ekleyerek root yetkisindeki işlemleri yapabileceğiz. İlk önce Apache kurulumunu “apt-get” komutu ile yapıyoruz.

sudo apt-get update
sudo apt-get install apache2

Bu komutlar tamamlandığında Apache Server kurulumunu tamamlamış oluyoruz.

Dokümanda bizim kullanacağımız örnek virtual host (sanal web sunucular) deneme1.com ve deneme2.com olacak. Tüm konfigürasyon ayarlamalarını bu alan adlarını baz alarak yapacağız. Tüm konfigürasyon değişikliklerini en basit şekilde anlatmaya çalışacağız.

Birinci Adım – Klasör Şablonu Oluşturma

İlk adımımızda iki ayrı alan adının web dosyalarının bulunacağı klasörleri oluşturacağız. Her iki alan adı için ayrı “document root” klasörü oluşturacağız. Her alan adı klasörünün altına “public_html” klasörü oluşturup web dosyalarımızı burada barındıracağız.

Bu dokümanda kullandığımız alan adlarına açtığımı klasörler aşağıdaki gibidir:

sudo mkdir -p /var/www/deneme1.com/public_html
sudo mkdir -p /var/www/deneme2.com/public_html

İkinci Adım – Yetki Verme

Klasörlerimizi oluşturduk ancak klasör sahibi olarak root kullanıcısı görünmektedir. Bunu www-data kullanıcısı olarak değiştiriyoruz.

sudo chown -R www-data:www-data /var/www/deneme1.com/public_html
sudo chown -R www-data:www-data /var/www/deneme2.com/public_html

Üçüncü Adım – Demo Sayfası Hazırlama

Oluşturduğumuz sanal klasörlere basit bir demo sayfası ekliyoruz. Bunun için her bir klasöre “index.html” dosyası oluşturup basit bir html kodu ekliyoruz.

deneme1.com için örnek bir index.html dosyası oluşturup değiştiriyoruz:

nano /var/www/deneme1.com/public_html/index.html

Oluşturduğumuz html dosyasına çok basit bir html kodu yazıyoruz:

<html>
 <head>
 <title>Deneme1.com'a Hos Geldiniz!</title>
 </head>
 <body>
 <h1>Basarili! Deneme1.com Virtual Host'u calisiyor.</h1>
 </body>
</html>

Dosya düzenlememiz bittikten sonra kaydedip çıkıyoruz.

Demo html dosyamızı diğerine kopyalıyoruz:

cp /var/www/deneme1.com/public_html/index.html /var/www/deneme2.com/public_html/index.html

Deneme2.com demo sayfasını düzenliyoruz:

nano /var/www/deneme2.com/public_html/index.html
<html>
 <head>
 <title>Deneme2.com'a Hoş Geldiniz!</title>
 </head>
 <body>
 <h1>Başarılı! Deneme1.com Virtual Host'u çalışıyor.</h1>
 </body>
</html>

Değişiklikler tamamlanınca dosyayı kaydedip çıkıyoruz.

Dördüncü Adım – Yeni Virtual Host Dosyaları Oluşturma

Virtual Host dosyaları her bir domain için tanınlanan ve özel direktifler verilebileceği dosyalardır.

Apache ilk kurulduğunda standart bir virtual host konfigürasyon dosyası olan 000-default.conf dosyası ile gelir. Biz bu dosyayı kopyalayarak diğer kendi domainlerimiz için kullancağız.

Konfig dosyalarını kopyalama işe başlayalım:

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/deneme1.com.conf 

Yeni konfigürasyon dosyamızı root yetkileri ile açıyoruz:

sudo nano /etc/apache2/sites-available/deneme1.com.conf

Dosyanın aşağıdakine benzer bir dosya olması gerekiyor (Örnekte commentler silinmiştir.)

VirtualHost *:80>
 ServerAdmin webmaster@localhost
 DocumentRoot /var/www/html
 ErrorLog ${APACHE_LOG_DIR}/error.log
 CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Değiştireceğimiz alanlar aşağıdaki gibidir.

ServerAdmin admin@deneme1.com
ServerName deneme1.com
ServerAlias www.deneme1.com
DocumentRoot /var/www/deneme1.com/public_html

Sırasıyla bu alanlarda belirlediğimiz değerler server yönetici email adresi, server name ile alan adı adresimiz, server alias ile www kayıtlarının da karşılanacağı ve DocumentRoot ilede web dosyalarımızın bulunduğu klasör yolu.

Tüm değişikliklerden sonra dosyamız aşağıdaki gibi görünmeli:

<VirtualHost *:80>
 ServerAdmin admin@deneme1.com
 ServerName deneme1.com
 ServerAlias www.deneme1.com
 DocumentRoot /var/www/deneme1.com/public_html
 ErrorLog ${APACHE_LOG_DIR}/error.log
 CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Konfigürasyon dosyamızı kaydedip çıkıyoruz.

Aynı Dosyayı İkinci Virtual Host için Kopyalıyoruz:

sudo cp /etc/apache2/sites-available/deneme1.com.conf /etc/apache2/sites-available/deneme2.com.conf

Yeni dosyamızı root yetkisi ile açıyoruz:

sudo nano /etc/apache2/sites-available/deneme2.com.conf

Dosyamızı deneme2.com alan adına göre güncelliyoruz:

<VirtualHost *:80>
 ServerAdmin admin@deneme2.com
 ServerName deneme2.com
 ServerAlias www.test.com
 DocumentRoot /var/www/deneme2.com/public_html
 ErrorLog ${APACHE_LOG_DIR}/error.log
 CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Dosyamızı kaydedip çıkıyoruz.

Beşinci Adım – Virtual Host’ları Aktif Etme

Bu adımda oluşturduğumuz virtual host dosyalarımızı aktif hale getiriyoruz. Bu işlemi gerçekleştirmek için a2ensite komutunu kullanıyoruz:

sudo a2ensite deneme1.com.conf
sudo a2ensite deneme2.com.conf

Ayarların geçerli olması için Apache sunucumuzu yeniden başlatıyoruz:

sudo service apache2 restart

Ve işlemlerimiz tamamlandı. Umarız bu döküman size yardımcı olmuştur. Sorularınız varsa dökümanın altına yorum ekleyerek sorabilirsiniz.