En Hızlı, En Güvenilir ve En Hatasız IIS Taşıması Nasıl Yapılır?

Cengizhancengiz
turkcell
Published in
5 min readDec 8, 2021

Merhaba Arkadaşlar,

Bu yazımda sizlere en hızlı, en güvenilir ve en hatasız şekilde mevcut IIS taşıması ya da yeni bir sunucumuzu en hızlı şekilde nasıl devreye alacağımız ile ilgili bilgi vereceğim.

Internet Information Services (“IIS”); esnek yapılı ve genel kullanım için Microsoft firması tarafından geliştirilmiş Windows işletim sistemlerinde ve sunucularında kullanılan bir alt yazılımdır.

Yazımın detaylarına başlamadan önce IIS ‘in tarihçesi ile ilgili kısa bir bilgilendirme yapmak istiyorum. 30 Mayıs 1995 tarihinde Windows NT 3.51 işletim sistemi üzerinden ücretsiz bir eklenti olarak duyurulan IIS 1.0 ile IIS dünyasına merhaba dedik. Şimdiye kadar Microsoft neredeyse çıkardığı her işletim sistemi sonrasında yeni versiyon IIS’ini bizlerle paylaştı.

Günümüzde her ne kadar orta katmanlarımız Cloud dünyaya kaysa bile geleneksel dünyada hayatımızda IIS, Weblogic gibi orta katmana hizmet eden uygulamalar halen dünyada aktif bir şekilde kullanıma devam etmektedir. Değişen dünya şartlarında en hızlı şekilde müşterilerimize/ziyaretçilerimize taleplerine uygun bir şekilde alt yapı hazırlamamız ve bu alt yapıyı her an hazır etmemiz gerekmektedir.

Şimdi yazımızın konu başlığı olan en hızlı, en güvenilir ve en hatasız şekilde mevcut IIS taşıması ya da diğer bir ifadeyle yeni bir sunucumuzu en hızlı şekilde nasıl devreye alacağımız ile ilgili bilgi vereceğim.

Elimizde bir adet ana sunucumuz olduğunu ve bizden bu sunucumuzun başka bir yere taşınacağı ya da bu sunucumuzun yeteri kadar trafiği karşılayamadığı gerekçesiyle yanına ek sunucular konulması istenildiğini varsayalım. Yeni bir sunucuya taşıma işlemi yapıldığında mevcut yapımız yeni sunucumuz üzerinde

· Tüm Features ve Rolleri,

· IIS Site ve Poolları,

· Bindiglerimizi,

· Mime typelarımızı

ve aklımıza ne kadar IIS ve Server ayarı gerekiyorsa tüm işlemler manuel olarak belki saatler belki günlerce sürecek bir operasyonla bu taşıma gerçekleştirilecektir. Bu işlemler insan eliyle olacağı için hata yapmaya çok açık olması bir yana diğer yandan da bulunması çok zor olacak hatalara sebep verecek ve belki de sorun içinden çıkılamaz hale bürünecekti. Tüm bunların ardından ise sunucumuzun snapshot’ına dönmek zorunda kalıp harcadığımız tüm emek ve zamanımız boşa gidecekti. Manuel olarak bu işlemleri insan gücüyle yapmak isteseydik minimum yarım günümüz sadece 1 sunucu kurulumu ile geçecek ve sunucu adedinin fazla olduğu platformlarda hem zaman kaybına hem de hata yapmamıza sebep olacaktı. Aşağıda anlatacağım adımlar ile sadece 10 dakika içerisinde hatasız bir hıza sahip olacağız.

Artık hayatımızda Powershell var 😊 Şimdi en hızlı ve en güvenilir şekilde Powershell komutları ile bu işlemi nasıl yapacağımızı anlatacağım.

  1. Öncelikle kaynak sunucumuz olan IIS projemizin çalıştığı Windows Server makinamızda Powershell admin modda açılması gerekmektedir.

2. Ardından açılan Powershell ekranımızda aşağıda bulunan komutumuzu çalıştırarak kaynak makinamızda yer alan featureslarımızı bir .txt dosyasına yazıyoruz.

Get-WindowsOptionalFeature -Online | where {$_.state -eq “Enabled”} | ft -Property featurename | Out-File -FilePath “İSTEDİĞİNİZ PATH YOLU.txt”

