IIS Kurulumu: Windows Server’da Web Sitesi Yayınlama
Internet Information Services (IIS), Windows Server ile birlikte gelen ve rol olarak etkinleştirilen Microsoft web sunucusudur; IIS kurulumu, bu rolü ekleyip ilk sitenizi yayına hazırlamak anlamına gelir. Statik siteler, ASP.NET Framework ve ASP.NET Core uygulamaları IIS üzerinde çalışır; PHP de FastCGI aracılığıyla desteklenir.
IIS’i kendiniz yönetmek, sunucu üzerinde tam denetim isteyenler içindir: LIONFIN RDP sunucu ya da Windows kurulu bir VDS üzerinde birden fazla site, özel modül ve Windows kimlik doğrulaması kullanabilirsiniz. Yalnızca bir ASP.NET sitesi yayınlayacaksanız sunucu bakımını üstlenmeden Plesk paneliyle çalışan Windows hosting daha pratik olabilir; panel tarafındaki ayarlar Plesk ASP.NET ayarları rehberinde, platform seçimi ise Linux hosting mi Windows hosting mi karşılaştırmasında anlatılır.
Kısa cevap
IIS kurulumu için Server Manager’da Add Roles and Features sihirbazından Web Server (IIS) rolünü seçin ya da yönetici PowerShell’de Install-WindowsFeature -Name Web-Server -IncludeManagementTools komutunu çalıştırın. ASP.NET 4.x uygulamaları için Web-Asp-Net45 özelliğini, ASP.NET Core için Microsoft’un .NET Hosting Bundle paketini ekleyin. Ardından IIS Manager’da site ve uygulama havuzu oluşturun, 80 ve 443 portlarını açın ve sertifikayla HTTPS bağlaması tanımlayın.
Server Manager ile IIS kurulumu nasıl yapılır?
Grafik arayüzde IIS, Sunucu Yöneticisi’ndeki rol ekleme sihirbazıyla birkaç dakikada kurulur:
- Server Manager (Sunucu Yöneticisi) → Manage → Add Roles and Features yolunu izleyin.
- Role-based or feature-based installation seçeneğini işaretleyip listeden sunucunuzu seçin.
- Server Roles adımında Web Server (IIS) kutusunu işaretleyin; açılan pencerede yönetim araçlarının eklenmesini onaylayın.
- Role Services adımında gereken bileşenleri seçin: ASP.NET Framework uygulamaları için Application Development altındaki ASP.NET 4.x seçeneği (Windows Server 2022’de ASP.NET 4.8), WebSocket kullanan uygulamalar için WebSocket Protocol.
- Install ile kurulumu başlatın; bu rol için genellikle yeniden başlatma gerekmez.
Kurulumu doğrulamak için sunucudaki tarayıcıda localhost adresini açın; IIS’in varsayılan karşılama sayfası görünüyorsa web sunucusu çalışıyordur. Varsayılan sitenin dosyaları C:\inetpub\wwwroot klasöründedir.
PowerShell ile IIS kurulumu ve sık kullanılan bileşenler
Komut satırından IIS kurulumu tek satırdır ve aynı yapılandırmayı birden çok sunucuda tekrarlamak için daha uygundur. Yönetici PowerShell’de:
# Web sunucusu rolü ve IIS Manager
Install-WindowsFeature -Name Web-Server -IncludeManagementTools
# ASP.NET 4.x (Web Forms, MVC 5, Web API 2) desteği
Install-WindowsFeature -Name Web-Asp-Net45
# Kurulu IIS bileşenlerini listeleyin
Get-WindowsFeature -Name Web-* | Where-Object Installedİhtiyaca göre eklenebilecek diğer bileşenler:
| Özellik adı | Ne işe yarar |
|---|---|
Web-Http-Redirect | Basit HTTP yönlendirmeleri |
Web-WebSockets | WebSocket desteği (ör. SignalR) |
Web-Dyn-Compression | Dinamik içeriği sıkıştırarak bant genişliğinden tasarruf |
Web-Windows-Auth | Windows hesaplarıyla kimlik doğrulama |
Web-CGI | CGI ve FastCGI; PHP çalıştırmak için gerekir |
Web-App-Init | Uygulamayı ilk istekten önce başlatarak açılış gecikmesini azaltır |
Web-Ftp-Server | IIS üzerinde FTP sunucusu |
Gereken bağımlı bileşenler komutla birlikte otomatik kurulur. Yeniden yazma kuralları için gereken URL Rewrite modülü ise rolün parçası değildir; Microsoft’tan ayrıca indirilir.
ASP.NET Core uygulamaları için .NET Hosting Bundle
ASP.NET Core uygulamalarını IIS’te çalıştırmak için sunucuya Microsoft’un .NET Hosting Bundle paketini kurmanız gerekir; paket .NET çalışma zamanını, ASP.NET Core çalışma zamanını ve IIS ile uygulama arasında köprü kuran ASP.NET Core Module’ü birlikte yükler.
- Önce IIS’i kurun. Paket IIS’ten önce kurulduysa kurulum dosyasını yeniden çalıştırıp Repair seçin.
- Microsoft’un resmi .NET indirme sayfasından, uygulamanızın hedeflediği .NET sürümüne ait Hosting Bundle dosyasını indirip kurun.
- IIS’in yeni modülü tanıması için komut isteminde
net stop was /yve ardındannet start w3svcçalıştırın ya da sunucuyu yeniden başlatın. - Uygulamayı geliştirme bilgisayarınızda
dotnet publish -c Release -o .\yayinile yayınlayın ve çıktı klasörünü sunucudaki site klasörüne kopyalayın.
ASP.NET Core sitesinin uygulama havuzunda .NET CLR version değeri No Managed Code olmalıdır; uygulama, havuzun yükleyeceği klasik .NET Framework çalışma zamanına ihtiyaç duymaz. Uygulama açılmıyorsa Olay Görüntüleyicisi’nin Application günlüğündeki ASP.NET Core Module kayıtları hatanın nedenini gösterir.
IIS’te site ve uygulama havuzu nasıl oluşturulur?
Her site kendi klasöründe ve kendi uygulama havuzunda (application pool) çalışmalıdır; böylece bir uygulamanın çökmesi diğerlerini etkilemez. IIS Manager’ı inetmgr komutuyla açıp şu adımları izleyin:
- Site dosyaları için bir klasör oluşturun, örneğin
C:\inetpub\siteniz. - Sol bölmede Sites üzerine sağ tıklayıp Add Website seçin.
- Site name alanına bir ad yazın; IIS aynı adla yeni bir uygulama havuzu oluşturur.
- Physical path alanında site klasörünü seçin.
- Binding bölümünde tür
http, port80olsun; Host name alanınawww.siteniz.comyazıp OK ile kaydedin. - Application Pools altında yeni havuzu açıp .NET CLR version değerini seçin: ASP.NET 4.x için
v4.0, ASP.NET Core ve statik siteler için No Managed Code. Managed pipeline modeIntegratedkalsın.
Default Web Site host adı olmadan 80 portunu dinler; yeni sitenize host adı vermezseniz iki site çakışır ve yenisi başlamaz. Varsayılan siteyi durdurmak ya da her siteye host adı tanımlamak bu sorunu önler. Aynı adımları otomatikleştirmek isterseniz WebAdministration PowerShell modülündeki New-WebAppPool ve New-Website komutlarını kullanabilirsiniz.
Klasör izinleri: IIS_IUSRS ve ApplicationPoolIdentity
Uygulama havuzları varsayılan olarak ApplicationPoolIdentity adlı sanal hesapla çalışır; bu hesap Windows izinlerinde IIS AppPool\HavuzAdi olarak görünür. Site klasörüne yalnızca okuma, yükleme ve günlük klasörlerine ise değiştirme izni vermek en güvenli düzendir:
icacls "C:\inetpub\siteniz" /grant "IIS AppPool\siteniz:(OI)(CI)RX"
icacls "C:\inetpub\siteniz\uploads" /grant "IIS AppPool\siteniz:(OI)(CI)M"RX okuma ve çalıştırma, M değiştirme izni verir; (OI)(CI) izni alt klasör ve dosyalara devreder. C:\inetpub\wwwroot klasöründe IIS_IUSRS grubunun okuma izni varsayılan olarak tanımlıdır; kendi oluşturduğunuz klasörlerde ise izni sizin vermeniz gerekir.
Anonim ziyaretçiler varsayılan olarak IUSR hesabıyla temsil edilir. Site düzeyinde Authentication → Anonymous Authentication → Edit yolundan Application pool identity seçeneğini işaretlerseniz izinleri tek bir kimlik üzerinden yönetirsiniz. Everyone grubuna tam denetim vermek sorunu çözüyor gibi görünse de sunucunun güvenliğini zayıflatır.
Güvenlik duvarı ve HTTPS bağlaması
Ziyaretçilerin siteye ulaşması için 80 ve 443 portlarının açık olması, HTTPS için de siteye bir sertifikanın bağlanması gerekir. Windows Güvenlik Duvarı kuralını tek komutla oluşturabilirsiniz; sağlayıcı tarafında ayrı bir ağ güvenlik duvarı varsa aynı portları orada da açın:
New-NetFirewallRule -DisplayName 'Web 80-443' -Direction Inbound -Protocol TCP -LocalPort 80,443 -Action AllowHTTPS bağlaması için:
- Sertifikayı hazırlayın: kurumsal bir SSL sertifikası kullanacaksanız IIS Manager’da sunucu düğümündeki Server Certificates → Create Certificate Request ile istek dosyası üretin (ayrıntılar CSR oluşturma rehberinde) ya da elinizdeki
.pfxdosyasını Import ile içe aktarın. - Siteyi seçip sağ bölmedeki Bindings → Add yolunu izleyin; tür
https, port443, host adıwww.siteniz.comolsun. - Aynı IP üzerinde birden fazla HTTPS sitesi varsa Require Server Name Indication kutusunu işaretleyip listeden sertifikayı seçin.
Ücretsiz Let’s Encrypt sertifikası için açık kaynaklı win-acme aracı IIS sitelerinizi algılayıp sertifikayı alır ve yenileme için zamanlanmış görev oluşturur. HTTP’den HTTPS’e kalıcı yönlendirme kuralları HTTP HTTPS yönlendirme rehberinde anlatılır.
IIS günlükleri ve sık karşılaşılan hatalar
Her sitenin erişim günlükleri varsayılan olarak C:\inetpub\logs\LogFiles\W3SVC1 gibi klasörlerde tutulur; klasör adındaki sayı, IIS Manager’daki site listesinde görünen site kimliğidir (Site ID). Bağlantı düzeyindeki hatalar ise C:\Windows\System32\LogFiles\HTTPERR klasörüne yazılır.
| Hata | Olası neden | Çözüm |
|---|---|---|
| 403.14 Forbidden | Klasörde varsayılan belge yok, dizin listeleme kapalı | Default Document listesine giriş dosyanızı (ör. index.html) ekleyin |
| 500.19 | web.config okunamıyor ya da tanımsız bir bölüm içeriyor | XML’i doğrulayın; rewrite bölümü varsa URL Rewrite modülünü kurun |
| 503 Service Unavailable | Uygulama havuzu durmuş | Application Pools ekranında havuzu başlatın, nedenini Olay Görüntüleyicisi’nde arayın |
| 500.30 / 502.5 | ASP.NET Core uygulaması başlatılamıyor | Hosting Bundle sürümünü ve Application günlüğündeki modül kayıtlarını kontrol edin |
IIS, ayrıntılı hata sayfasını varsayılan olarak yalnızca sunucunun kendisinden gelen isteklere gösterir; hatanın tam metnini görmek için sayfayı sunucudaki tarayıcıda açın.
Sık Sorulan Sorular
IIS için ayrıca lisans gerekir mi?
Hayır. IIS, Windows Server’ın parçasıdır ve ayrıca ücretlendirilen bir ürün değildir; Web Server rolünü eklemek ek lisans gerektirmez. Sunucunun kendisi için geçerli Windows Server lisans koşulları ise aynen geçerlidir. Lisansın sunucu paketinize dahil olup olmadığını paket sayfasından, CAL gibi ayrıntıları Windows Server lisanslama rehberinden kontrol edebilirsiniz.
IIS üzerinde PHP çalıştırılabilir mi?
Evet. Web-CGI özelliğiyle FastCGI desteğini kurup PHP’nin Windows için hazırlanmış NTS (Non Thread Safe) sürümünü sunucuya yerleştirdikten sonra .php uzantısı için bir FastCGI işleyicisi tanımlarsınız. Bununla birlikte WordPress gibi PHP uygulamaları çoğunlukla Linux ortamında test edildiği için yalnızca PHP çalıştıracaksanız Linux tabanlı bir sunucu ya da hosting daha az uğraştırır.
IIS’te sitem 503 Service Unavailable hatası veriyor, ne yapmalıyım?
Bu hata çoğunlukla uygulama havuzunun durduğunu gösterir. IIS Manager’da Application Pools ekranını açıp havuzu başlatın. Havuz kısa sürede yeniden duruyorsa uygulama art arda çöküyor ve hızlı hata koruması (Rapid-Fail Protection) devreye giriyordur; nedenini Olay Görüntüleyicisi’ndeki System ve Application günlüklerinde arayın, havuz özel bir hesapla çalışıyorsa parolasının değişip değişmediğini kontrol edin.
IIS kurduktan sonra varsayılan sayfa yerine kendi sitem nasıl açılır?
Site dosyalarınızı ayrı bir klasöre koyup IIS Manager’da Add Website ile host adı tanımlı yeni bir site oluşturun ya da dosyaları C:\inetpub\wwwroot klasörüne yerleştirin. Varsayılan belge listesinde index.html ya da default.aspx gibi giriş dosyanızın bulunduğunu kontrol edin. Alan adının sunucunun IP adresine yönlendiğinden emin olmak için DNS’teki A kaydını da doğrulayın.
IIS nasıl kaldırılır?
Yönetici PowerShell’de Uninstall-WindowsFeature -Name Web-Server -IncludeManagementTools komutu web sunucusu rolünü ve yönetim araçlarını kaldırır; işlem sonunda yeniden başlatma istenebilir. Kaldırmadan önce site dosyalarınızın, sertifikalarınızın ve IIS yapılandırmasının yedeğini alın. Yapılandırmayı yedeklemek için C:\Windows\System32\inetsrv klasöründeki appcmd aracının add backup komutu kullanılabilir.
Bu makale yardımcı oldu mu?
Geri bildiriminiz için teşekkürler!
kişi faydalı buldu