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.confDosya 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.confBu 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.confSite 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 configtestBaşarılı bir çıktı şunu gösterecektir:
Syntax OKHatalar 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.confBu, 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 apache2NGINX 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.mdDosya 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 -tBaş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 successfulHatalar 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 nginxApache’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.mdArdından değişikliği uygulamak için NGINX’i yeniden yükleyin:
sudo systemctl reload nginxsites-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örev | Apache Komutu | NGINX Komutu |
|---|---|---|
| Yapılandırma dosyası oluştur | nano /etc/apache2/sites-available/site.conf | nano /etc/nginx/sites-available/site |
| Siteyi etkinleştir | sudo a2ensite site.conf | sudo ln -s /etc/nginx/sites-available/site /etc/nginx/sites-enabled/ |
| Yapılandırmayı test et | sudo apachectl configtest | sudo nginx -t |
| Web sunucusunu yeniden yükle | sudo systemctl reload apache2 | sudo systemctl reload nginx |
| Siteyi devre dışı bırak | sudo a2dissite site.conf | sudo 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.
