IIS 7.5 Temel Yönetim İşlemleri Bölüm 2

Makalemizin ikinci bölümünde aşağıdaki konulara değiniyor olacağız.

  • .NET Sürümlerini IIS e Register Etme İşlemleri
  • IIS Üzerinde PHP Çalıştırma
  • IIS Üzerinde Web Sitelerinin Host Edilmesi
  • Temel IIS Konfigürasyonları

Bir web sitesi yayınlamadan önce IIS sunucumuzu o sitenin özelliklerine uygun olacak şekilde yapılandırmamız gerekir. Örneğin .NET 4.0 ile yazılmış bir web uygulamamız var ise öncelikle IIS’in .NET 4.0 uygulamalarını çalıştırabilir bir hale getirmemiz gerekiyor. Yada web sitemiz PHP ile kodlanmış ise yine IIS sunucumuzu PHP yi çalıştırabilecek bir yapıya kavuşturmamız gerekiyor.

 

Bunlar dışında altını önemle çizmek istediğim bir diğer konuda IIS e sadece bir web sunucusu gözü ile bakılmaması konusudur. Zira IIS 7 ile IIS sıradan bir web sunucusu dışında bir ürün haline gelmiştir. IIS sadece script diliyle yazılmış sitelerin web yayını yapmasını sağlamakla kalmayıp web tabanlı bir uygulamayı veya bir web servisini de farklı protokoller üzerinden yayınlayabilme gibi becerilere sahip bir üründür. Konuları ve uygulama örneklerini başka IIS makalelerimizde ele alıyor olacağız. IIS ile ilgili bu noktaya kısaca değindikten sonra isterseniz yukarıda belirttiğimiz işlemleri yavaş yavaş uygulamaya geçirelim.

.NET Sürümlerini IIS e Register Etme İşlemi

.NET paketleri bir çok Microsoft uygulamalarının ve bu platform altında geliştirilmiş diğer uygulamaların çalışması için gerekli bir uygulama altyapı programıdır. Bizde IIS te bu paketlere aynı sebepten dolayı ihtiyaç duyarız. Zira bir web sitemiz ve üzerindeki web uygulamaları bu platform altında geliştirilmiş olabilir. IIS bir sunucu rolü olarak kurduğumuzda .NET 2.0 zaten IIS’e register edilmiş bir halde kullanıma hazır haldedir. Fakat .NET Framework 4.0 için bu işlemi bazen bizim elle yapmamız gerekebilir. Şimdi dilerseniz bu basit işlemi yapalım ve sunucumuzu yavaş yavaş elimizde olan web sitesini yayınlayabilecek bir yapıya kavuşturalım.

.NET 4.0 ı IIS e register etmeke için komut satırından CD C:\Windows\Microsoft.Net\Framework64\v4.0.30319 diyerek bu dizine gelelim. Bu dizine geldikten sonra komut satırından şu komutu konsola vereceğiz.

[powershell]aspnet_regiis.exe –i[/powershell]

iisreg_0

Bu işlem ile .NET 4.0 ile yazılmış uygulamaları artık IIS üzerinde de çalışabilir hale getirmiş olduk.

Şimdi IIS sunucumuzu PHP çalıştırabilecek bir yapıya kavuşturma işlemine geçelim.

IIS Üzerinde PHP Çalıştırma

IIS sunucumuz ile sadece ASP veya ASP.NET ile yazılmış uygulamaları ve web sitelerini çalıştırmakla kalmayıp PHP, Perl ve Phyton ile yazılmış uygulamarı da rahatlıkla çalıştırabiliyoruz. Tabi ki bu işlemler için IIS i hazırlamamız gerekiyor. Şimdi biz konumuz gereği IIS üzerinde PHP çalıştırmayı ele alıyor olacağız, çünkü PHP web sitelerinin kodlanmasında kullanılan bir başka ve popüler olan script dilidir.

