|
|
erkdogan@hotmail.com |
Apache web sunucusunda Virtual Hosting , Tek bir Apache web sunucusu üzerinden birden fazla domain ( web alanı ) için hizmet vermek amacı ile kullanılır . Bu dökümanda isme göre ( Name -based ) virtual hosting konfigurasyon yapılacaktır . Tüm web alanları için web sunucusunda tek bir ip adresi kullanılacaktır . IP ye göre ( IP -based ) konfigurasyonda yapılar ama bunun için her web alanını ( domain ) için ayrı ayrı ip adresi tanımlanmalıdır . Bu durumda isme göre konfigurasyon yapmak daha mantıklıdır ( en azından ben öyle düşünüyorum :)) ).
İlk önce Apache web sunucusunu kurmuş olmanız gerekiyor !! eğer apache yi kurmadıysanız http://apache.bilkent.edu.tr/ adresinden apache nin en son sürümünü indiriniz . Apache derlemek için aşağıdaki komutları sıra ile veriniz .
# tar -zxvf apache_1.3.12.tar.gz # cd apache_1.3.12 # mkdir /www # ./configure --prefix=/www && make && make install
--prefix=/www ifadesi ile apache ile ilgili tüm dosyalar /www dizini altına atılacaktır . Bu parametreyi vermezseniz ön tanımlı olarak /usr/local/apache dizini altına atılacaktır.
Apache sunucusunu başlatmak için
# /www/bin/apachectl start
komutunu vermeniz yeterlidir . daha sonra sevdiginiz bir editörde httpd.conf dosyasını açınız .
# vi /www/conf/httpd.conf
Diyelimki www.x.org.tr , www.y.net.tr , www.z.org için virtual hosting yapacağız . ilk önce tüm bu alanlar ( domain ) için dns kaydı yapılması lazım ve dns sunucuda bu alanların ip adresi olarak apache web suncusunun ip adresi verilmelidir . Burada apache web sunucusun ip adresi olarak 195.1.2.4 verilecektir .
Sırası ile x.org.tr , www.z.org için Virtual Hosting bilgilerini yazalım .
NameVirtualHost 195.1.2.4:80 # www.x.org.tr <VirtualHost 195.1.2.4> ServerAdmin root@y.net.tr DocumentRoot /www/htdocs/domains/x ServerName www.lx.org.tr ErrorLog logs/error_x.org.tr TransferLog logs/access_log_x.org.tr </VirtualHost> # www.z.org <VirtualHost 195.1.2.4> ServerAdmin root@y.net.tr DocumentRoot /www/htdocs/domains/z ServerName www.z.org ErrorLog logs/error_z TransferLog logs/access_log_z </VirtualHost>
Şimdi Yukarıdaki ifadelerin ne demek oldugun açıklayalım .
NameVirtualHost 195.1.2.4:80
İfadesindeki 195.1.2.4 Apache web sunucusunun ip adresi ( IP Gerçek değil Oylesine bir IP verdim ) ve 80 ile de httpd port u belirtilmiştir .
# ile başlayan kısımlar sadece açıklama kısmıdır olup olmaması konfigurasyonu etkilemez .
<VirtualHost 195.1.2.4>
Bu kısımdaki ip adresi web sunucusunun ip adresi olmalı ServerAdmin ifadesi root@x.net.tr ifadesi ile Bu web alanının yetkili kişisinin e-mail adresini belirtir .
DocumentRoot /www/htdocs/domains/x
İfadesi ile www.x.org.tr adresinin dosyalarının bulundugu yeri belirttik .
ServerName www.x.org.tr
Adından da anlaşılacağı gibi Web alanın adı belirtildi .
ErrorLog logs/error_x.org.tr
Bu ifade ilede bu web alanındaki hatalar ( dosyaların bulunamaması , CGI hataları ) logs dizini altindaki ( bizim kurulumda /www/logs ) error_y.net.tr dosyasına yazılır .
TransferLog logs/access_log_x.org.tr
Bu ifade ilede bu web alanına hangi ip lerden erişildiği hangi dosyalara bakıldığı gibi bilgilerin logs dizini altindaki ( bizim kurulumda /www/logs ) access_log.x.org.tr dosyasına yazılacağını belirtir .
</VirtulHost>
ifadesi ile Bu alan için gerekli konfigurasyonun bittiğini belirttik .
Evet Virtual Hosting mizin sonuna geldik sayılır ama bir sorun var !!!
Bizim Apache Sunucumuzun IP adresi 195.1.2.4 idi . Diyelimki bu IP www.y.net.tr isimli makinaya ait ve bu adress Y.NET web sunucu .
Şu anki konfigurasyonla http://www.y.net.tr adresine girmek isteyen birisi www.y.net.tr yerine httpd.conf dosyasında en üstte bulunan web alanına gidecektir .Yani www.x.org.tr adresine erişecektir .
Bu sorunu çözmek için www.y.net.tr sunucunun adı olmasına rağmen , bu alan içinde Virtual Hosting kaydı yapılmalıdır .
Aşagıdaki ifadeler yazılırsa bu sorun giderilmiş olur .
# www.y.net.tr <VirtualHost 195.1.2.4> ServerAdmin root@y.net.tr DocumentRoot /www/htdocs ServerName www.y.net.tr ErrorLog logs/error_y.net.tr TransferLog logs/access_log_y.net.tr </VirtualHost>
En son olarak
# /www/bin/apachectl restart
komutu ile değişiklikler aktif hale getirilir . eğer daha onceden apache yi kurmuşsanız ( RedHat da )
# /etc/rc.d/init.d/httpd restart
komutu ile değişikliği aktif edebilirsiniz .
Bu komut httpd.conf da yapılan her değişiklikten sonra çalıştırılmalıdır yoksa yapılanlar aktif olmaz.! ve apache web sunucusunun her açılışta çalışması için /etc/rc.d/rc.local ( Redhat Linux için ) dosyasinin en sonuna
/www/bin/apachectl start
Bir SSL virtual host tanımı için SSL destekli bir Apache'nin httpd.conf dosyasına aşağıdaki satırlar eklenmelidir.
VirtualHost www.firma.com.tr:443 DocumentRoot /www/firma ServerName www.firma.com.tr ServerAdmin webmaster@firma.com.tr ErrorLog /usr/local/apache/logs/error_log TransferLog /usr/local/apache/logs/access_log SSLEngine on SSLCertificateFile /usr/local/apache/conf/ssl.crt/server.crt SSLCertificateKeyFile /usr/local/apache/conf/ssl.key/server.key SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown CustomLog /usr/local/apache/logs/ssl_request_log \ "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" /VirtualHost
Aynı sunucuda çok fazla sayıda ( 2000-3000 ) web için virtual hosting yapılacaksa, bu tanım şekli yerine rewrite metodunun kullanılması önerilir . Ayrıntılı bilgi , http://www.apache.org/docs/misc/rewriteguide.html adresinden alınabilir .
|
|