3. Oluşan txt dosyasını hedef sunucumuza kopyalıyoruz ve hedef sunucumuzda Powershell ISE’mizi admin modda açarak aşağıdaki komutu çalıştırarak Featureslarımızı yüklüyoruz (Önemli Not: Features yüklemesi yaparken sxs dosyanızın sunucuda bulunması gerekmektedir.) (SXS: Windows’a ait temel kurulum bileşenlerinin bulunduğu dosyalar toplamıdır).

## Install IIS features using main.txt file

$features = gc “hedef sunucuya kopyaladığımız txt’nin path yolu”

foreach($f in $features)

{

Enable-WindowsOptionalFeature -Online -FeatureName $f -All -NoRestart -Source ##sxs dosyasının pathi yazılmalı buraya

}

Hedef sunucumuzda features yüklemesi tamamlandıktan sonra hedef sunucumuzu restart etmeyi unutmayalım.

4. Paralelde hedef sunucu/sunucularımızın restartları devam ederken kaynak sunucumuzda bulunan Apppool ve Appsitelarımızın xmllerini oluşturmamız gerekmektedir.

## Get Site and ApplicationPool details

$appCmd = “C:\windows\system32\inetsrv\appcmd.exe”

& $appCmd list apppool /config /xml > .\apppools-2.xml

gc .\apppools-2.xml

& $appCmd list site /config /xml > .\sites-2.xml

gc .\sites-2.xml

Önemli Not: Oluşan xml dosyaları Users klasörü altında oluşmaktadır.

5. 4.Adımda gerçekleştirdiğimiz işlem sonrasında Microsoft ailesinin bir ürünü olan MSDEPLOY uygulamasını hem kaynak hem de hedef sunucuda kurmamız gerekmektedir.

Ms Deploy Dowload Linki : https://www.iis.net/downloads/microsoft/web-deploy

6. MsDeploy ana sunucumuz kurulduktan sonra Site’ın üzerine gelerek sağ tıklayıp Deploy -> Export Application‘a tıklayarak export alma işlemimize başlayıp export alma işlemimizi tamamlıyoruz. Export işlemi sonrasında oluşan zip dosyamızı hedef sunucumuza kopyalıyoruz.

7. Hedef sunucumuzda bu sefer kaynak sunucumuzda yaptığımız export işleminin, import işlemini yapacağız. Burada dikkat edilmesi gereken iki konu bulunmaktadır:

· Kaynak sunucuda bulunan kodumuzun çalıştığı klasör dizininin aynısı hedef sunucuda da yaratılmalı ve derlenmiş kodlar buraya taşınmalıdır.

· Site import edilmeye başlamadan önce IIS üzerinde kaynak sunucuda mevcutta olan aynı isimlendirme ile hedef sunucuda bir Site yaratılması gerekmektedir

8. Hedef sunucumuzda Import Application seçtikten sonra gelen ekrana kaynak sunucumuzdan aldığımız zip dosyasının yolunu veriyoruz.

Zip dosyamızın yolunu verdikten sonra aşağıda gelen ekranı next ile geçiyoruz.

Bir sonraki ekranımızda ise aşağıda renkli olarak belirttiğim alanın boş bırakılması gerekmektedir, eğer boş bırakılmazsa Projenin altında bir proje daha oluşturulduğunu göreceksiniz, o yüzden bu alanın boş kalması gerekmektedir. Bir sonraki ekrana geçiyoruz.

Bir sonraki ekranımızda ise eğer temiz bir kurulum yapmak istiyorsanız Yes olan seçenekle ilerlemeniz gerekmektedir, default olan No değeri ile işleme devam ettiğinizde mevcut içeride bulunan dosyalar, klasörlerinizin içinde yer almaya devam edecektir, temiz bir kurulum olması için kendim “YES” seçimi ile ilerliyorum.

Gelinen aşamada, IIS üzerinde bulunan tüm ayarlarınız, kodlarınız, bindigleriniz, mime typelarımız, featureslarımız, rollerimiz artık hazır, bundan sonra yapmanız tek gereken tek şey Network ekibinizle ya da network uygulamalarınızı kullanarak bu sunucuyu trafiğe almak olacaktır.

Yazımı okuduğunuz için teşekkür ederim, eğer bir sorunuz olursa iletişim kanallarım üzerinden benimle iletişime geçebilirsiniz.

--

--

Cengizhancengiz
turkcell
Writer for

Middleware & DevOps Engineer @Turkcell | Middleware Architect