15%

Tüm Hosting Hizmetlerinde %15 indirim

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

Kodu kullanın:

Skills
Başlayın
30.10.2024
1 +1

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 sunabilir. 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 izlenecek yol sağlar.

sites-available ve sites-enabled’ı Anlamak

Hem NGINX hem de Apache, site yapılandırmasını site aktivasyonundan ayırmak için iki dizinli bir model kullanır. Bu mimari desen, basitliğ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 yapılandırmalarının bir kütüphanesi olarak işlev görür. Sunucuda barındırmayı amaçladığınız her web sitesi, burada depolanan kendi yapılandırma dosyasını alır. Önemli olarak, bu dizindeki dosyalar etkin değildir — yapılandırmayı tanımlarlar ancak açıkça etkinleştirilene kadar hiçbir trafiği sunmaz.

sites-enabled

/etc/nginx/sites-enabled/ veya /etc/apache2/sites-enabled/ dizini, sites-available içindeki yapılandırma dosyalarına işaret eden sembolik bağlantılar içerir. Yalnızca bu dizinde etkin bir sembolik bağlantısı olan siteler 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: Yapılandırmasını silmeden bir siteyi devre dışı bırakabilirsiniz.
  • Hızlı dağıtım: Yeni bir siteyi hazırlamak, sembolik bir bağlantı oluşturmak kadar basittir.
  • Temiz organizasyon: Etkin olup olmadıklarından bağımsız olarak tüm yapılandırmalar tek bir yerde bulunur.

Apache ile Web Sitelerini Yönetme

1. Apache Sanal Host Yapılandırması

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

Apache sanal host yapılandırma dosyaları şurada depolanır:

/etc/apache2/sites-available/

#### Sanal 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

Dosya içinde sanal host 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ştirin

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

sudo a2ensite test.oo.md.conf

Bu komut otomatik olarak sites-available ile sites-enabled arasında 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 sunulmaya hazır, ancak Apache yeniden yüklenene kadar değişiklikler etkili olmayacaktır.

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

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ükleyin

sudo systemctl reload apache2

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

5. a2dissite ile Siteyi Devre Dışı Bırakın

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

sudo a2dissite test.oo.md.conf

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

sudo systemctl reload apache2

NGINX ile Web Sitelerini Yönetme

1. NGINX Sunucu Bloğu Yapılandırması

NGINX, Sunucu Blokları kullanır — Apache’nin Sanal Hostlarının işlevsel eşdeğeri. Sunucu bloğu yapılandırma dosyaları şurada depolanır:

/etc/nginx/sites-available/

#### Sunucu Bloğu Yapılandırma Dosyası Oluşturma

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

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

Dosya içinde sunucu bloğ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;
    }
}

> Açıklanan anahtar yönergeler:

> – listen 80 — NGINX’e 80 numaralı bağlantı noktasında HTTP trafiğini dinlemesini söyler.

> – server_name — Bu bloğun yanıt verdiği etki 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 etkin bağlantıları kesintiye uğratmadan zarif bir şekilde uygular — canlı ortamlarda tam bir restart yerine her zaman tercih edilir.

5. NGINX’de 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 herhangi bir zamanda yeniden etkinleştirilebilir.

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

GörevApache KomutuNGINX Komutu
Yapılandırma 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/
Yapılandırmayı 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 başağrıları yaratır ve sorun gidermeyi önemli ölçüde zorlaştırır.

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

Her yeniden yüklemeden önce apachectl configtest veya nginx -t çalıştırmayı vazgeçilmez bir alışkanlık haline getirin. Bir yapılandırma dosyasındaki sözdizimi hatası, sunucudaki tüm siteleri — yalnızca düzenlediklerinizi değil — çevrimdışı alabilir.

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 izleyin:

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ıyla 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 yenilenen sertifikalar sağlar ve hem Apache (mod_ssl ve Certbot aracılığıyla) hem de NGINX ile sorunsuz bir şekilde entegre olur.

Bir sertifika aldıktan sonra, sunucu bloğunuzu veya sanal hostunuzu 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üğü Yapılandırın

15%

Tüm Hosting Hizmetlerinde %15 indirim

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

Kodu kullanın:

Skills
Başlayın