Eskiden de yani IIS 5 ve 6 üzerinde de PHP çalıştırabiliyorduk bu yeni bir şey değil dolaysıyla fakat önceki IIS üsürmlerinde bu işi gerçekleştirebilmek için daha çok efor sarfediyor, daha fazla işlem yapıyor idik.

Şuan ise PHP kurulumumuzu doğru bir şekilde yaptığımızda kurulum dosyamız IIS üzerindeki bir çok ayarıda otomatik olarak tamamlayacaktır. Kurlmu sonrasında herhangi bir sorun çıkmaz ise kurulum biter bitmez PHP ninde çalışabiliyor olması gerekecek.

Şimdi isterseniz ilgili işleme başlayalım.

Öncelikle PHP nin son sürümünü http://windows.php.net/downloads/ sitesinden indirelim.

Kurulum işlemimiz gayet basit bir şekilde tamamlanacak. Sadece kurulumda dikkat etmemiz gereken Web Server Setup kısmında IISFastCGI yi seçmek olacaktır.

phpins1_0

Kurulumu tamamladı isek şimdi bir test edelim. PHP sistemimize sorunsuzca kurulmuş ve çalışmaya hazır hale gelmiş mi? test.php isimli bir dosya oluşturalım ve aşağıdaki kodu içerisine yazalım.

[php]<?php

phpinfo();

?>[/php]

Şimdi tarayıcıdan bu adresi çağıralım. http://localhost/test.php diyelim.

php_0

Görüldüğü üzere PHP IIS sunucumuza entegre olmuş bir durumda ve sorunsuzca çalışmakta.

Peki her şey buradaki gibi yolunda gitmedi ve PHP kurulumumuzu da burada belirtildiği şekilde tamamlamamıza rağmen PHP ile ilgili gerekli ayarlar IIS e otomatik olarak Register olmadı. İşte o zaman buradaki ayarları elle yapılandıracağız.

Şimdi isterseniz buna değinelim.

IIS ana ekranından Handler Mappings’e tıklayalım. Sağ tarafta yer alan Action bölümünden en alttaki Add Module Mapping e tıklayalım.

Açılan pencereye aşağıda görülen değerleri girelim ve sonrasında da Request Restrictions tıklayalım ve Mapping sekmesinide resimde görülen şekilde düzenleyelim. Diğer ayarlar olduğu gibi kalabilir.

phpmanuel

Bu işlemler ile IIS e PHP dosyalarını çalıştırırken neler yapması gerektiğini belirttik. Şuan bu ayarlar ile IIS  sorunsuz bir şekilde PHP çalıştıracaktır. Fakat küçük bir ekleme yapmamız gerekiyor Default Document kısmına. Zira bu şekilde PHP çalıştırıyor olmamıza rağmen siz bir web sitesi koyduğunuzda web dizinine IIS bu kısımda index.php tanımlı olmadığı ilgili siteyi otomatik olarak görüntüleyemeecektir.

Şimdi dilerseniz bu kısımdaki son işlemimizi yapalım. Yapacağımız işlem gayet basit. IIS ana ekranından Default Document a tıklayalım. Açılan bölümden Add diyelim ve açılan pencereye index.php yazalım.

adddefdoc

Bu işlemide tamamladı isek artık PHP’nin sunucumuz üzerinde sorunsuzca çalışıyor olması gerekir. Ve ister iseniz PHP yönetimini IIS üzerinden yapmak için  http://phpmanager.codeplex.com/releases/view/59970 bu adresteki uygulamayı indirip yükleyebilirsiniz. Kurulum tamamlandıktan sonra uygulama IIS ana ekranında görünecektir.

phpmngr

Yönetim paneli şu şekilde…

phpmngr1

Görüldüğü gibi PHP ile ilgili bir çok ayarı bu yönetim konsolu üzerinden yapabiliriz. Kullanmanızı tavsiye ettiğim bir IIS eklentisidir.

IIS Üzerinden Web Sitesi Host Etme İşlemleri.

