Takip et

Apache Sanal Hostları Nedir ve Neden Kullanılır?

Apache Sanal Hostları Nedir ve Neden Kullanılır? Bir web sunucusu, genellikle tek bir IP adresine sahiptir. Ancak günümüz dünyasında, tek b

Apache Sanal Hostları Nedir ve Neden Kullanılır?

Bir web sunucusu, genellikle tek bir IP adresine sahiptir. Ancak günümüz dünyasında, tek bir sunucu üzerinde birden fazla web sitesi barındırmak oldukça yaygın ve ekonomiktir. İşte tam da bu noktada Apache Sanal Hostları (Virtual Hosts) devreye girer. Sanal hostlar, Apache web sunucusunun tek bir fiziksel sunucu, IP adresi veya port üzerinde birden fazla web sitesini (domaini) barındırmasına olanak tanıyan bir özelliktir.

Bu rehberde, Ubuntu 13.10 işletim sistemi üzerinde Apache sanal hostlarını nasıl kuracağınızı ve yapılandıracağınızı adım adım öğreneceksiniz. Sanal hostlar sayesinde her bir web siteniz için ayrı bir doküman kökü (document root), hata günlükleri (error logs) ve erişim günlükleri (access logs) tanımlayabilirsiniz. Bu, kaynakları daha verimli kullanmanızı sağlarken, her sitenin birbirinden bağımsız çalışmasına olanak tanır.

Sanal Host Kullanmanın Avantajları:

  • Maliyet Verimliliği: Birden fazla sunucuya veya IP adresine ihtiyaç duymadan birçok web sitesini tek bir makinede barındırabilirsiniz.
  • Kaynak Verimliliği: Sunucunun donanım kaynaklarını (CPU, RAM) daha etkin kullanır.
  • Kolay Yönetim: Her site için ayrı yapılandırma dosyaları sayesinde yönetimi basitleştirir.
  • Esneklik: Her siteye özel ayarlar (PHP sürümü, modüller vb.) tanımlayabilme potansiyeli sunar.

Ön Gereksinimler ve Apache Kurulumu

Bu rehbere başlamadan önce, Ubuntu 13.10 işletim sistemine sahip bir sunucuya veya sanal makineye ve root veya sudo yetkilerine sahip bir kullanıcıya ihtiyacınız olacaktır. Eğer Apache web sunucusu henüz kurulu değilse, aşağıdaki adımları izleyerek kurabilirsiniz.

Sistem Güncellemesi ve Apache Kurulumu

İlk olarak, sisteminizin paket listesini güncelleyelim ve mevcut paketleri yükseltelim:


sudo apt-get update
sudo apt-get upgrade

Şimdi Apache web sunucusunu kuralım:


sudo apt-get install apache2

Kurulum tamamlandıktan sonra, Apache servisinin çalıştığından emin olmak için aşağıdaki komutu kullanabilirsiniz:


sudo service apache2 status

Tarayıcınızda http://localhost veya sunucunuzun IP adresini ziyaret ederek Apache’nin varsayılan hoş geldiniz sayfasını görmeniz gerekir.

Web Sitesi Dizin Yapısı Oluşturma

Her sanal host için ayrı bir dizin yapısı oluşturmak iyi bir pratiktir. Bu, sitelerinizin dosyalarını düzenli tutmanıza yardımcı olur. Genellikle /var/www/ dizini altında her site için özel bir dizin oluşturulur.

Örnek olarak, site1.com ve site2.com adında iki farklı web sitesi barındıracağımızı varsayalım. Bu siteler için dizinleri ve içindeki public_html alt dizinlerini oluşturalım:


sudo mkdir -p /var/www/site1.com/public_html
sudo mkdir -p /var/www/site2.com/public_html

Bu dizinlere Apache’nin erişebilmesi için doğru kullanıcı ve grup izinlerini ayarlamamız gerekir. Apache genellikle www-data kullanıcısı ve grubu altında çalışır:


sudo chown -R www-data:www-data /var/www/site1.com
sudo chown -R www-data:www-data /var/www/site2.com
sudo chmod -R 755 /var/www/site1.com
sudo chmod -R 755 /var/www/site2.com

