IIS Kurulumu: Windows Server VDS'de Site Yayınlama ve Güvenlik Duvarı Port Açma
Windows Server 2019 ve 2022 VDS'inizde IIS'i Server Manager ya da PowerShell ile kurun, alan adınız için site açın, Windows Güvenlik Duvarı'nda port açın ve sitenizi ücretsiz SSL ile yayına alın.

Windows VDS'inizde bir ASP.NET uygulaması, kurum içi bir web arayüzü ya da basit bir HTML sitesi yayınlamak istiyorsanız ek yazılım satın almanıza gerek yoktur: Windows Server'ın içinde IIS (Internet Information Services) web sunucusu hazır gelir, yalnızca etkinleştirmeniz gerekir. Bu rehberde Windows Server 2019 ve 2022'de IIS'i hem Sunucu Yöneticisi (Server Manager) hem PowerShell ile kuruyor, alan adınız için bir site açıyor, Windows Güvenlik Duvarı'nda port açmayı gösteriyor ve siteyi ücretsiz SSL ile yayına almanın yolunu anlatıyoruz.
Örneklerde VDS IP adresi olarak 203.0.113.20, alan adı olarak ornek.com kullanıldı. Windows Server arayüzü İngilizce olduğu için menü adlarını İngilizce yazdık, açıklamaları Türkçe verdik. Bu rehberdeki ekran çizimleri temsilîdir; sürümünüze göre küçük farklar görebilirsiniz.
Başlamadan Önce
- Bağlantı: VDS'inize Uzak Masaüstü (RDP) ile
Administratorkullanıcısıyla bağlanın. Bağlanamıyorsanız VDS'e Uzak Masaüstü ve SSH ile bağlanamıyorum rehberimize göz atın. - RDP güvenliği: Sunucuyu internete web için açmadan önce Uzak Masaüstü'nü sıkılaştırmanızı öneririz; şifre politikası ve port değiştirme adımları Uzak Masaüstü RDP güvenliği rehberimizde.
- Alan adı: Siteyi alan adıyla yayınlayacaksanız DNS yönetiminde
ornek.comvewww.ornek.comiçin A kaydını VDS IP adresinize yönlendirin. - Güncellemeler: Kurulumdan önce Settings > Update & Security > Windows Update üzerinden bekleyen güncellemeleri yükleyin.
1. Yöntem: Server Manager ile IIS Kurulumu
- Server Manager'ı açın (başlat menüsünde ya da görev çubuğunda bulunur; RDP oturumunda genellikle kendiliğinden açılır).
- Sağ üstteki Manage menüsünden Add Roles and Features'ı seçin.
- Before You Begin ekranında Next'e basın.
- Installation Type ekranında Role-based or feature-based installation'ı seçin.
- Server Selection ekranında listedeki kendi sunucunuz seçili kalsın, Next.
- Server Roles listesinde Web Server (IIS) kutusunu işaretleyin. Açılan pencerede Add Features düğmesine basın; bu, IIS Yönetim Konsolu'nu da ekler.
- Features ekranını olduğu gibi geçin.
- Role Services ekranında varsayılan seçimler statik bir site için yeterlidir. ASP.NET uygulaması çalıştıracaksanız Application Development altında ASP.NET 4.8 kutusunu da işaretleyin (Windows Server 2019'da sürüm numarası farklı görünebilir).
- Confirmation ekranında Install'a basın. Kurulum birkaç dakika sürer, genellikle yeniden başlatma gerekmez.

2. Yöntem: PowerShell ile Tek Komutta Kurulum
Aynı işi tek satırla yapabilirsiniz. Başlat menüsünde Windows PowerShell'e sağ tıklayıp Run as Administrator ile açın:
Install-WindowsFeature -Name Web-Server -IncludeManagementTools
ASP.NET 4.x desteği de gerekiyorsa:
Install-WindowsFeature -Name Web-Asp-Net45
Çıktıda Success sütununun True olması kurulumun tamamlandığını gösterir. Hangi IIS bileşenlerinin kurulu olduğunu görmek için:
Get-WindowsFeature -Name Web-* | Where-Object Installed

.NET 6 / 8 ve üstü (ASP.NET Core) uygulamalar için yukarıdaki ASP.NET 4.x bileşeni yeterli değildir. Microsoft'un resmi sitesinden uygulamanızın sürümüne uygun ASP.NET Core Hosting Bundle paketini indirip kurun, ardından
iisresetkomutunu çalıştırın.
Kurulumu doğrulayın
Sunucunun içinde tarayıcıyı açıp http://localhost adresine gidin; IIS'in mavi karşılama sayfasını görmelisiniz. Kendi bilgisayarınızdan http://203.0.113.20 adresini açtığınızda da aynı sayfa geliyorsa web sunucusu dışarıdan erişilebilir durumdadır. Gelmiyorsa güvenlik duvarı bölümüne geçin.
Site Yayınlama: Yeni Bir Web Sitesi Eklemek
IIS kurulduğunda C:\inetpub\wwwroot klasörünü yayınlayan Default Web Site oluşur. Tek bir site için dosyalarınızı bu klasöre koymanız yeterlidir; ama alan adına göre birden fazla site yayınlayacaksanız her biri için ayrı bir site tanımlamak daha düzenlidir.
IIS Manager ile
- Site dosyaları için bir klasör açın, örneğin
C:\inetpub\ornek.com, ve dosyalarınızı içine kopyalayın. Ana sayfanın adıindex.html,default.aspxgibi IIS'in varsayılan belge listesindeki bir ad olmalıdır. - Server Manager > Tools > Internet Information Services (IIS) Manager'ı açın.
- Sol bölmede sunucu adını genişletin, Sites'a sağ tıklayın, Add Website'ı seçin.
- Alanları doldurun:
- Site name:
ornek.com(IIS bu adla bir uygulama havuzu da oluşturur). - Physical path:
C:\inetpub\ornek.com - Binding: Type
http, IP addressAll Unassigned, Port80. - Host name:
ornek.com
- Site name:
- OK'a basın.
www.ornek.comiçin de yayın yapmak istiyorsanız siteye sağ tıklayıp Edit Bindings > Add ile aynı ayarlarlawww.ornek.comhost adını ekleyin.

Host name alanı, aynı 80 portunda birden fazla siteyi alan adına göre ayırmanızı sağlar. Bu alan boş bırakılmış iki site aynı IP ve portu kullanamaz; ikinci site başlatılamaz.
PowerShell ile
New-Item -ItemType Directory -Path C:\inetpub\ornek.com
New-IISSite -Name "ornek.com" -PhysicalPath "C:\inetpub\ornek.com" -BindingInformation "*:80:ornek.com"
New-IISSiteBinding -Name "ornek.com" -BindingInformation "*:80:www.ornek.com" -Protocol http
Get-IISSite
BindingInformation değeri IP:Port:HostAdı biçimindedir; * tüm IP adreslerinde dinlemek anlamına gelir.
Dosya izinleri
IIS, sitenizi uygulama havuzunun kimliğiyle çalıştırır. Sitenizin dosya yükleme gibi yazma işlemi yapacağı bir klasör varsa (ör. uploads) yalnız o klasöre yazma izni verin:
icacls "C:\inetpub\ornek.com\uploads" /grant "IIS AppPool\ornek.com:(OI)(CI)M"
Bütün site klasörüne yazma izni vermeyin; sitedeki bir açık, saldırganın sunucuya dosya yazmasına yol açar.
Windows Güvenlik Duvarı'nda Port Açma
IIS kurulumu, HTTP için World Wide Web Services (HTTP Traffic-In) gelen kuralını kendiliğinden etkinleştirir. Yine de 80 ve 443 portlarının açık olduğunu kontrol etmek ve IIS dışındaki uygulamalarınız için port açmak isteyebilirsiniz.
Mevcut kuralları kontrol edin
Get-NetFirewallPortFilter | Where-Object { $_.LocalPort -contains '80' -or $_.LocalPort -contains '443' } |
Get-NetFirewallRule | Where-Object Direction -eq Inbound |
Select-Object DisplayName, Enabled, Action
Web trafiğine izin veren kuralda Enabled değeri True ve Action değeri Allow olmalıdır. 443 için etkin bir kural görmüyorsanız aşağıdaki komutla ekleyin.
PowerShell ile yeni kural ekleyin
Web için 80 ve 443'ü birlikte açmak:
New-NetFirewallRule -DisplayName "Web HTTP-HTTPS" -Direction Inbound -Protocol TCP -LocalPort 80,443 -Action Allow
Kendi uygulamanız için (ör. 8080 portunda çalışan bir API):
New-NetFirewallRule -DisplayName "API 8080" -Direction Inbound -Protocol TCP -LocalPort 8080 -Action Allow
Yalnız belirli bir IP adresine izin vermek (ör. ofisinizden SQL Server erişimi):
New-NetFirewallRule -DisplayName "SQL 1433 Ofis" -Direction Inbound -Protocol TCP -LocalPort 1433 -RemoteAddress 198.51.100.25 -Action Allow
Kuralı kaldırmak için Remove-NetFirewallRule -DisplayName "API 8080" yazmanız yeterlidir.

Arayüzden kural eklemek
- Başlat menüsünde
wf.mscyazıp Windows Defender Firewall with Advanced Security'yi açın. - Sol bölmede Inbound Rules, sağ bölmede New Rule...
- Rule Type:
Port> Next. - Protocol and Ports:
TCP, Specific local ports:80, 443(UDP gerektiren bir uygulama içinUDPseçin). - Action:
Allow the connection. - Profile: Domain, Private ve Public kutularının üçü de işaretli kalsın.
- Name: kurala tanıyacağınız bir ad verin, örneğin "Web HTTP-HTTPS", Finish.
Paneldeki Güvenlik Duvarı ile birlikte kullanmak
AnkSOFT VDS'lerinde müşteri panelinizde ayrıca bir Güvenlik Duvarı sekmesi bulunur. Panelden eklediğiniz kurallar sunucunuzdaki Windows Güvenlik Duvarı'na ayrı bir kural grubu olarak yazılır ve panel, gelen trafik için varsayılan politikayı da ayarlar. Pratikte:
- Panel güvenlik duvarını kullanıyorsanız politikayı Engelle (önerilen) seçin ve web için "Web sunucusu", Uzak Masaüstü için "Uzak erişim" profillerini ekleyin.
- Panel kendi kural grubunu her kayıtta baştan yazar ama sizin Windows'ta elle eklediğiniz kurallara dokunmaz.
- Bir kuralı hangi tarafta tuttuğunuzu not edin; aynı portu iki yerde yönetmek sorun giderirken kafa karıştırır.
Portun dışarıdan açık olduğunu test edin
Sunucuda ilgili portu bir servisin dinlediğini kontrol edin:
netstat -ano | findstr ":80 "
Kendi bilgisayarınızdaki PowerShell'den (sunucudan değil) dışarıdan erişimi test edin:
Test-NetConnection 203.0.113.20 -Port 80
TcpTestSucceeded : True görüyorsanız port açıktır ve bir servis yanıt veriyordur. False ise ya kural eksiktir ya da o portta çalışan bir uygulama yoktur; ikisini de ayrı ayrı kontrol edin.
Ücretsiz SSL: Siteyi HTTPS ile Yayınlamak
IIS'e Let's Encrypt sertifikası almanın en pratik yolu, Windows için geliştirilmiş ücretsiz ve açık kaynaklı bir ACME istemcisi kullanmaktır. Bu alanda en yaygın kullanılanı win-acme'dir:
- win-acme'nin resmi sitesinden son sürümü indirip örneğin
C:\win-acmeklasörüne açın. wacs.exedosyasını yönetici olarak çalıştırın.- Menüden Create certificate (default settings)'i seçin; program IIS'teki siteleri ve host adlarını listeler.
ornek.comsitesini seçin, e-posta adresinizi girip koşulları onaylayın.
Program 80 portu üzerinden alan adınızı doğrular, sertifikayı alır, sitenize https bağlamasını (443) ekler ve yenileme için Windows Görev Zamanlayıcı'ya bir görev oluşturur. Bu yüzden doğrulama sırasında 80 portunun dışarıdan erişilebilir olması şarttır. Sertifikadan sonra 443 portunun güvenlik duvarında açık olduğundan emin olun.

HTTP isteklerini HTTPS'e yönlendirmek
Sertifika kurulduktan sonra ziyaretçilerin http:// ile gelse bile güvenli adrese aktarılması gerekir. IIS'te bunun için Microsoft'un ücretsiz URL Rewrite modülünü kurun (Microsoft'un IIS sitesinden indirilir), ardından site klasöründeki web.config dosyasına şu kuralı ekleyin:
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="HTTPS'e yonlendir" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="off" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
web.config dosyanızda zaten bir <system.webServer> bölümü varsa yalnız <rewrite> bloğunu onun içine ekleyin; ikinci bir <configuration> açmayın. URL Rewrite modülü kurulmadan bu kuralı eklerseniz site HTTP Error 500.19 verir.
Uygulama Havuzu (Application Pool) Ayarları
IIS'te her site bir uygulama havuzu içinde çalışır. Siteleri ayrı havuzlarda tutmak, birindeki çökmenin ya da bellek sorununun diğerlerini etkilememesini sağlar. IIS Manager'da sol bölmede Application Pools'a tıkladığınızda her sitenin havuzunu görürsünüz.
- .NET CLR version: ASP.NET 4.x uygulamaları için
v4.0; ASP.NET Core (.NET 6/8 ve üstü) ve düz HTML/PHP siteleri için No Managed Code seçin. ASP.NET Core uygulamalarında yanlış seçim çalışmayı engellemez ama gereksiz yük getirir. - Geri dönüşüm (Recycling): IIS havuzu varsayılan olarak 29 saatte bir yeniden başlatır. Yoğun saatlerde kısa bir yavaşlama yaşamamak için Advanced Settings > Recycling > Specific Times ile bunu gece saatine (ör. 04:00) alabilirsiniz.
- Boşta kapanma (Idle Time-out): Havuz varsayılan olarak 20 dakika istek gelmezse kapanır; ilk ziyaretçi uygulamanın yeniden açılmasını bekler. Her zaman hızlı açılması gereken bir uygulamada Idle Time-out değerini
0yapabilirsiniz; bu durumda uygulama sürekli bellekte kalır.
Bir site sorun çıkardığında önce yalnız onun havuzunu yeniden başlatın (havuza sağ tık > Recycle); iisreset tüm siteleri birden yeniden başlatır.
En Sık Yapılan Hatalar
- Site sunucuda açılıyor ama dışarıdan açılmıyor. Windows Güvenlik Duvarı'nda 80/443 kuralı kapalı ya da panel güvenlik duvarında bu portlar eksik.
Test-NetConnectionile kontrol edin. - "The binding '*:80:' is assigned to another site" uyarısı. İki site host adı olmadan aynı portu kullanıyor. Yeni siteye Host name yazın ya da Default Web Site'ı durdurun.
- HTTP Error 403.14 - Forbidden. Klasörde varsayılan belge (
index.html,default.aspx) yok. Dosya adını kontrol edin ya da IIS Manager'da Default Document listesine kendi dosya adınızı ekleyin. - HTTP Error 500.19.
web.configiçinde sunucuda kurulu olmayan bir modül kullanılıyor (ör. URL Rewrite ya da ASP.NET Core modülü). Gerekli bileşeni ya da Hosting Bundle'ı kurun. - SSL alınamıyor. DNS A kaydı henüz VDS IP'nizi göstermiyor ya da 80 portu kapalı.
nslookup ornek.comile DNS'i,Test-NetConnectionile portu doğrulayın. - Veritabanı portunu (1433, 3306) herkese açmak. Bu portları yalnız belirli IP'lere
-RemoteAddressile açın ya da hiç açmayın. - Güvenlik duvarını tamamen kapatmak. "Port açılmıyor" diye Windows Güvenlik Duvarı'nı kapatmak sunucunun tüm servislerini internete açar. Sorunu kuralla çözün.
Özet
- Server Manager'dan Web Server (IIS) rolünü ekleyin ya da
Install-WindowsFeature -Name Web-Server -IncludeManagementToolsçalıştırın. - Her site için ayrı bir klasör ve host name bağlamalı ayrı bir site oluşturun.
- Windows Güvenlik Duvarı'nda 80 ve 443'ün açık olduğunu doğrulayın; panel güvenlik duvarını kullanıyorsanız orada da açın.
- Dışarıdan erişimi
Test-NetConnectionile test edin. - win-acme gibi bir ACME istemcisiyle ücretsiz SSL alıp otomatik yenilemeyi bırakın.
Linux tarafında aynı işi yapmak isterseniz LEMP Kurulumu rehberimiz Nginx, PHP ve MariaDB ile adım adım anlatıyor. Bir ayar işler hâlde değilse ve sunucuyu temize çekmek istiyorsanız VDS yeniden kurulum rehberimize bakın.
Windows Server 2019 ve 2022 kurulabilen, panelden güvenlik duvarı yönetimi sunan Türkiye lokasyonlu Windows sanal sunucular için VDS paketlerimizi inceleyin. Kurulumda takıldığınız bir adım olursa destek talebi açın; talebinize VDS IP adresinizi, sitenizin adını ve gördüğünüz hata kodunu ekleyin, şifrenizi yazmayın.
Kaynaklar
- Create a Web Site – Microsoft Learn (IIS)
- Windows Firewall overview – Microsoft Learn
- win-acme (resmi site): IIS için Let's Encrypt istemcisi
Sıkça Sorulan Sorular
Windows Server'da IIS nasıl kurulur?
Server Manager'da Manage > Add Roles and Features yolunu izleyip Server Roles adımında Web Server (IIS) rolünü seçin ya da yönetici PowerShell'de Install-WindowsFeature -Name Web-Server -IncludeManagementTools komutunu çalıştırın.
IIS kullanmak için ek lisans gerekir mi?
Hayır. IIS, Windows Server'ın içinde gelen bir roldür; etkinleştirmek için ayrıca lisans satın almanız gerekmez.
Site sunucuda açılıyor ama dışarıdan açılmıyor, neden?
Çoğunlukla Windows Güvenlik Duvarı'nda 80/443 için etkin bir gelen kural yoktur ya da panel güvenlik duvarında bu portlar eksiktir. Kendi bilgisayarınızdan Test-NetConnection IP_ADRESI -Port 80 komutuyla portu test edin.
Aynı IIS sunucusunda birden fazla site yayınlayabilir miyim?
Evet. Her site için ayrı bir klasör ve ayrı bir site oluşturun, bağlamada Host name alanına alan adını yazın. Böylece aynı IP ve 80 portunda siteler alan adına göre ayrılır.
IIS'e ücretsiz SSL sertifikası nasıl kurulur?
win-acme gibi ücretsiz bir ACME istemcisiyle Let's Encrypt sertifikası alabilirsiniz. Program sitenizi IIS'ten bulur, alan adını 80 portu üzerinden doğrular, 443 bağlamasını ekler ve yenileme için zamanlanmış görev oluşturur.