Yeni bir web sitesi yayınlamak için öncelikle bu web sitesinin yayın yapacağı bir dizini önceden oluşturmamız gerekiyor. Eğer ki IIS üzerinde birden çok web sitesini host edecek isek yada sitemize ait birden çok sub domain var ise bu dizinleri bir hiyaraşik düzende hazırlamamız ilerde oluşacak karmaşaların önüne geçecektir.

Eğer sunucunuzdaki diskler iki partitiondan oluşuyor ise web sitelerinizin dizinini işletim sisteminin olmadığı dizinde ayarlamanızı öneririm. Örneğin işletim sistemimiz C partında kurulu ise web sitelerimizin yayın dizinini D de tutumak daha sağlıklı olacaktır.

Şimdi gelelim öncelikle bu dizini oluşturmaya. Ben bu dizini varsayılan dizin dışında oluşturacağım ve olası karışıklıkların önüne geçmek için burada bir site oluşturma kuralı belirleyeceğim. Bu cidden son derece önemlidir. Çünkü bir sunucuyu manage etmek o sunucuyu kurmaktan ve yapılandırmak çok daha önemlidir. Zira kurulum ve ilk konfigürasyon gibi işlemler hemen hemen herkes tarafından rahatlıkla yapılabilecek işlemlerdir. Örneğin biz bu makalede IIS kurulumunu yaptık başka makalelerimizde ise başka ürünlerin kurulumlarını yaptık ve bir çok kişi ilk kez dahi bu işi yapıyor olsalar bile bu kurulumları sorunsuzca tamamlamışlardır. O yüzden işin önemli kısımları bunlar değildir.

Bazı temel kurallarımıza değinelim.

  • IIS i diğer tüm sistemlerimizi inşaa ederkene yaptığımız gibi ölçeklenebilir bir yapıda inşaa edelim.
  • IIS üzerinden yayınlacağımız web sitelerinin veya uygulamaların zaman içerisinde artabileceğini göz önünde tutalım
  • IIS üzerinde yayın yapacak sitelerin yayın yapacağı dizinler belirli bir düzene sahip olmalıdırlar. Bu gerek IIS loglarının takibi gerekse de ilgili sitenin yönetimini kolaylaştırmayı sağlayacaktır.

Bu bağlamda ben yayın dizinimi şu şekilde oluşturacağım.

Ana dizini D bölümünde tutacağım ve adına Website adını vereceğim. Ve yayınlayacağım her web sitesi bu dizin içerisinde yer alçak ve şu şekilde olacak.

D:\Website

D:\Website\domain.com

Web site klasörünün altına domain ismini taşıyan bir klasör açacağı ve bu klasörün içerisine de  www, log ve db isimli 3 klasör daha açacağım. Şimdi bu klasörlerin içeriğinde neler olduğuna değinelim.

www : Bu klasör içerisinde yayın yapacak web sitemizin dosyaları yer alacaktır.

log : Web sitesine ait IIS loğları bu dizinde tutulacaktır. Böylece bir sitenin log doslarına erişmek istediğimizde bu o log dosyalarının hangileri olduğunu kolayca bulmuş olacağız.

db : Bu klasör içerinde ise Database bağlantı bilgilerini tutabilir veya Access gibi bir database türü kullanıyorsanız Access dosyasını burada barındırabilirsiniz.

Şimdi isterseniz görsel öğeleride kullanarak bir web sitesi oluşturma işlemini yapalım. Önce belirtiğimiz gibi web dizinimizi oluşturalım.

iisdizin

Oluşturduğumuz dizin bu şekilde olmalı.

Şimdi web sitemizi yayınlamak için IIS üzerinden gerekli işlemleri detaylı olarak inceleyelim. Ve dikkat etmemiz gereken unsurları vurgulayalım.

IIS yönetim konsolundan sol panelde sunucu adıma sağ tıklıyor ve Add Website diyerek gerekli işleme başlıyorum.

addwebsite

