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.confDosyanı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.confBu 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.confSite 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 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ü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.confBu, 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 apache2NGINX 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.mdDosyanı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 -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 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.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 istediğiniz zaman yeniden etkinleştirilebilir.
Hızlı Referans: Apache vs. NGINX Site Yönetimi
| Görev | Apache Komutu | NGINX Komutu |
|---|---|---|
| Config 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/ |
| Konfigürasyonu 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 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-enabledve 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
a2ensitevea2dissitekullanır. - NGINX,
ln -svermaracı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 configtestveyanginx -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.
tasarruf edin