Şimdi her sitenin public_html dizinine basit birer index.html dosyası oluşturalım. Bu dosyalar, sanal hostların doğru çalışıp çalışmadığını test etmemize yardımcı olacaktır.

site1.com için:


sudo nano /var/www/site1.com/public_html/index.html

İçine aşağıdaki içeriği yapıştırın:





    site1.com - Sanal Host Çalışıyor!


    

site1.com Sanal Host Başarıyla Kuruldu!

Bu sayfa site1.com için Apache sanal hostu tarafından sunulmaktadır.

Kaydedin ve kapatın (Ctrl+O, Enter, Ctrl+X).

Aynı şekilde site2.com için de bir index.html dosyası oluşturalım:


sudo nano /var/www/site2.com/public_html/index.html

İçine aşağıdaki içeriği yapıştırın:





    site2.com - Sanal Host Çalışıyor!


    

site2.com Sanal Host Başarıyla Kuruldu!

Bu sayfa site2.com için Apache sanal hostu tarafından sunulmaktadır.

Kaydedin ve kapatın.

Sanal Host Oluşturma ve Yapılandırma

Apache’de sanal host yapılandırma dosyaları genellikle /etc/apache2/sites-available/ dizininde bulunur. Bu dizinde her bir sanal host için ayrı bir yapılandırma dosyası oluşturacağız. Daha sonra bu dosyaları a2ensite aracıyla etkinleştireceğiz.

site1.com İçin Sanal Host Dosyası Oluşturma

Varsayılan Apache yapılandırma dosyasını kopyalayarak başlayabiliriz. Ubuntu 13.10’da bu dosya genellikle default veya 000-default.conf olarak adlandırılır. Biz default dosyasını kullanacağız.


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

Şimdi yeni oluşturduğumuz site1.com.conf dosyasını düzenleyelim:


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

Dosyanın içeriğini aşağıdaki gibi güncelleyin (mevcut içeriği silip bunu yapıştırabilirsiniz):



    ServerAdmin webmaster@site1.com
    ServerName site1.com
    ServerAlias www.site1.com
    DocumentRoot /var/www/site1.com/public_html

    
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

Kaydedin ve kapatın. Şimdi bu direktiflerin ne anlama geldiğine bakalım:

:80>: Bu blok, sanal host tanımının başlangıcını belirtir. *:80 ifadesi, bu sanal hostun sunucunun tüm IP adresleri üzerindeki 80 numaralı porttan gelen HTTP isteklerini dinleyeceğini gösterir.
* ServerAdmin webmaster@site1.com: Bu, sitenizle ilgili hata mesajlarında görüntülenecek yönetici e-posta adresidir.
* ServerName site1.com: Bu, sanal hostun birincil alan adıdır. Apache, bu alan adına gelen istekleri bu sanal hosta yönlendirecektir.
* ServerAlias www.site1.com: Bu, birincil alan adının alternatif adlarıdır. Örneğin, kullanıcılar www.site1.com yazdığında da bu sanal hosta yönlendirilecektir.
* DocumentRoot /var/www/site1.com/public_html: Bu, web sitesinin dosyalarının bulunduğu kök dizinidir.
* ... : Bu blok, belirtilen dizin için özel ayarlar tanımlar.
* Options Indexes FollowSymLinks MultiViews: Dizin listeleme, sembolik bağlantıları takip etme gibi seçenekleri etkinleştirir.
* AllowOverride All: .htaccess dosyalarının bu dizinde Apache ayarlarını geçersiz kılmasına izin verir. Bu, WordPress gibi CMS’ler için genellikle gereklidir.
* Order allow,deny ve allow from all: Bu, Apache 2.2 ve önceki sürümlerde erişim kontrolü için kullanılır. Tüm IP adreslerinden erişime izin verir.
* ErrorLog ${APACHE_LOG_DIR}/error.log: Bu sanal hosta ait hata günlüklerinin kaydedileceği dosyayı belirtir.
* CustomLog ${APACHE_LOG_DIR}/access.log combined: Bu sanal hosta ait erişim günlüklerinin kaydedileceği dosyayı ve formatı belirtir.

site2.com İçin Sanal Host Dosyası Oluşturma

