EnderUnix Software Development Team

                                                  Apache Web Sunucusunda Virtual Hosting  .htaccess ve

                                                         Dizin Eriþimi Kýsýtlama Konfigurasyonu (FreeBSD)

 

 

Giris

17 Mart 2001

   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ýlacktý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 :)) ).
Genel Notlar
Bu dokumanin en guncel hali; http://www.enderunix.org/docs/apache.html adresindedir.

Aksi belirtilmedigi takdirde bu gibi dokumanlarin haklari kendilerini yazan yazarlarda saklidir. Bu dokuman da, parca parca ya da tamamen herhangi bir sekilde, yazarinin izni dahilinde dagitilabilir.

Yazar, bu dokumani okuyanlarin ugrayacaklari herhangi bir zarardan oturu sorumluluk kabul etmez. Use at your own risk!

Eger, herhangi bir konuda yardima ihtiyaciniz olursa, [email protected] ya da [email protected] adresine mail atabilirsiniz.!

-- Ismail YENIGUL
[email protected]
   17 Mart, 2001

Apache kurulumu
 

Eðer Apache yi kurmadýysanýz. Kýsa yoldan portlardan kuralým

#cd /usr/ports/www/apache13

#make install

komutunu verdiðinizde apache yi FreeBSD sizin için kuracaktýr. Burada php ssl gibi destekler verilmemistir. Bu destekleri verecekseniz Apache yi vereceginiz destege gore kurmanýz gerekmektedir. Burada bu modullerin nasýl kurulacagý anlatýlmayacaktýr.

 

Virtual Hosting (Sanal Alan) Konfigurasyonu:
Diyelimki www.enderunix.org , www.yenigul.net ve  www.bsdlive.org siteleri  için
virtual hosting yapacagýz.

Öncelike  tüm bu alanlar için  mutlaka 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 enderunix.org www.bsdlive.org için Virtual Hosting bilgilerini yazalým .FreeBSD de apache yi portlardan kurdugunuzda httpd.conf dosyasý /usr/local/etc/apache dizini altýndadýr.

# vi /usr/local/etc/apache/httpd.conf

NameVirtualHost 195.1.2.4:80
   

# www.enderunix.org  17 Mart 001 de olusturuldu (yenigul)

<VirtualHost 195.1.2.4>
ServerAdmin [email protected]
DocumentRoot /usr/local/www/data/domains/enderunix
ServerName www.enderunix.org
Script Alias  /cgi-bin "/usr/local/www/data/enderunix/cgi-bin"

ErrorLog /var/log/error_enderunix.org
TransferLog /var/log/access_log_enderunix.org
</VirtualHost>

# www.bsdlive web alaný 16 Mart 2001 de olusturuldu (yenigul)

<VirtualHost 195.1.2.4>
ServerAdmin [email protected]
DocumentRoot /usr/local/www/data/domains/bsdlive
ServerName www.bsdlive.org

Script Alias  /cgi-bin "/usr/local/www/data/bsdlive/cgi-bin"
ErrorLog /var/log/error_bsdlive
TransferLog /var/log/access_log_bsdlive
</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 degil Oylesine bir IP verdim) ve 80 ile de httpd port u belirtilmiþtir . Bu ifadeyi httpd.conft bir defa yazmanýz yeterlidir.

# 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  [email protected] ifadesi ile  Bu web alanýnýn yetkili kiþisinin e-mail adresini belirtir.

DocumentRoot  /usr/local/usr/local/www/data/domains/enderunix

Ýfadesi ile www.enderunix.org adresinin dosyalarýnýn bulundugu yeri belirttik.

ServerName  www.enderunix.org

Adýndan da anlaþýlacaðý gibi Web alanýn adý belirtildi.

Script Alias  /cgi-bin   "/usr/local/www/data/enderunix/cgi-bin"
ifadesi ile http://www.enderunix.org/cgi-bin adresine ulasmak istediklerinde bu domaina ait cgi-bin dizinin  "/usr/local/www/data/enderunix/cgi-bin" dizini oldugunu belirtir.

ErrorLog /var/log/error_enderunix.org

Bu ifade ilede bu web alanýndaki hatalar(dosyalarýn bulunamamasý , CGI hatalarý)   /var/log dizini altindaki  error_yenigul.net dosyasýna yazýlýr.

TransferLog  /var/log/access_log_enderunix.org