Şimdi bu alanda dikkat etmemiz gereken işlemlere değinelim, çünkü bu alanda yapılan ilk işlerden sonra kişilerden genelde şu tür sorular geliyor. Site adıma www koyduğumda sitem açılmıyor veya tam tersi http://domain.com dediğimde sitem açılmıyor gibi. Yada yanlış seçilen Application Pool uygulamaları sebebiyle .NET 4.0 la yazılmış bir web sitesi veya uygulaması için hata alınması gibi. Bunlara değineceğiz şimdi.

 

 

Öncelikle isterseniz bu siteyi oluştururken hangi değerleri hangi kriterlere göre girdik ona değinelim. Bu bölümleri uzun soluklu ele alıyor olabiliriz ama kesinlikle tavsiyem her satırını dikkatlice okumanız yönündedir.

Site Name

Site name e istediğiniz bir simi verebilirsiniz. Benim sitem, Ahmet’in sitesi gibi. Fakat biz bu tür isimlendirmelere karşıyız. Bunların bir standardı olmalı. Aynen yazılımcıların Kodlama Standartlarının olması gibi. Çünkü biz sürdürülebilir bir süreç yapısında sistemler ve networkler inşa etmek zorundayız zira çalıştığımız şirketler bizlerin üzerlerine tapulu değildir ve bu şirketten bizler ayrıldığımızda yerimize getirilecek olan Sistem ve Network uzmanları işlerin aksamadan devamlılığını sağlayabilsin. O yüzden buraya vereceğiniz ismi mutlaka domanin ne olduğunu ve kime ait olduğunu belirtecek şekilde seçiniz. Tutup ta site1, site2, site3 gibi isimler vermeyiniz zira bu isimlerin hangi siteleri ifade ettiğini siz biliyor olsanız bile sizden sonra gelecek bir Sistem uzmanı bunu bilmeyecektir. Bu şekilde çalışan bir kişi iseniz büyük ihtimalle dokümantasyonda yapmıyorsunuzdur ki bu sizden sonra gelecek kişilerin işlerini bir hayli zorlaştırır. Dolaysıyla işlerinizi ya dokümantasyona dayalı yapın yada size dokümantasyon gerekliliğini en aza indirgeyecek şekilde sisteminizi tasarlayınız. İş veren firmalarında çalıştırdığı kişilerden bunu istemeleri son derece önemlidir. Yoksa zamanla işçilerinize bağlı bir firma haline dönersiniz ki buda son derece risklidir!

Application Pool

Web sitenizin çalışması için bir uygulama havuzunu siz seçebilir veya IIS’in bu siteye ait bir uygulama havuzu yaratmasına izin verebilirsiniz. Bizim burada çoklu web sitesi yayınlayan kişiler için en önemli uyarımız her web sitesi için IIS’in uygulama havuzu yaratmasına izin vermeleridir. Bunu önermemizin temel sebebi şudur. Eğer bir web sitesi yapısındaki veya ayarlarındaki bir aksaklık sebebiyle bu uygulama havuzunu down durumuna getirir ise yani çalışmaz durma getirir ise bu Application Pool’a bağlanmış tüm web sitelerinin de yayını durur. Aslında ben makalemizin bu kısmında Application Pool ayarlarına çok kapsamlı değinecektim fakat bunu son kısma bırakıyorum. Çünkü bunu da ele alır ise makalemizin bu kısmı bir hayli uzayacak. Ve Application Pool ayarlarını performans ve güvenlik konularıyla ele almak daha mantıklı ve verimli olacaktır. O yüzden bu bölümden bu Application Pool ayarlarını çıkartıyorum. Burada yine dikkatinizi çekmek istediğim bir diğer konu ise oluşturulan Application Pool için uygun .NET versionunu seçmenizdir. .NET 4.0 ile geliştirilmiş, derlenmiş bir uygulama için Application Pool daki .NET Framework yapısınında .NET 4.0 ile ilişkilendirilmiş olması gerekiyor. Bu işlemle ilgili seçimi Application Pool lardan ilgili Pool a sağ tıklayıp Advanced Settings diyerek ayarlayabilirsiniz.

