Tüm barındırma hizmetlerinde 15% tasarruf edin

Becerilerini test et ve herhangi bir hosting planında İndirim kazan

Kodu kullanın: Skills Başlayın
Bölüm
Linux Yönetim

Sites-Enabled ve Sites-Available: NGINX ve Apache için Tam Rehber

NGINX ve Apache, internetin en baskın iki web sunucusu olmaya devam ediyor — ve bunun iyi nedenleri var. Her ikisi de savaş testli, oldukça yapılandırılabilir ve karmaşık, yüksek trafikli web sitelerini kolaylıkla sunabilen sunuculardır. Linux tabanlı bir sunucu yöneten herhangi bir sistem yöneticisi için en önemli kavramlardan biri, bu web sunucularının sites-available ve sites-enabled dizin yapısı aracılığıyla web sitesi yapılandırmasını nasıl işlediklerini anlamaktır.

Tek bir web sitesi çalıştırıyor olsanız veya bir VPS Hosting planında düzinelerce sanal host yönetiyor olsanız, bu yapılandırma modelinde uzmanlaşmak, hangi sitelerin etkin olduğu, hangilerinin hazırlandığı ve sunucu kaynaklarınızın nasıl tahsis edildiği konusunda kesin kontrol sağlayacaktır.

Bu kılavuz, Linux sistemlerinde NGINX ve Apache kullanarak web sitelerini etkinleştirme, devre dışı bırakma ve yönetme konusunda kapsamlı, adım adım bir anlatım sağlar.

sites-available ve sites-enabled Anlamak

Hem NGINX hem de Apache, site konfigürasyonunu site aktivasyonundan ayırmak için iki dizin modelini kullanır. Bu mimari desen sadeliğinde zarif ve pratikte son derece güçlüdür.

sites-available

/etc/nginx/sites-available/ veya /etc/apache2/sites-available/ dizini, tüm olası site konfigürasyonlarının bir kütüphanesi olarak işlev görür. Sunucuda barındırmayı amaçladığınız her web sitesinin kendi konfigürasyon dosyası burada depolanır. Önemli olan nokta, bu dizindeki dosyalar aktif değildir — konfigürasyonu tanımlarlar ancak açıkça etkinleştirilene kadar hiçbir trafiğe hizmet vermezler.

sites-enabled

/etc/nginx/sites-enabled/ veya /etc/apache2/sites-enabled/ dizini, sites-available içindeki konfigürasyon dosyalarını işaret eden sembolik bağlantılar içerir. Bu dizinde aktif bir sembolik bağlantısı olan siteler yalnızca web sunucusu tarafından yüklenir ve ziyaretçilere sunulur.

Bu ayrım birkaç önemli avantaj sunar:

  • Yıkıcı olmayan devre dışı bırakma: Bir siteyi konfigürasyonunu silmeden devre dışı bırakabilirsiniz.
  • Hızlı dağıtım: Yeni bir site hazırlamak, sembolik bir bağlantı oluşturmak kadar basittir.
  • Temiz organizasyon: Tüm konfigürasyonlar, aktif olup olmadıklarına bakılmaksızın bir yerde bulunur.

Apache ile Web Sitelerini Yönetme

1. Apache Virtual Hosts Yapılandırması

Apache, tek bir sunucu örneğinden birden fazla web sitesine hizmet vermek için Virtual Hosts kullanır. Her web sitesinin, Apache’ye o etki alanı için gelen istekleri nasıl işleyeceğini söyleyen kendi yapılandırma dosyası vardır — belge kökü, günlük yolları, sunucu takma adları ve daha fazlasını içerir.

Apache sanal ana bilgisayarlarının yapılandırma dosyaları şurada depolanır:

/etc/apache2/sites-available/

Virtual Host Yapılandırma Dosyası Oluşturma

test.oo.md adlı bir site için yapılandırma dosyası oluşturmak için şunu çalıştırın:

sudo nano /etc/apache2/sites-available/test.oo.md.conf

Dosyanın içinde, sanal ana bilgisayar bloğunuzu tanımlayın:

