Windows Server 2008 Üzerinde IIS7 Kullanımı – Bölüm 1
İki bölüm olarak hazırladığım bu makale serisinde aşağıdaki konulara değineceğim;
· IIS 7’ rolünü eklemeyi.
· IIS kurulduktan sonra ihtiyaç duyduğumuz IIS bileşenlerini nasıl ekleyip kaldıracağımızı.
· IIS 7’ de web site oluşturup yayınlamayı.
· IIS 7’de oluşturduğumuz websitenin application pool yönetimini ve application pool’ da neler yapabileceğimizi,
· Temel Web Server işlemleri (virtual directory, application pool ekleme, birden fazla port ekleme..vb)
· IIS 7’de websitemizi SSL li olarak yayınlamayı (CSR kodu oluşturma, sertifika yükleme bahsedecem)
· IIS 7 modüllerinin ne işe yaradığını ve neler yapabileceğimizden bahsedeceğim,
· IIS 7’de PHP, MySQL çalıştırmayı,
· IIS 7’de SSL li FTP yayınlamayı ve FTP modüllerini,
· IIS 7’de ASP.NET modüllerini anlatacağım.
Windows Server 2008′de, IIS rolünü eklemeyi, IIS 7′de website oluşturmayı, IIS bileşenlerini eklemeyi ve IIS rolünü\bileşenleri’ni kaldırmayı anlatacağım.
Server 2008′de IIS Rolü Ekleme;
Server Manager\Roles Add Roles tıklayın,
Roles ekleme Wizard’ı açılacaktır Next tıklayarak ilerleyelim.
Server için rol seçmemiz istenecektir Web Server (IIS) seçip Next tıklayarak ilerleyelim,
Bu ekranda IIS 7.0 ile ilgili bilgilere bakabilirsiniz. Next tıklayarak ilerleyelim,
Bu ekranda role servislerini yani IIS bileşenlerini seçmemiz isteniyor, default olarak aşağıda ki resimde ki gibi servisler seçili gelmektedir. İhtiyacınız olan bileşenleri seçip Next’le ilerliyoruz. IIS kurulduktan sonra’da ihtiyaç duycağınız diğer bileşenleride ekleyebilirsiniz. (Yazının sonunda anlatılmaktadır)
Confirm ekranında seçtiğimiz IIS Role Servislerini\Bileşenlerini görüyoruz. Install tıklayarak kurulumu başlatıyoruz.
IIS 7.0 artık kuruldu, kurulumdan sonra server’ı restart etmeye gerek yok. Close seçerek kurulumu bitiriyoruz.
IIS 7′de WebSite Oluşturma
Kurulum bittikten sonra, Start\All Programs\Administrative Tools\ IIS manager giderek veya run’a inetmgr yazarak IIS Manager’ı açıyoruz.
Sol tarafta Connectiosn kısmında Sites‘ın üzerine sağ tıklayarak Add Web Site seçiyoruz.
Açılan pencerede sitemizle ilgili birkaç tanımlama yapacağız;
1. Site name kısmına yayınlayacağınız sitenin adını yazıyoruz, sitenin adını yazdığımızda Application pool’da site name’de yazdığımız isimle aynı ad da bir pool oluşturacaktır, isterseniz Select‘den daha önceden tanımladığınız application pool atayabilirsiniz.
2. Physical path, web sitemezin yayınlanacağı klasörü yani websitemizin dosyalarının bulunduğu dizini seçiyoruz.
3. Connect as ve Tes Settings, Physical path’e yazdığınız yol başka bir host’ta paylaştırılmış bir klasörse Connest as seçeneği seçtikten sonra Specifc user veya Application user Credential(Doğrulama) methodundan birini seçip user ve password bilgisi girerek erişimesini sağlıyoruz. Tes Settings ile bu ayarları kontrol edebilirsiniz.
4. Binding
Type; websitenizde veri güvenliğide olmasını istiyorsanız https seçmeniz gerekiyor. (https seçmeniz durumda ek ayarlamalar yapmanız gerekecektir, SSL sertifikası tanıtmanız gibi, ilerleyen kısımda bu konuya değindim) Normalde websiteleri http protokülünü kullanır bende http seçiyorum.
Ip Adress; Web sitemizin yayınlanacağı IP adresini seçiyoruz. isterseniz IPv6 protokolünüde seçebilirsiniz. (Server 2008′de IPv6 protokolü açık olarak gelmektedir.)
Port; web sitemizin yaynın yapacağı tcp portunu yazıyoruz, http protokolünü seçtiğimiz için kullandığı tcp port 80 dir. İsterseniz başkabir porttan da yayınlayabilirsiniz ( 80 yerine 83 derseniz; web’den siteniz çağırıldığında ip veya hostname’in sonunda değiştirdiğiniz port’u yazmalısınız ki siteniz gelsin. örneğin: www.tamersari.com:83 veya sunucunun ip adresi http://83.66.x.x:83 )
Hostname; Sitemizin adını yazıyoruz, IIS’te 80 portuyla çalışan birden fazla websitesi yayınlamak istiyorsak hepsine hostname tanımlamanız gerekir. Hostname tanımlamadan yayınlayacağınız ikinci bir websitesine 80 portunu atayamayız.
Bu ayarlarıda yaptıktan sonra sitemiz yayın için hazırdır. Tek eksik sitemizde yayınlayacağımız kodlar deneme için basit index.htm adın bir html kod hazırladım ve websitemizin yayınlandığı Physical path kopyaladım.
Websitenizin ansayfası hangi dille yazıldıysa Defaul Document’de ilk sıraya taşımanız gerekecektir. Sitem html kod’la açılacağı için Defaul Document’de index.htm yukarı taşıdım.
Artık web sitemiz hazırdır, çağırıldığında index.htm yazdığım basit kod gelecektir.
IIS kurulduktan sonra ihtiyaç duyduğumuz iis modüllerini ekleme/kaldırma;
IIS Management konsoluna ASP.Net, ISAPI Filter modülünü yada ihtiyaç duyduğunuz herhangi bir modülü sonradan ekleyebilirsiniz.
Bunun için, Server manager\ Roles’da,
Web Server (IIS) kısmında Add Role Services tıklıyoruz
Add Role Services Wizard’ı açılacaktır, burda yüklenmemiş diğer IIS modüllerini görüyoruz. İhtiyacınız olan role servisini seçip Next tıklayarak devam ediyoruz.
Progress aşamasını geçtikten sonra, seçtiğimiz bileşenlerin yüklendiğini görüyoruz. Server’ı restart etmeye gerek yoktur.
Server’dan IIS bileşenlerini veya komple IIS rolünü yine Server manager’da Roles’dan kaldırabilirsiniz.
IIS 7 management konsolundan görüntü;
Applications Pool Yönetimi
IIS Manager’da Start Page’de Applications Pools ve Sites olmak üzere 2tane list vardır. IIS ile ilgili tüm işlemlerimizi buradan yapacağız.
Applications Pools
Oluşturduğumuz websiteler için ayrı ayrı application pool’lar tanımlayabiliriz. oluşturduğumuz application pool’ları ayrı ayrı 64bit veya 32bit uygulama çalıştırabilecek şekilde tanımlayabiliriz, rcycle süresiyle ilgili gelişmiş ayarlama yapabiliriz, uygulamanın worker processes artırabiliriz.. vs
Applications Pools üstüne gelip, sağ tıklayarak veya sağ tarafta Actiosn kısmından Add Application Pool‘dan pol oluşturuyoruz.
.NET Framewotk 4.0 versiyonun seçili olabilmesi için Server’da dotNetFX 4 kurulu olması gerekiyor.
Oluşturduğumuz Pool’un üzerine gelip Actions kısmında Application pool’la ilgili ayarlamalar yapıyoruz, Actions kısmında yapabileceğimiz işlemleri sırasıyla inceleyecek olursak;
1. Yeni bir application pool ekliyoruz.
2. Seçili olan application pool’u diğer tüm application pool’lar için varsayılan (default) olarak ayarlar.
3. Stop durumunda olan application yeniden çalıştırmaya yarar.
4. Çalışan application’u durdurur.
5. Application pool’u yeniden başlatılmasını sağlar.
6. Sadece .Net Framework versionunu ve Managed pipilen mode’larını değiştirebiliriz.
7. Recycling‘den detaylı olarak bahsetmek istiyorum;
Default olarak recycling süresi 1740 dakika yani 29 saattir, application pool’unuz her 1740 dakikada bir recycle edecektir. Her 1740 dakida recycle olması demek application pool’un ilgili olduğu worker process kapatıp yeni bir worker process açması demektir bu recycle olması esnasında açık sessionlar kapanacaktır. 29saatte bir rcycle olduğu için sitenizin en yoğun olduğu saat’e denk gelebilir bunun olmamasını istiyorsanız Actions kısmında Recycling‘den ayarlama yapabiliriz.
Bunu engellemek için Reguler time intervals seçeneğini kaldırıp Specific time seçebilirsiniz yani websiteniz yoğun olmadığı saatte recycle yaptırabilirsiniz.
Application pool’unuzun memory kullanımı yüksekse, belirleyeceğiniz memory oranına geldiğinde rcycle olmasını istiyorsanız Memory Based Maximums‘dan tanımla yapabilirsiniz.
8. Advanced Settings’de oluşturduğumuz application pool’un ayarlarını görebilir ve değişiklikler yapabiliriz.
General Tabında;
.Net Framework Versiyonunu değiştirebilirsiniz.
32bit/64bit uygulama çalıştırabileceği ( Burda işletim sistemim 64bit olduğu için uygulamanın 32bit olarakmı çalıştıralacağı soruluyor)
Managed Pipeline Mode’da IIS 7.0′ın IIS 6.0 gibi çalışmasını sağlayabilirsiniz. Application pool’da Managed Pipeline Modu integrated seçersek pool ııs 7.0 ile birlikte gelen integrated pipeline modunda çalışacaktır. Managed Pipeline Modu Classic seçersek IIS 6.0 gibi davranacaktır.
CPU tabında;
Uygulamanız belirttiğiniz cpu limitini geçtiğinde w3wp.exe yani iis processes’ni durduracaktır. Bununla ilgili ayarlamaları yapabilirsiniz.
Process Model tabında;
Identity’de application pool için kimlik tanımlaması yapabilir, time-out süresini ayarlayabilir ve maximum worker processes’den uygulamanızın işlem sayısını ayarlayabilirsiniz.
maximum worker processes defaultta 1′dir, uygulamanız cpu ve memory kullanımını şişiriyor yavaş çalışmasına neden oluyorsa proces sayısını arttırabilirsiniz. Maximum worker processes’e yazacağınız sayı kadar processes’de çalışıp sistem kaynaklarını kullanacaktır.
Örneğin; oyxxxxxxx isimli application pool’um için maximum worker processes’te 3 olarak ayarladım Task Manager’da Çalışan Processes’lerde baktığınızda 3tane oyxxxxxxx isimli processes’in çalıştığını görebilirsiniz.
Process Orphaning, worker process yanıt veremez duruma geldiğinde kapatılıp yeni bir worker process açar.
Rapid-Fail Protection
Burda önemli olan 2 prametre vardır; Failure Interval (minutes) ve Maximum Failures dır. Bu iki prametre application pool’da ne kadar sürede kaç defa hata alındığında yeniden başlamayacağını tanımlıyoruz.
Kısaca application pool 5 dakika içinde 5 defa oluşacak sorun nedeniyle kapanacak olursa 6.da tekrar çalışmayacaktır.
Recyling‘i yukarıda anlatmıştım tekrar yazmaya gerek duymadım, Actions’da Recyling’de yaptığımız aynı işlemleri burada da yapabiliyoruz.
Raname ve Remove‘da adlarından anlaşılacağı gibi application pool’adını değiştirebilir veya silebiliriz.
Websitemiz üzerine gelip sağ tıkladığımızda karşımıza çıkan ekranda neler yapabiliyoruz bir bakalım;
Explore; websitemizin publish edildiği root’u açar.
Edit Permissions; websitemizin publish edildiği root klasörünün özelliklerini açar.
Add Application; Sitemizin altına yeni bir uygulama eklemek için kullanabiliriz.
Örneğin; www.tamersari.com altına network die bir alan ekleyelim www.tamersari.com\network çağırdığımızda bağımsız bir website gibi davranacaktır.
Add Virtual Directory; Başka bir konumda olan dosyayı fiziksel makinenize taşımadan fiziksel makinenizin root’undaymış gibi gösterebilirsiniz.
Edit Bindings; Websitemize hostname eklemek, sitemizin yayın yaptığı portu değiştirmek veya ikinci bir port eklemek gibi işlemler için kullanabiliriz. (IIS’de 80 portuyla birden çok website yayınlayacaksanız hepsine hostname girmeniz gerekiyor ya da her birine farklı port vermeniz gerekir)
Manage Web Site; websitemizi restart, start, stop edebilir ve Browse’den sitemizin görünümüne bakabiliriz.
Manage Web Site\Advanced Settings; websitemizin application pool ve fiziksel yolunu değiştirebilir, bağlantı limit ayarlarını yapabilir ve Failed Request Tracing’de logların tutulacağı klasörü değiştirebilir ve Failed Request Tracing’i enable veya disable edebiliriz. ( Yazımın ilerleyen bölümünde Failed Request Tracing değineceğim)
Refresh – Remove – Rename; Adından da anlaşılacağı gibi websitemizin content’inde yaptığımız değişikliği görmek için Refresh tıklarız, Website silmek içinde Remove, yeniden adlandırmak için Rename tıklarız.
Add FTP Publishing; 2.Bölümde FTP modüllerini anlatacağım için bu kısmı geçiyorum.
Root’uzun altındaki klasöre application pool atamamız gerekiyorsa, ilgili klasörün üzerindeyken sağ tıklayıp Convert to Application seçiyoruz.
Select‘ten daha önceden oluşturduğunuz application pool’u gösterebilirsiniz.
Oluşturduğunuz Virtual Directory‘de application pool atayabilirsiniz.
Buraya kadar Windows Server 2008’e IIS rolünü eklemeyi, website oluşturmayı, dizinde ki dosyaya pool atamayı, virtual directory eklemesini, application pool da neler yapabilceğimizden bahsettim. IIS 7 Modüllerini anlatmadan önce SSL website yayınlamasını anlatmak istiyorum;
Iis 7’de Ssl Website Yayınlama
SSL’li website yayınlamadan önce, ssl sertifikası tahsis eden bir ISP firmasında web sunucumuz için ssl talep edeceğiz, ISP firması websitemiz için SSL oluşturabilmesi için bizden CSR kodu isteyecektir, oluşturacağımız CSR kodu websitemize özgüdür başka bir website için kullanamazsınız.
IIS Manager’ı açın, sunucunuzun üzerine gelip, Server Certificates modülünü açın;
Oluşturulacak CSR kodunu kaydetmek istediğiniz yolu ve adını yazın,
Belirttiğiniz yolda aşağıdaki gibi benzer CSR kodu oluşacak, Trust firmasına aşağıdaki kodu gönderiyoruz.
Trust firmasına CSR kodunu gönderdikten sonra mail adresinize gönderdiğiniz koda benzer bir kod gelecek, gelen kodu kopyalayıp notepad’e yapıştırın ve uzantısını .cer yapın. Şimdi sunucumuza .cer sertifikasını yükleyeceğiz;
Yüklediğimiz sertifika aşağıda gözükmektedir.
Sunucumuza SSL sertifikasını yükledikten sonra Websitemize bu SSL sertifikasını göstereceğiz,
WebSitemizin üzerine gelip sağ tıklayın ve Edit Bindings‘i seçin;
Site Bindings penceresi açılacaktır Add diyerek yeni binding ekliyoruz,
Type‘de https, Yayın yaptıgınız IP adresi, Port 443 seçiyoruz.
SSL certificate‘de websiteniz için yüklediğiniz sertifikayı seçiyorsunuz.
Web sitemizi SSL li olarak yayına hazırlamış olduk.
NOT: Daha önceden export ettiğiniz sertifika varsa, Server Certificates‘da Import kısmından .pfx dosyasını göstererek sertifikanızı yükleyebilirsiniz.
1.Bölümümüzün son konusu IIS 7 MODULLERİNİN YÖNETİMİ bu bölümde IIS 7 modüllerini açıklayıp neler yapabileceğimizden bahsedeceğim;
ASP
Burdaki ayarları değiştirmek çalıştıracağınız uygulamanın özellikleriyle ilgilidir. Bu kısımda debug, cache, sesion limit ve com plus ayarlarını yapılandırabilirsiniz. (ASP.NET Modüllerini ayrıntılı olarak 2.Bölümde anlatacağım)
Authentication;
Web sitemizin kimlerin görüntülemesini istiyorsak bu kısımdan ayarlamaları yapıyoruz. WebSitemizin herkese açık olmasını istiyorsak Anonymous Authentication‘ı enable yapmalıyız. Websitemizin veya subdomain’lerin herkese açık değilde belirleyeceğimiz user’ların ve grub’ların görüntülemesini istiyorsak bu kısımda Windows Authentication‘u enable ettikten sonra Authorization Roles‘da belirleyeceğiniz user ve gruplara yetkilendirme yapabilirsiniz.
Authorization Roles;
Websitemize ve uygulamalara erişim sağlayacak kullanıcıları burdan yapılandırabiliriz.
CGI (Common Gateway Interface)
Common Gateway Interface uygulamaları için varsayılan ayarları sağlar, gerektiğinde bu ayarları değiştirebilirsiniz.
Compression;
Web sayfalarımızın sıkıştırılarak istemci tarayıcılar tarafından daha hızlı görüntülenmesini sağlar ve sitenizin bant genişliğini daha etkin bir şekilde kullanmanızı sağlar. Burda dikkat etmeniz gereken Enable dynamic content compression seçeneğidir.
Enable dynamic content compression seçilmesi, sunucunuzun cpu kullanımını arttırarak genel performansınızı etkileyebilir. (Sunucunuzun donanım durumuna göre tercih yapabilirsiniz.)
Default Document;
Root’ta ki belgelerin hangisinin varsayılan olarak tanımlanacağı belirtilir. İstemci tarayıcıları için varsayılan belgenin ilk gönderilmesi için o belgenin en üst sıraya taşımanız gerekmektedir. Atayacağınız belge Default Document‘te yoksa Actions’da Add tıklarak yeni belge ekleyebilirsiniz.
Directory Browsing;
İstemci tarayıcılar tarafından istekte bulunulduğunda, Default Document’ta varsayılan belge tanımlanmadıysa veya Default Document disable ise dizininizde ki tüm dosyaları liste şeklinde gösterir. Güvenlik sebebiyle default’ta disable’dır enable etmek isterseniz sağ kısımda ki Actions’dan enable edebilirsiniz. Dizin listesinde görüntülemesini istediğiniz bilgileri seçebilirsiniz.
Error Pages;
Sunucumuz bir hatayla karşılaştığında istemci tarayıcılara burda ki hata kodlarını iletir. İsterseniz burda ki hata kodlarını özelleştirebilirsiniz.
Failed Request Tracing Rules;
Oluşturacağınız kuarallara göre uygulamanızın çalışmasının uzun sürmesinin nedenlerini IIS ‘in ilgili sayfalarda hangi modüllerde neler yaptığını bu kısımdan görebilirsiniz.
HTTP Redirect;
Websitemizin başka bir url yönlendirilmesini, websitenizi https zorunlu kılmak, Exchange OWA yönlendirme gibi işlemleri burdan yapıyoruz.
Http Response Headers;
HTTP üst bilgilerini yapılandırmak için kullanılır. Detaylıca anlatmak gerekirse;
Sitemizde ki dizin ve veya sayfalara content expire sureleri vererek bandwith kullanımını azaltabilir ve expire süresi verdiğimiz dizinlerin cache’den gelmesini sağlayabiliriz.
Örneğin; www.tamersari.com da ki resimler \images klasöründen çağırılıyor burada sabit içerik imajları var uyeol.jpg, buton.gif …vb makalelerimde ki resimler ..vs bu imajları kullanıcılar her sayfaya girdiğinde çağırıyor buda gereksiz bandwith tüketimine sebep oluyor. İmajların bulunduğu dizine content expire süresini 7 gün olarak ayarlarsak tarayıcı websitemize geldiğinde content expire süresini 7 gün olarak görür ve 7 gün boyunca her sayfaya girdiğinde bu imajları çağırmaz cache’den getirir 8.gün girdiğinde komple sayfayı cacheler.
IP Address and Domain Restrictions;
İstediğiniz IP adresini veya IP grubuna websitenize veya subdomain’nize erişim için izin verebilir veya erişimini engelleyebilirsiniz.
ISAPI Filters;
IIS servisinin sağladığı özellikleri genişleten DLL dosyası diyebiliriz, standart olarak sağlanan özelliklerin yanında ek özellikler katabilirsiniz, ISAPI Filters sitenize gelen istekleri dinler ve tanımladığınız filter’e yapmasını istediğiniz işlemi yaptırta bilirsiniz.
Örneğin; yazacağınız DLL ile web sitenizdeki resim ve videoların url’ni x biri kendi sitesinde yayınlamak isterse bunu ISAPI Filters’a tanımlayarak engelleyebilirsiniz.
Logging;
Loglarınızın hangi dizinde tutulacağı ve yönetimi ile ilgili ayarlamaları buradan yapabilirsiniz.
Burda bilmeniz gereken 2 tane önemli bilgi var;
Select Fields‘den loglamaya ek bilgi ekleyebilirsiniz.
Use local time for file naming and rollover seçerseniz loglama da geçen tarih sizin sunucunuzdaki local saati baz alarak loglama yapar. (Tarih karışıklığı olmaması için seçmenizi tavsiye ederim)
MIME Types;
Tarayıcıların dosyanın türüne göre dosyayı gösterebilmek için gerekli uygulamayı bu dosya ile ilişkilendirmesi için yapılan tanımlamalardır.
Örneğin; MIME Type’de olmayan outlook belgesi .msg ekleyelim;
File name extension; .msg
MIME type; application/vnd.ms-outlook
Modules;
IIS 7 ile birlikte gelen bir özelliktir, diğer sürümlerde yönetim konsoluna eklenti yapılamıyordu artık thirt parti yazılımcıların geliştireceği veya firmanızın ihtiyaç duyacağı eklentileri kullanabilirsiniz. Yönetim paneline module oluştururken iyi bir yazılım bilgisi gerekiyor. J Maalesef örnek veremiyorum.
Output Caching;
Sunucunuzun uygulama ve web performansını Output Caching ile yapılandırabilirsiniz. Tarayıcı istekte bulunduğunda IIS isteği işler ve istemci tarayıcıya sayfayı gönderir. Output Caching ayarlamasını yaparsanız sayfanızın bir kopyası web sunucunuzun belleğinde depolanır ve aynı sayfa için gelen istekler cache’den (ön bellek) verilir.
Request Filtering;
Bu modül web sunucunuza gelen kötü amaçlı şablonları istekleri inceler, isteklerin zararlı olduğunu belirlerse gelen istekleri engeller.
Bu modülde sayfa uzantıları için izin tanımlamaları yapabilir,
web.config dosyasını veya bin dizinine doğrudan erişimleri engelleyebilirsiniz,
SSL Settings;
WebSiteniz için SSL ayarlarını değiştirmenize olanak tanır.
WebDAV Authoring Rules;
WebDAV kullanıcı arabirimini kullanarak web sitenizin içeriğini online olarak müdahale edip gerekli güncellemeleri yapabilirsiniz. İstediğiniz kullanıcıları burdan yetkilendirebilirsiniz.
Makalemin 1.Bölümünün sonuna geldik buraya kadar website oluşturmayı, oluşturduğumuz website’da application pool yapılandırmasını ve IIS modüllerine hâkim olmayı öğrendik. 2.Bölümde görüşmek dileğiyle J