Apache ile Debian Linux Üzerinde Çoklu Site Yayını 08 February 2011

Basitçe veya gelişmiş bir şekilde, Apache‘yibirden fazla internet sitesini yayınlayacak şekilde ayarlamanın bir çok yolu bulunmaktadır.Burada biz sadece NameVirtualHost yönergesini kullanarak basitçe bunu nasıl yapacağımızı göreceğiz.Bu yaklaşımın faydası, tek bir IP adresi üzerinden bunu yapabilmeniz ve anında çalıştırabilmenizdir.Tek ihtiyacınız olan şey, IP adresleri sizin web sunucunuza yönlendirilecek olan alanadlarıdır.

Örneğin, eğer 192.168.1.1 IP adresi üzerinde çalışan bir Apache sunucunuz var ve ornek.com, ornek.net ve ornek.org internet sitelerini bu sunucu üzerinden yayınlamak istiyorsanız, bu alanadlarının IP adreslerinin sizin web sunucunuza yönlenmiş olmasına dikkat etmelisiniz.

Not: Bu işlem, aynı zamanda ornek.com ve www.ornek.com‘un aynı IP adresine yönlenmesi anlamına da gelebilir. Fakat bu kısım tamamiyle sizin tercihinizdir.

Birden fazla internet sitesini aynı sunucu üzerinde yayınlayacağımız için, bu sitelerin dosyalarının sunucuda nerede olacağını iyi belirlemek gerekiyor. Bunu gerçekleştirmek için size önerdiğim yöntem, her bir site içinayrı bir kök klasörü (htdocs veya httpdocs), cgi-bin ve log klasörleri oluşturmanızdır. Bunun için Debian’ın önerdiği sistem olan /var/www klasörünü kullanabilir veya tamamen farklı bir klasör belirleyebilirsiniz - mesela benim önerim size /home/www klasörünü kullanmanızdır.

Eğer henüz yapmamışsanız, sitelerinizin içeriğini barındırmak için aşağıdaki klasörleri oluşturabilirsiniz:

[email protected]:~# mkdir /home/www
[email protected]:~# mkdir /home/www/www.ornek.com
[email protected]:~# mkdir /home/www/www.ornek.com/htdocs
[email protected]:~# mkdir /home/www/www.ornek.com/cgi-bin
[email protected]:~# mkdir /home/www/www.ornek.com/logs
[email protected]:~# mkdir /home/www/www.ornek.net
[email protected]:~# mkdir /home/www/www.ornek.net/htdocs
[email protected]:~# mkdir /home/www/www.ornek.net/logs
[email protected]:~# mkdir /home/www/www.ornek.net/cgi-bin
[email protected]:~# mkdir /home/www/www.ornek.org
[email protected]:~# mkdir /home/www/www.ornek.org/htdocs
[email protected]:~# mkdir /home/www/www.ornek.org/logs
[email protected]:~# mkdir /home/www/www.ornek.org/cgi-bin

Burada biz 3 site için de 1er tane ana klasör oluşturmuş olduk. Eğer tüm bu sitelerin içeriğinin aynı olmasını istiyorsanız, tek bir klasör oluşturup sembolik link’lerle (symbolic link) bu klasörleri bağlayabilirsiniz.

Sırada yapılacak şey Apache konfigürasyon dosyanızda virtual host özelliğini açmak olacaktır. Bunu yapmanın en basit yolu,

/etc/apache2/conf.d/virtual.conf

dosyasını oluşturmak ve içine aşağıdaki kodları eklemektir:

## Birden fazla site yayınlama ayarları
#NameVirtualHost *

(Apache başladığı zaman, /etc/apache2/conf.d klasöründe bulunan tüm dosyaların içeriğini otomatik olarak okur ve buradaki dosyalarınız güncelleme yaptığınız zaman silinmezler.)

Bir kere bu dosyayı oluşturduktan sonra, siteler için ayrı konfigürasyon dosyalarını oluşturabiliriz. Debian GNU/Linux dağıtımındaki Apache2 kurulumlarında sitenizin konfigürasyon dosyaları için 2 klasör bulunmaktadır:

/etc/apache2/sites-available

Bu klasörde, sunucunuzda bulunan ve her an çalışmaya hazır olan ama yayında olmayan sitelerinizin ayar dosyaları bulunmaktadır.

/etc/apache2/sites-enabled

Bu klasörde ise yayında olan sitelerinizin ayar dosyaları bulunur.

Sunucu açıldığında, conf.d klasörüyle birlikte sites-enabled klasöründekitüm ayar dosyaları da yüklenir - ama sites-available klasöründeki dosyalar yüklenmez.

Normalde yapmanız gereken şey, /etc/apache2/sites-available klasöründe sitelerinizinayar dosyalarını oluşturmak, daha sonra da bu dosyalar için sites-enabled klasöründe budosyalara birer sembolik link oluşturup, sunucu açılırken bu dosyaların, yani sitelerin yüklenmesini sağlamaktır.

Fakat sembolik linklerle hiç uğraşmadan, Debian Apache’de hali hazırda yer alan a2ensiteve ve a2dissite komutlarını kullanarak tüm bu işlemlerin otomatik olarak yapılmasını sağlayabilirsiniz.

Uygulamalı bir örnek yapalım. /etc/apache2/sites-available/www.ornek.com dosyasını, aşağıdaki içerikle oluşturalım:

##  ornek.com (/etc/apache2/sites-available/www.ornek.com)
<VirtualHost *>
  ServerAdmin [email protected]
  ServerName  www.ornek.com
  ServerAlias ornek.com

  # Indexes + Directory Root.
  DirectoryIndex index.html
  DocumentRoot /home/www/www.ornek.com/htdocs/

  # CGI Directory
  ScriptAlias /cgi-bin/ /home/www/www.ornek.com/cgi-bin/
  <Location /cgi-bin>
    Options +ExecCGI
  </Location>

  # Logfiles
  ErrorLog  /home/www/www.ornek.com/logs/error.log
  CustomLog /home/www/www.ornek.com/logs/access.log combined
</VirtualHost>

Aynı şekilde, www.ornek.net ve www.ornek.org için bu dosyaları aynı şekildeki içerikle oluşturalım.

Şu an elimizde olanlar:

  • 3 internet sitemiz için, sitelerin dosyalarını içerecek birer klasör
  • 3 internet sitemiz için, log dosyalarını içerecek birer klasör
  • 3 internet sitemiz için, dinamik CGI scriptlerini içerecek birer klasör
  • 3 internet sitemiz için, (sites-available klasöründe olduğu için) Apache tarafından otomatik çalıştırılmayacak konfigürasyon dosyaları

Bu siteleri otomatik olarak yayınlamak için şu komutları çalıştırabiliriz:

[email protected]:~# a2ensite www.ornek.com
# Site www.ornek.com installed; run /etc/init.d/apache2 reload to enable.
[email protected]:~# a2ensite www.ornek.net
# Site www.ornek.net installed; run /etc/init.d/apache2 reload to enable.
[email protected]:~# a2ensite www.ornek.org
# Site www.ornek.org installed; run /etc/init.d/apache2 reload to enable

Bu kodlar, internet siteleri için /etc/apache2/sites-enabled/www.ornek.com şekilde sembolik linkler oluşturacak ve bu sitelerin otomatik olarak açılmasını sağlayacaktır.

Artık ayarlarımızı bitirdiğimize göre, apache sunucusunu baştan başlatarak sitelerimizi yayına alabiliriz.

[email protected]:~# /etc/init.d/apache2 reload
# Reloading web server config...done.
[email protected]:~#

Kaynak: http://www.debian-administration.org/articles/412