Aynı adımları site2.com için de tekrarlayalım:


sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/site2.com.conf
sudo nano /etc/apache2/sites-available/site2.com.conf

Dosyanın içeriğini aşağıdaki gibi güncelleyin:



    ServerAdmin webmaster@site2.com
    ServerName site2.com
    ServerAlias www.site2.com
    DocumentRoot /var/www/site2.com/public_html

    
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

Kaydedin ve kapatın.

Sanal Hostları Etkinleştirme ve Apache’yi Yeniden Başlatma

Sanal host yapılandırma dosyalarını oluşturduktan sonra, Apache’nin bunları tanıması için etkinleştirmemiz gerekir. Bunun için a2ensite (Apache 2 Enable Site) komutunu kullanırız:


sudo a2ensite site1.com.conf
sudo a2ensite site2.com.conf

Bu komutlar, /etc/apache2/sites-enabled/ dizinine yapılandırma dosyalarınıza sembolik bağlantılar oluşturur.

Ayrıca, Apache’nin varsayılan sanal hostunu devre dışı bırakmak iyi bir fikirdir. Bu, herhangi bir alan adı eşleşmediğinde sitelerinizin yanlışlıkla varsayılan içeriği göstermesini engeller:


sudo a2dissite default

Yapılandırma değişikliklerinin etkili olması için Apache servisini yeniden başlatmamız gerekir:


sudo service apache2 restart

Herhangi bir hata olup olmadığını kontrol etmek için:


sudo apache2ctl configtest

Eğer “Syntax OK” çıktısını görürseniz, yapılandırmanızda bir sorun yok demektir.

Sistem Host Dosyasını Düzenleme ve Test Etme

Şu ana kadar oluşturduğumuz site1.com ve site2.com alan adları gerçek alan adları değildir ve DNS sunucularında kayıtlı değillerdir. Bu nedenle, bunları yerel olarak test etmek için bilgisayarınızın hosts dosyasını düzenlemeniz gerekir. Bu dosya, belirli alan adlarını belirli IP adreslerine eşlemenizi sağlar.

Not: Bu adım sadece sanal hostları kendi yerel makinenizden test etmek içindir. Gerçek bir alan adı kullanıyorsanız, DNS kayıtlarınızı sunucunuzun IP adresine yönlendirmeniz gerekecektir.

Yerel makinenizin (Ubuntu sunucusunun kendisi veya testi yapacağınız başka bir Linux/macOS makinesi) hosts dosyasını düzenleyelim:


sudo nano /etc/hosts

Windows kullanıyorsanız, C:\Windows\System32\drivers\etc\hosts yolunda bulunur ve Yönetici olarak açılan bir metin düzenleyici ile düzenlenmelidir.

Dosyanın sonuna aşağıdaki satırları ekleyin (sunucunuzun gerçek IP adresi yerine 127.0.0.1 kullanabiliriz, çünkü testi sunucunun kendisinden yapacağız):


127.0.0.1 site1.com
127.0.0.1 www.site1.com
127.0.0.1 site2.com
127.0.0.1 www.site2.com

Kaydedin ve kapatın.

Şimdi bir web tarayıcısı açın ve aşağıdaki adresleri ziyaret edin:

* http://site1.com
* http://site2.com

Her iki adrese gittiğinizde de ilgili sitenin index.html dosyasındaki içeriği görmeniz gerekir. Eğer farklı içerikler görüyorsanız, sanal host kurulumunuz başarılı bir şekilde tamamlanmıştır!

Sonuç ve Sıkça Sorulan Sorular (SSS)

Bu rehberde, Ubuntu 13.10 üzerinde Apache sanal hostlarını nasıl kuracağınızı ve yapılandıracağınızı öğrendiniz. Artık tek bir sunucu üzerinde birden fazla web sitesini güvenli ve verimli bir şekilde barındırabilirsiniz. Sanal hostlar, web geliştiricileri ve sistem yöneticileri için vazgeçilmez bir araçtır ve projelerinizi daha düzenli yönetmenize olanak tanır.

Sıkça Sorulan Sorular (SSS)

Sanal hostum çalışmıyor, ne yapmalıyım?