<VirtualHost *:80>
    ServerAdmin admin@test.oo.md
    ServerName your_domain_or_IP
    ServerAlias www.test.oo.md
    DocumentRoot /var/www/test.oo.md

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

> Not: your_domain_or_IP yerine gerçek etki alanı adınızı veya sunucu IP adresinizi yazın. ServerAlias yönergesi, Apache’nin www alt etki alanına da yanıt vermesini sağlar.

İşiniz bittiğinde dosyayı kaydedin ve çıkın.

2. a2ensite ile Siteyi Etkinleştirme

Yapılandırma dosyası yerinde olduğunda, a2ensite komutunu kullanarak siteyi etkinleştirin (Apache 2 Enable Site):

sudo a2ensite test.oo.md.conf

Bu komut otomatik olarak sites-available konumundan sites-enabled konumuna sembolik bir bağlantı oluşturur:

/etc/apache2/sites-enabled/test.oo.md.conf -> /etc/apache2/sites-available/test.oo.md.conf

Site artık sunulacak şekilde hazırlanmıştır, ancak Apache yeniden yüklenene kadar değişiklikler yürürlüğe girmez.

3. Apache Yapılandırmasını Test Etme

Apache’yi yeniden yüklemeden önce, hataları yakalamak için her zaman yapılandırma sözdizimini doğrulayın:

sudo apachectl configtest

Başarılı bir çıktı şunu gösterecektir:

Syntax OK

Hatalar varsa, Apache sorunu ve satır numarasını açıklayacaktır — devam etmeden önce bunları düzeltin.

4. Değişiklikleri Uygulamak için Apache’yi Yeniden Yükleme

sudo systemctl reload apache2

Üretim ortamlarında restart yerine reload kullanılması tercih edilir çünkü aktif bağlantıları kesmeden yeni yapılandırmayı uygular.

5. a2dissite ile Siteyi Devre Dışı Bırakma

Yapılandırmasını silmeden bir siteyi çevrimdışı almak için a2dissite komutunu kullanın:

sudo a2dissite test.oo.md.conf

Bu, sembolik bağlantıyı sites-enabled konumundan kaldırır. sites-available konumundaki yapılandırma dosyası değişmeden kalır. Uygulamak için Apache’yi yeniden yükleyin:

sudo systemctl reload apache2

NGINX ile Web Sitelerini Yönetme

1. NGINX Server Block Yapılandırması

NGINX, Server Blocks kullanır — Apache’nin Virtual Hosts’unun işlevsel eşdeğeri. Server block yapılandırma dosyaları şurada depolanır:

/etc/nginx/sites-available/

Server Block Yapılandırma Dosyası Oluşturma

test.oo.md için bir yapılandırma dosyası oluşturmak için şunu çalıştırın:

sudo nano /etc/nginx/sites-available/test.oo.md

Dosyanın içinde server block’unuzu tanımlayın:

server {
    listen 80;
    server_name test.oo.md www.test.oo.md;

    root /var/www/test.oo.md;
    index index.html index.htm;

    access_log /var/log/nginx/test.oo.md_access.log;
    error_log  /var/log/nginx/test.oo.md_error.log;

    location / {
        try_files $uri $uri/ =404;
    }
}

> Temel direktifler açıklandı:

> – listen 80 — NGINX’e port 80’de HTTP trafiğini dinlemesini söyler.

> – server_name — Bu block’un yanıt vereceği alan adlarını tanımlar.

> – root — Sitenin dosyaları için belge kök dizinini ayarlar.

> – try_files — İstenen dosya veya dizini sunmaya çalışır; bulunamazsa 404 döndürür.

2. Sembolik Bağlantı Oluşturarak Siteyi Etkinleştirin

Apache’nin aksine, NGINX a2ensite gibi yerleşik bir komut sağlamaz. Bunun yerine sembolik bağlantıyı manuel olarak oluşturursunuz:

sudo ln -s /etc/nginx/sites-available/test.oo.md /etc/nginx/sites-enabled/