iisapppoll

Physcial Path

Fiziksel path te web sitemizin yayın yapacağı ana dizini seçiyoruz.

Host Name

Yayın yapacak olan web sitemizin host adını yani erişilecek olan adını yazıyoruz. Burada iki önemli konuyu belirteceğim, zira ilk kez IIS ile web sitesi yayınlayacak kişilerin sordukları temel sorulardan biriside “IIS ile web siteni oluşturdum fakat domain adını yazınca siteye erişemiyorum ama IP adresini yazınca site geliyor” sorusudur. Bu sorunun çözümü için burada belirttiğiniz hostname içinde mutlaka DNS kısmında ilgili kayıtları açınız! Bu kayıtlar www host A kaydı ile boş Host A kaydıdır. İkinci olarak ise sitenize hem www.domain.com hemde http://domain.com yazıldığında erişilebilmesi için Site Bindingsten bu Hostnameleri belirtmektir. Eğer birini belirtirde diğerin belirtmez iseniz sitenize örneğin http://domain.com dan erişilebilecek iken www.domain.com dan erişilemeyecektir.

Bu düzenlemeyi Websitenize sağ tıklayıp Edit Bindings e tıklayarak yapabilirsiniz.

addbindings

Temel IIS Ayarları

Aslında temel IIS ayarlarının bir kısmını IIS üzerinden web sitesi yayınlama işlemi yaparken işledik. Bir kısmını da PHP çalıştırma işlemleri yaparken gördük. Şimdi temel olarak merak edilen birkaç ayar ve işleme değinelim. Tekrar vurgulayayım bunlar temel ayarlarımız zira IIS; üzerinde binlerce değişik ayarların yapılabileceği bir sunucudur. Makalemiz süresincede bir çok farklı temel ayarları yine işlemlerimiz sırasında göreceğiz. Burada vereceğimiz temel ayarlar ise bu işlemler sırasında değinmeyeceğimiz genel birkaç ayardır. Şimdi bunlara değinelim.

Bir Dosya Uzantısını Varsayılan Dosya Türü Olarak Ayarlamak.

Bir web dizininde default.aspx ve bir tanede login.aspx dosyası olsun diyelim. Site ziyaretçilerinin öncelikle sisteme login olunması istenilsin. Fakat bunun için http://domain.com/login.aspx yazmak zorunda kalmadan yapabilsinler. İşteburada yapılacak işlem login.aspx i varsayılan dosya türlerine eklemek ve en üst sıraya çıkartmaktır. Bu işlemi yapabilmek için Default Document e çfit tıklayalım ve Add diyerek login.aspx dosyasını ekleyelim ve bu dosyayıda diğer varsayılan dosyaların en üstüne getirelim. Artık kullanıcılarımız http://domain.com dediklerinde direk login.aspx sayfasına yönlendirilmiş olacaklardır.

İpucu : Bu işlemi önce Default Web site a uygular iseniz sonrasında oluşturacağınız her web sitesi içinde varsayılan dokümanlar arasına login.aspx ide otomatik olarak eklemiş olursunuz.

Web Sitesi Yönlendirmesi İşlemleri

IIS elementlerine değinirken bu konuyla ilgili bir örnek vereceğimizi belirtmiştik ve Exchange OWA için yönlendirme yapacağımızı söylemiştik. İsterseniz şimdi bu yönlendirme işleminin nasıl yapıldığına değinelim.

Yönlendirme yapılacak olan web sitesine tıklayalım ve IIS ana panelden http Redirect e tıklayalım ve yönlendireceğimiz dizinin adını belirtelim. Yani şu şekilde bir işlem yapmamız gerekiyor OWA yönlendirmesi için. Başka bir dizinide tabiki bu şekilde belirtebilirsiniz.

iishttpredirect

Belli Bir IP yi veya IP Bloğunu Erişeme Engelleme