Birkaç şeyi kontrol etmelisiniz:

  • Apache Yapılandırma Sözdizimi: sudo apache2ctl configtest komutunu çalıştırarak herhangi bir sözdizimi hatası olup olmadığını kontrol edin.
  • Sanal Host Etkin mi?: sudo a2ensite your_site.conf komutuyla sanal hostunuzu etkinleştirdiğinizden emin olun.
  • Apache Yeniden Başlatıldı mı?: Değişikliklerin etkili olması için sudo service apache2 restart komutuyla Apache’yi yeniden başlattığınızdan emin olun.
  • Dizin İzinleri: DocumentRoot dizininizin ve içerdiği dosyaların Apache’nin (www-data) okuma iznine sahip olduğundan emin olun (sudo chown -R www-data:www-data /var/www/your_site.com ve sudo chmod -R 755 /var/www/your_site.com).
  • DocumentRoot Doğru mu?: Yapılandırma dosyanızdaki DocumentRoot yolunun doğru olduğundan emin olun.
  • ServerName ve ServerAlias Doğru mu?: Alan adlarınızın doğru yazıldığından emin olun.
  • Yerel Host Dosyası (/etc/hosts): Test ediyorsanız, yerel host dosyanızdaki eşleşmenin doğru olduğundan emin olun.

Neden AllowOverride All kullanmalıyım?

AllowOverride All direktifi, Apache’nin belirli bir dizindeki .htaccess dosyalarını işlemesine izin verir. WordPress, Joomla gibi içerik yönetim sistemleri veya bazı PHP çerçeveleri, URL yeniden yazma (mod_rewrite) kurallarını veya diğer özel yapılandırmaları .htaccess dosyaları aracılığıyla yönetir. Bu direktifi etkinleştirmezseniz, bu tür uygulamalar düzgün çalışmayabilir.

HTTPS (SSL) için sanal host nasıl ayarlanır?

HTTPS için sanal host kurmak, mevcut yapılandırmanıza ek olarak birkaç adım gerektirir:

  1. SSL modülünü etkinleştirin: sudo a2enmod ssl
  2. Mevcut sanal host dosyanızı kopyalayarak veya düzenleyerek yeni bir VirtualHost bloğu oluşturun. Bu blok genellikle şeklinde olur.
  3. SSLEngine on, SSLCertificateFile ve SSLCertificateKeyFile direktiflerini ekleyerek SSL sertifika ve anahtar dosyalarınızın yolunu belirtin.
  4. Apache’yi yeniden başlatın.

ServerAlias ne işe yarar?

ServerAlias, birincil ServerName dışında, aynı web sitesine yönlendirilmesini istediğiniz ek alan adlarını veya alt alan adlarını belirtmek için kullanılır. Örneğin, ServerName example.com ve ServerAlias www.example.com subdomain.example.com şeklinde ayarlayarak, bu üç adresin de aynı web sitesini göstermesini sağlayabilirsiniz.

DocumentRoot nedir?

DocumentRoot, Apache’nin bir alan adına gelen istekler için web sitesi dosyalarını aramaya başlayacağı ana dizindir. Tarayıcıda http://yourdomain.com/index.html adresini yazdığınızda, Apache bu dosyayı DocumentRoot dizininin içinde arar. Bu, web sitenizin ana dizinidir.

sudo service apache2 restart ile sudo service apache2 reload arasındaki fark nedir?

  • sudo service apache2 restart: Apache servisini tamamen durdurur ve sonra tekrar başlatır. Bu işlem sırasında kısa bir kesinti yaşanabilir, mevcut bağlantılar kesilir. Yeni modüllerin etkinleştirilmesi veya önemli yapılandırma değişiklikleri için genellikle yeniden başlatma gereklidir.
  • sudo service apache2 reload: Apache’yi yapılandırma dosyalarını yeniden yüklemesi için bilgilendirir ancak servisi durdurup başlatmaz. Bu, mevcut bağlantıları kesmeden yeni yapılandırmaların uygulanmasını sağlar. Çoğu sanal host değişikliği gibi durumlar için reload yeterlidir ve daha az kesintiye neden olur.

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Gönder

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.
Exit mobile version