Bu, yapılandırma dosyasını sites-enabled dizinine bağlar ve NGINX tarafından yüklenmesi için uygun hale getirir.

3. NGINX Yapılandırmasını Test Edin

Yeniden yüklemeden önce her zaman NGINX yapılandırmanızı test edin:

sudo nginx -t

Başarılı bir test şunu döndürür:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Hatalar bildirilirse, yapılandırma dosyanızdaki belirtilen satırları gözden geçirin ve devam etmeden önce düzeltin.

4. Değişiklikleri Uygulamak için NGINX’i Yeniden Yükleyin

sudo systemctl reload nginx

Apache’de olduğu gibi, reload yapılandırma değişikliklerini aktif bağlantıları kesintiye uğratmadan zarif bir şekilde uygular — canlı ortamlarda tam bir restart yerine her zaman tercih edilir.

5. NGINX’de Bir Siteyi Devre Dışı Bırakın

Bir siteyi devre dışı bırakmak için, sembolik bağlantısını sites-enabled dizininden kaldırın:

sudo rm /etc/nginx/sites-enabled/test.oo.md

Ardından değişikliği uygulamak için NGINX’i yeniden yükleyin:

sudo systemctl reload nginx

sites-available içindeki yapılandırma dosyası korunur ve istediğiniz zaman yeniden etkinleştirilebilir.

Hızlı Referans: Apache vs. NGINX Site Yönetimi

GörevApache KomutuNGINX Komutu
Config dosyası oluşturnano /etc/apache2/sites-available/site.confnano /etc/nginx/sites-available/site
Siteyi etkinleştirsudo a2ensite site.confsudo ln -s /etc/nginx/sites-available/site /etc/nginx/sites-enabled/
Konfigürasyonu test etsudo apachectl configtestsudo nginx -t
Web sunucusunu yeniden yüklesudo systemctl reload apache2sudo systemctl reload nginx
Siteyi devre dışı bıraksudo a2dissite site.confsudo rm /etc/nginx/sites-enabled/site

NGINX ve Apache ile Site Yönetimi için En İyi Uygulamalar

1. Site Başına Bir Yapılandırma Dosyası

Her zaman sites-available dizininde her etki alanı veya alt etki alanı için ayrılmış bir yapılandırma dosyası oluşturun. Birden fazla siteyi tek bir dosyaya karıştırmak bakım sorunları yaratır ve sorun gidermeyi önemli ölçüde zorlaştırır.

2. Yeniden Yüklemeden Önce Her Zaman Test Edin

Her yeniden yükleme işleminden önce apachectl configtest veya nginx -t komutunu çalıştırmayı vazgeçilmez bir alışkanlık haline getirin. Bir yapılandırma dosyasındaki söz dizimi hatası, sunucudaki tüm siteleri (yalnızca düzenlemekte olduğunuz siteyi değil) kapatabilir.

3. Yapılandırma Dosyaları için Sürüm Kontrolü Kullanın

Birden fazla siteyi barındıran veya karmaşık yapılandırmalara sahip sunucular için yapılandırma dosyalarınızı Git ile takip edin:

cd /etc/nginx/sites-available/
git init
git add .
git commit -m "Initial configuration snapshot"

Bu, size tam bir değişiklik geçmişi ve bilinen iyi bir duruma anında geri dönme yeteneği sağlar.

4. Her Zaman HTTPS’yi SSL Sertifikaları ile Zorunlu Kılın

Siteleri düz HTTP üzerinden sunmak artık kabul edilemez. Yönettiğiniz her site için SSL Sertifikaları yapılandırın. Let’s Encrypt, ücretsiz, otomatik olarak yenilenen sertifikalar sağlar ve hem Apache (mod_ssl ve Certbot aracılığıyla) hem de NGINX ile sorunsuz bir şekilde entegre olur.

Sertifika aldıktan sonra, sunucu bloğunuzu veya sanal ana bilgisayarınızı 443 numaralı bağlantı noktasında dinlemek için güncelleyin ve tüm HTTP trafiğini HTTPS’ye yönlendirin.