Bu ifade ilede bu web alanýna hangi ip lerden eriþildiði hangi dosyalara bakýldýðý gibi bilgilerin  /var/log dizini altindaki (bizim kurulumda /www//var/log ) access_log.enderunix.org dosyasýna yazýlacaðýný belirtir.

</VirtualHost>
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.yenigul.net isimli makinaya ait ve bu  adress .YENIGUL.NET web sunucu .
Þu anki konfigurasyonla  http://www.yenigul.net adresine girmek isteyen birisi www.yenigul.net yerine httpd.conf dosyasýnda en üstte bulunan web alanýna gidecektir .Yani www.enderunix.org adresine eriþecektir.

    Bu sorunu çözmek için www.yenigul.net sunucunun adý olmasýna ragmen , bu alan içinde Virtual Hosting kaydý yapýlmalýdýr.
Aþagýdaki ifadeler yazýlýrsa bu sorun giderilmiþ olur.
 

# www.yenigul.net Web alaný kaydý

<VirtualHost 195.1.2.4>
ServerAdmin [email protected]
DocumentRoot /usr/local/www/data
ServerName www.yenigul.net

ErrorLog /var/log/error_yenigul.net
TransferLog /var/log/access_log_yenigul.net
</VirtualHost>

ve
# /usr/local/sbin/apachectl restart
 komutu ile deðiþiklikler aktif hale getirilir.
Bu  komut httpd.conf da yapýlan her deðiþiklikten sonra çalýþtýrýlmalýdýr yoksa yapýlanlar aktif olmaz.!

Virtual Hosting kismiyla ilgi son olarak bir de nasil CGI izni verilecegini gösterelim. Yukarida belirtiginiz enderunix.org

<Directory  " /usr/local/www/data/domains/enderunix/cgi-bin">

Options +ExecCGI

</Directory>
Yukarýdaki ifadeler ile enderunix.org sitesine ait olan cgi-bin dizinine cgi calistirma izni verdik.

# /usr/local/sbin/apachectl restart  komutunu verdigimizde CGI izinleri aktif hale gelecektir.

.htaccess :
 

.htaccess Apache Web sunucusu ile birlikte gelen ve Apache Web sunucu üzerindeki belirli dizinlere eriþim için kullanýcý adý ve þifre sorgulamasý yapmaya yarayan bir  uygulamdýr. Bu sayede özel dizinlere sadece sizin belirlediginiz kullanýcýlar eriþebilir.


Örnegin:    http://www.enderunix.org/secure adresine htaccess uygulayalým
 bu dizin  Apache Sunucusunda /www/htdocs/secure  olsun

httpd.conf  dosyasýný bir  editörde açalým ve þu ifadeleri yazalým

<Directory /usr/local/www/data/domains/enderunix.org/secure>
 AllowOverride AuthConfig
</Directory>

AllowOverride AuthConfig ifadesi ile bu dizine eriþim için httaccess kullanýlmasý gerektigini belirtiyoruz..
htaccess nerdemi olacak ? Tabiki  /usr/local/www/data/domains/enderunix.org/secure   !

Evet /usr/local/www/data/domains/enderunix.org/secure  dizini altýnda
.httaccess dosyasý oluþturun (Evet Nokta var!  .htaccess) ve içine

AuthName  "EnderUNIX Team Ozel bolgesi !!!"
AuthType Basic
AuthUserFile  /usr/local/www/data/domains/enderunix.org/secure/.htpasswd
require valid-user

yazýnýz..

Biraz Açýklayalým .

AuthName  "EnderUNIX Team Ozel bolgesi !!!"

yazýldýgýnda Karþýnýza çýkan Kullanýcý  adý ve þifre menüsündeki Açýklayýcý bilgidir.  Buraya istediðinizi yazabilirsiniz.

AuthType Basic
bu ifadeyi deðiþtirmeyin Burada Authentication (Çok düþündüm ama Türkçesi bir türlü aklýma gelmedi)  türü belirtiliyor

AuthUserFile  /usr/local/www/data/domains/enderunix.org/secure/.htpasswd

Yukarýdaki ifade ilede   Kullanýcý adý ve þifrelerin saklandýðý dosyanýn TAM! yeri belirtiliyor. Evet Tam olarak dosyanýn yeri belirtilmelidir.

require valid-user
En son bu ifade ile  bu dizine .htpasswd dosyasýnda kullanýcýlarýn   eriþebiliceði belirtiliyor.

.htaccess dosyasý taman sýra .htpasswd dosyasýný   oluþturmaya geldi.

# /usr/local/bin/htpasswd  -c  /usr/local/www/data/domains/enderunix.org/secure/.htpasswd   yenigul

Yukarýdaki komut ile  /usr/local/www/data/domains/enderunix.org/securel/.htpasswd dizini altýnda .httpasswd oluþturulur ve yenigul kullanýcýsý eklenir.
-c (creat) parametresi ile .htpasswd dosyasý hiç yoktan oluþturulur. ikinci bir kullanýcý eklemek bu ifadeyi kullanmayýnýz. Ýkinci kullanýcý ekleme

# /usr/local/bin/htpasswd   /usr/local/www/data/domains/enderunix.org/secure/.htpasswd   yakup

þeklinde olmalýdýr. htpasswd  komutunu kullandýktan sonra apache yi restart yapmanýza  gerek YOKTUR.!

 

Dizinleri IP adresine veya Domain(alan) Adýna göre kýsýtlama:
Bu kýsýmda kýsýtlama yapýlacak adresimiz  http://www.yenigul.net/intranet   ve  dosyalar
 /usr/local/www/data/intranet altýnda bulunsun

- Sadece belirli IPlere eriþimi verip diðerlerine yasak koymak için ,Örnegin 212.65.128 uzayýndaki IP ler

<Directory  /usr/local/www/data/intranet>
 Order deny,allow
Allow from 212.65.128
Deny from All
</Directory>

- Sadece belirli domainlere eriþmi verip diðerlerine yasak koymak için ,Örnegin linux.org.tr

<Directory  /usr/local/www/data/intranet>
 Order deny,allow
Allow from enderunix.org
Deny from All
</Directory>
 

- Sadece belirli IPlere yasak koyup diðerlerine izin vermek için ,Örnegin   195.1.2  uzayýndaki IP ler

<Directory  /usr/local/www/data/intranet>
 Order allow,allow
Allow from All
Deny from  195.1.2
</Directory>

- Sadece belirli domainlere yasak koyup  digerlerine izin vermek için  için ,Örnegin lamer.com  domaini

<Directory  /usr/local/www/data/intranet>
 Order allow,deny
Allow from All
Deny from lamer.com
</Directory>

Yapýlan deðiþikliklerin aktif olmasý için
# /www/bin/apachectl restart  komutunu veriniz..

Dökumanýmýzýn sonuna geldik.

Sorunlarýnýzý ve önerilerinizi yukarýda belirttiðim e-mail adreslerinden biri ile bana ulaþtýrabilirsiniz.

Kaynaklar:
Apache   Manual:

http://httpd.apache.org/docs/