Web sitenize belli bir IP’nin veya IP bloğunun erişimini engelleme ihtiyacımız doğmuş olabilir yada bir web sitesi için, bir sub domain için tam tersi bir şekilde sadece belli bir IP adresinin erişimini istiyor olabiliriz. Bunlar güvenlik gereksinimlerimize göre değişir. Bu işlemi yapmak yani web sitemiz için bir erişim veya reddetme kuralı belirtmek için IP Address and Domain Restrictions e çift tıklıyoruz. Sağ panelden Add Allow Entry diyerek bir erişim kuralı Add Deny Entry diyerekten bir engelle kuralı belirtebiliriz. Ben örnek olması açısından sadece bir IP bloğunun engellenmesini ele alacağım. Sizlerde ihtiyaçlarınız doğrultusunda bu ayarı değiştirebilirsiniz. Burada belirtmek istediğim bir not var, bu bölümdeki kuralların sıralaması önemlidir. Bir IP yi erişim için listeye eklemiş daha sonrada bir IP bloğunu reddedilen kurallarda belirtmişseniz erişim izni verdiğin IP sadece engelleme kuralının üzerinde olduğunda belirtilen siteye erişebilir.

Şimdi örnek olması açısından ben bir IP bloğunu engelenenler listesine ekliyeceğim.

İşlem için Add Deny Entry diyorum ve şu verileri giriyorum.

dennyrule

İpucu : Subnet mask ile oynayarak bu IP bloğundaki erişime engellenecek IP sayısını değiştirebilirsiniz.

Makalemizin ikinci bölümünü de bu son işlemle tamamlamış bulunuyoruz. Makalemizin bu kısmına kadar öğrendiklerimizi ele alır isek IIS’i bir sunucu rolü olarak kurmayı, temel IIS elementlerinin işlevlerini, IIS üzerinde PHP çalıştırmayı ve sağlıklı bir şekilde IIS üzerinden web sitesi yayınlamayı öğrenmiş olduk. Makalemizin 3. bölümünde görüşmek dileğiyle.


4 Comments

Esat · 14 May 2011 at 08:36

Bu konuyla ilgili detaylı olarak bulabildiğim tek türkçe kaynak. Gerçekten emeğinize sağlık. Çok güzel bir makale olmuş.

yusuf · 09 August 2012 at 01:33

merhaba, burada belirttiğiniz hostname içinde mutlaka DNS kısmında ilgili kayıtları açınız! bu kisim hakkinda bilgi verir misiniz. Ben hala bu sorunu yasiyorum ip adresi ile baglanabiliyorum siteme.. cevap verirseniz sevinirim…tesekkurler

    Hüseyin Sevin · 09 August 2012 at 09:43

    IIS te Hostname için belirttiğiniz ada sahip DNS te bir tanede Host A kadı açmanız gerekir. Diğer türlü isimden IP yi çözüp sunucunuza ulaşamazsınız. Bununla birlikte Alan adınıza ait DNS kayıtlarının nerede tutulduğunu bilmeniz gerekli. Yani Nameserver kayıtlarınız hangi DNS sunucuyu belirtiyor. Eğer ki bu kayıtlar Web sunucunuzu işaret ediyor ise DNS açma işlemini sunucunuz üzerindeki DNS server da tanımlamalısınız. DNS kayıtlarınız alan adını aldığınız firma üzerinde tutuluyorsa Alan adınızı yönettiğiniz kontrol panelinden bu kayıtları açabilirsiniz.

Halil · 28 July 2017 at 15:46

Merhaba, bir sitem var server 2008 IIS 6.1 üzerinde. IP kısıtlama yapıyorum. sadece bir IP ye izin verdim. restart ettim server ı ama hala kural çalışmıyor. Yani siteye farklı ip adreslerinden erişim mümkün. site değil aslında bir wsdl servis çalıştırıyorum. bu yüzden sadece bir ip erişmeli.
Nerede hata yapıyorum bilemedim.
Saygılar.

Leave a Reply

Avatar placeholder

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.