Eminim ki BT sektöründeki herkesin evinde, işyerinde, ya da profesyonel yaşamında muhakkak bir Web sunucuya ihtiyacı oluyor. Ne var ki ihtiyaç yalnızca Web sunucu kurmak ile bitmiyor. Sunucuyu kurduktan sonra üzerinde birden fazla web uygulaması çalıştırmak gerekiyor. Her web uygulaması için ayrı bir sunucu mu kuracağız? Elbette hayır. Bu noktada imdadımıza bütün Web sunucuların desteklemiş olduğu Virtual Host yapılandırması koşuyor.
İşin hikaye kısmını özetlediğimize göre artık teknik tarafa geçebiliriz.
İşe öncelikle bir Centos 6,5 indirerek başlıyoruz. http://isoredirect.centos.org/centos/6/isos/ adresinden donanımınıza uygun işletim sistemini seçip indirebilirsiniz.
İşletim sistemini sunucuya kurup çalıştırdıktan sonra, Sunucu üzerinden ya da uzaktan bağlanma yoluyla kuruluma başlıyoruz.
# su
Komutu ile root olmalıyız.
Hazırlıklar tamamlandıktan sonra apache sunucuyu kurmak için alttaki komutu kullanıyoruz;
# yum -y install httpd
Çıktısı alttaki gibi olmalı;
Senaryomuz şu şekilde olacak;
- cozumpark.com, mustafa.com, yilmaz.com olarak 3 adet web sitesini bu sunucudan sunacağız.
- Her web sitesi için bir dizin oluşturacağız.
- Her web sitesi için virtual host ayarlarını gireceğiz.
Önce /home klasörü altına virtual hostlarımızı barındıracağımız public_html klasörünü oluşturacağız, sonra bu klasörün altında virtual host dosyalarımızı oluşturacağız. Bu işlemler için aşağıdaki komut setini kullanıyoruz;
# cd /home/
# mkdir public_html
# mkdir -p public_html/cozumpark.com/{public,private,log,cgi-bin,backup}
# mkdir -p public_html/mustafa.com/{public,private,log,cgi-bin,backup}
# mkdir -p public_html/yilmaz.com/{public,private,log,cgi-bin,backup}
Linux/Unix sistemlerde işlemler genelde shell üzerinden yapılır. Shell kullanırken dosyalar üzerinde okuma yazma işlemi yaparken, vi ya da nano gibi text editor programları kullanılır. Ben günlük hayatta vi kullanıyorum, o nedenlede makalede vi ile çalışıyor olacağım.
Klasör ve dosyaları oluşturduktan sonra virtual hostları denemek amacıyla kullanacağımız birer index.html dosyası oluşturmalıyız;
# vi /home/public_html/cozumpark.com/public/index.html
vi editöründe eğer “i” ya da “a” tuşlarına basmazsanız yazma işlemi yapamazsınız, yani insert moda geçemezsiniz. “i” tuşuna basarak yazma moduna geçiyoruz ve alttaki html kodlarını dosyanın içine yapıştırıyoruz;
<html>
<head>
<title>cozumpark.com</title>
</head>
<body>
<h1>cozumpark.com</h1>
</body>
</html>
Esc tuşuna basıp yazma modundan çıkıyoruz ve “:wq” diyerek dosyayı kaydedip çıkıyoruz.
Bu işlemi diğer hostlarımız için de yapalım;
# vi /home/public_html/mustafa.com/public/index.html
Yine “i” tuşuna basarak yazma moduna geçiyoruz, alttaki satırları dosyanın içeriğine ekliyoruz.
<html>
<head>
<title>mustafa.com</title>
</head>
<body>
<h1>mustafa.com</h1>
</body>
</html>
Esc’ye basıp “:wq” ile kaydedip çıkıyoruz.
# vi /home/public_html/yilmaz.com/public/index.html
“i” tuşuna basarak aşağıdaki html kodlarını ekliyoruz;
<html>
<head>
<title>yilmaz.com</title>
</head>
<body>
<h1>yilmaz.com</h1>
</body>
</html>
Esc’ye basıp“:wq” ile kaydedip çıkıyoruz.
Yukarıda neler yaptığımızı birkaç cümle ile özetleyelim;
- apache kurulumunu yaptık.
- Virtual Hostlarımızın bulunacağı /home dizini altında bir public_html klasörü oluşturduk.
- Her bir virtual host için gereken klasörleri oluşturduk.
- Her bir virtual host’un public dizini altına gereken index.html dosyalarını oluşturduk ve kaydettik.
Gelelim Virtual Host ayarlarına;
Apache’nin konfigürasyon dosyasını açıp düzenlemek için vi ile açıyoruz;
# vi /etc/httpd/conf/httpd.conf
Apache’yi konfigüre etmek için dosya içerisinde görüleceği üzere birçok parametre yer almakta. Bir sonraki makalede tamamı ile Apache konfigürasyon parametrelerini anlatıyor olacağım. Orada daha detaylı değineceğimiz dosya içerisindeki birçok parametreyi geçiyor ve direk virtual host ayarlarına geliyorum.
insert moduna geçmeden “/” tuşuna basarak vi içinde arama yapabilirsiniz. Dosya içinde “NameVirtualHost *:80” satırını aratın ve insert moda(“i”’ye basarak)
#NameVirtualHost *:80
satırını
NameVirtualHost *:80
haline getirin.
Esc’ye basarak insert mod’dan çıkabilirsiniz.
Şimdi dosyanın sonuna ekleme yapmak için yine “i” tuşuna basıp şu satırları ekleyelim;
# domain: cozumpark.com
# public: /home/public_html/cozumpark.com/
<VirtualHost *:80>
# Admin mail adresi, sunucu adi, sunucu takma adi
ServerAdmin webmaster@cozumpark.com
ServerName cozumpark.com
ServerAlias www.cozumpark.com
# Index ve web sitesinin ya da uygulamasının bulunacagi public klasor
DirectoryIndex index.html
DirectoryIndex index.php
DocumentRoot /home/public_html/cozumpark.com/public
# Custom log file locations
LogLevel warn
ErrorLog /home/public_html/cozumpark.com/log/error.log
CustomLog /home/public_html/cozumpark.com/log/access.log common
</VirtualHost>
# domain: mustafa.com
# public: /home/public_html/mustafa.com/public
<VirtualHost *:80>
# Admin mail adresi, sunucu adi, sunucu takma adi
ServerAdmin webmaster@mustafa.com
ServerName mustafa.com
ServerAlias www.mustafa.com
# Index ve web sitesinin ya da uygulamasının bulunacagi public klasor
DirectoryIndex index.html
DirectoryIndex index.php
DocumentRoot /home/public_html/mustafa.com/public
# Log dosyalarina iliskin ayarlar
LogLevel warn
ErrorLog /home/public_html/mustafa.com/log/error.log
CustomLog /home/public_html/mustafa.com/log/access.log common
</VirtualHost>
# domain: yilmaz.com
# public: /home/public_html/yilmaz.com/public
<VirtualHost *:80>
# Admin mail adresi, sunucu adi, sunucu takma adi
ServerAdmin webmaster@yilmaz.com
ServerName yilmaz.com
ServerAlias www.yilmaz.com
# Index ve web sitesinin ya da uygulamasının bulunacagi public klasor
DirectoryIndex index.html
DirectoryIndex index.php
DocumentRoot /home/public_html/yilmaz.com/public
# Log dosyalarina iliskin ayarla
LogLevel warn
ErrorLog /home/public_html/yilmaz.com/log/error.log
CustomLog /home/public_html/yilmaz.com/log/access.log common
</VirtualHost>
Vi ile insert mod’da yukarıdaki satırları httpd.conf dosyasına eklediysek, Esc ile insert mod’dan çıkıp “:wq” komutu ile dosyayı kaydedip çıkabiliriz.
Eğer bu işlemleri sorunsuz bir şekilde bitirdiysek
# setsebool httpd_disable_trans 1
Komutu ile apache sunucu için selinux korumasını devre dışı bırakmak gerekiyor.
Bir ayar da dosya izinleri ve sahiplikleri üzerinde yapacağız. Buraya kadar bütün işlemleri root kullanıcısı ile yaptık. Dolayısı ile dosya sahipliği root kullanıcısında olduğu için apache dosyaları çalıştıramayacak ve permission denied hatası verecektir. Bunun önüne geçmek için önce dosyaların sahipliğini değiştireceğiz ve ardından okuma yazma ayarlarını değiştireceğiz ;
# chown apache:apache /home/public_html -R
# chmod 755 /home/public_html -R
Daha sonra sunucumuz üzerine hosts dosyasını düzenleyelim;
# vi /etc/hosts
Ile dosyayı düzenlemek üzere açıyoruz ve “i” ile insert mod geçip aşağıdaki satırları ekliyoruz;
127.0.0.1 cozumpark.com mustafa.com yilmaz.com
x.x.x.x mustafa.com www.mustafa.com
x.x.x.x yilmaz.com www.yilmaz.com
x.x.x.x cozumpark.com www.cozumpark.com
x.x.x.x ‘lerin yerine sunucunuzun IP’sini yazıyoruz ve Esc’ye basıp “:wq” ile kaydedip çıkıyoruz.
Son olarak;
# service httpd restart
komutu ile apache sunucuyu yeniden başlatıyoruz.
Sunucuyu yeniden başlattıktan sonra deneme yapacağımız istemci makinesinin hosts dosyasını da değiştirmemiz gerekiyor. Bu dosyaya Linux’ta /etc/hosts, Windows sistemlerde ise C:\WINDOWS\system32\drivers\etc\hosts yolları ile erişebilirsiniz.
Dosyanın içeriğini şu şekilde değiştirmelisiniz;
x.x.x.x cozumpark.com
x.x.x.x mustafa.com
x.x.x.x yilmaz.com
(x.x.x.x yerine apache’nin bulunduğu sunucunun IP’sini yazmalıyız.)
Web tarayıcınız üzerinden cozumpark.com, yilmaz.com, Mustafa.com adreslerine giderek sonucu görebilirsiniz.
Yaptığımız bütün işlemleri adım adım yazalım;
- Apache sunucu kurulumunu yaptık
- Virtual host’lar için gereken klasörleri oluşturduk
- Virtual host’ları denemek için birer index.html dosyası oluşturduk
- Httpd.conf dosyasında virtual host ayarlarını yaptık
- Selinux ayarlarını yaptık
- Dosya izin ve sahipliklerini değiştirdik
- Sunucu ve Client tarafındaki hosts dosyalarını düzenledik.
- Apache’yi yeniden başlatıp sonuçları gözlemledik.
Bir makalenin daha sonuna geldik. Umarım faydalı bir Makale olmuştur. Bir sonraki makalemde görüşmek dileği ile esen kalın.