5. Kapsamlı Günlüğe Kaydetmeyi Yapılandırın

Her site için her zaman access_log ve error_log yönergelerini tanımlayın. Günlükler, sorunları teşhis ederken, güvenlik olaylarını araştırırken veya trafik desenlerini analiz ederken ilk savunma hattınızdır. Günlükleri varsayılan genel günlüğe güvenmek yerine siteye özgü dosyalarda saklayın.

6. Açıklayıcı, Tutarlı Dosya Adlandırması Kullanın

Yapılandırma dosyalarınızı hizmet verdikleri etki alanından sonra adlandırın (örneğin, Apache için example.com.conf, NGINX için example.com). Bu, birçok sanal ana bilgisayara sahip bir sunucuyu yönetirken hangi dosyanın hangi siteye karşılık geldiğini hemen anlaşılır kılar.

Doğru Hosting Ortamını Seçmek

Bu kılavuzda ele alınan yapılandırma teknikleri hosting kurulumunuzdan bağımsız olarak geçerlidir, ancak sunucu ortamı seçiminiz performans ve esnekliği önemli ölçüde etkiler.

  • Paylaşımlı Web Hosting — Başlangıççılar veya sunucu yapılandırmasının sizin için yönetildiği küçük siteler için ideal. NGINX veya Apache önceden yapılandırılmıştır ve sitelere bir kontrol paneli aracılığıyla erişirsiniz.
  • VPS Hosting — NGINX veya Apache’yi bu kılavuzda açıklandığı şekilde yapılandırmak için tam root erişimine ihtiyaç duyan geliştiriciler ve sistem yöneticileri için ideal seçim. sites-available, sites-enabled ve sunucunun diğer tüm yönleri üzerinde tam kontrole sahipsiniz.
  • Dedicated Servers — Yüksek trafikli web siteleri veya maksimum performans ve izolasyon gerektiren uygulamalar için en iyisi. Web sunucusu yapılandırması da dahil olmak üzere tüm sunucuyu yönetirsiniz, kaynak paylaşımı yoktur.
  • cPanel ile VPS — VPS’nin gücünü grafik kontrol paneli ile birleştirerek, sanal host yönetimini derin komut satırı uzmanlığı olmadan erişilebilir hale getirir.

Sonuç

sites-available ve sites-enabled dizin yapısı, Linux web sunucusu yönetiminde en pratik ve zarif desenlerden biridir. Sistem yöneticilerine tek bir sunucuda düzinelerce web sitesini hassasiyetle yönetme — siteleri etkinleştirme, devre dışı bırakma ve değiştirme — ve hiçbir zaman bir yapılandırmanın kaybı riskine girmeme yeteneği verir.

Temel çıkarımları özetlemek gerekirse:

  • sites-available tüm yapılandırma dosyalarını depolar; sites-enabled yalnızca etkin sembolik bağlantıları içerir.
  • Apache, kolaylaştırılmış site yönetimi için a2ensite ve a2dissite kullanır.
  • NGINX, ln -s ve rm aracılığıyla manuel sembolik bağlantı oluşturma ve kaldırmaya dayanır.
  • Yeniden yüklemeden önce her zaman yapılandırmanızı test edin (apachectl configtest veya nginx -t).
  • Canlı bağlantıları kesmeden değişiklikleri uygulamak için yeniden yükleyin — yeniden başlatmayın.
  • SSL Sertifikaları kullanarak her sitede HTTPS’yi zorunlu kılın.

Kişisel bir proje veya üretim web sitelerinin bir filosunu yönetiyor olsanız da, bu temel bilgiler istikrarlı ve iyi organize edilmiş bir web sunucusu ortamının temeli olarak hizmet edecektir. Bu becerilerinizi uygulamaya koymak için güvenilir bir platform arıyorsanız, sunucu ortamı üzerinde tam kontrol talep eden geliştiriciler ve yöneticiler için özel olarak tasarlanmış AlexHost’un VPS Hosting planlarını keşfedin.