Windows işletim sistemi üzerinde IIS ile PHP çalışmak sistemimi ağırlaştırdığı ve PHP ile hazırladığım siteleri her önizleme yapmak istediğimde 3-5 saniye beklemek canımı sıktığı için bilgisyarıma Apache kurma zorunluluğu hissettim. Bilindiği gibi IIS bilgisayarımızın 80 numaralı portunu tek başına kullanır. Bunun için ilk etapta Apache’e 8080 numaralı portu tathsis edip kullandım. Bu her ne kadar işimi görse de her seferinde adres çubuğuna 8080 yazmak beni yavaşlattığı için IIS ile Apache’in 80 numaralı portu aynı anda kullanabilme olasılığını merak edip bir araştırmaya koyuldum. Çeşitli sitelerden değişik tavsiyeler buldum ama çoğu Windows XP için, SP2′ye ek bir paket indirip kurularak bunun içindeki hhtpcfg.exe dosyasıyla yapılabileceğini yazmıştı. Dosyayı indirip Vista’ya kurmak istedim ama beklediğim üzere çalışmadı.Tam ümidi kesmiş bilgisayarımı kapatmak üzereyken tek tek açtığım Google arama sonuçları pencerelerini kapattığım sırada bir sitede birkaç adımdan oluşan bir ipucu buldum. Bunu da uygulamanın bana birşey kaybettirmeyeceğini düşünüp hemen denemeye başladım ve işe yaradı. Artık IIS7 ve Apache 80 numaralı portu aynı anda kullanabiliyor. Yazının ilerleyen bölümlerinde bu adımları tek tek anlatacağım. Ama önce ön hazırlıklarımızı bitirmeliyiz.IIS7 ile Apache’i aynı anda 80 numaralı porttan çalıştırabilmek için 2 farklı sabit IP adresine ihtiyacımız olacak. Bu IP adreslerinden birinin 80 numaralı portunu IIS7, diğerini ise Apache kullanacak. IP’leri belirledikten sonra IIS ve Apache üzerinde gerekli ayarları yapacağız ve çalışmaya başlayacağız. Benim seçtiğim IP adresleri, IIS için 192.168.2.21; Apache için 192.168.2.42. Ayarları bunlara göre anlatacağım fakat siz istediğiniz IP adresini kullanabilirsiniz.BİLGİSAYARA İKİNCİ IP ADRESİNİ ATAMA
– Başlat > Denetim Masası > Ağ ve Paylaşım Merkezi’ni açıp soldaki menüden “Ağ bağlantılarını yönet” seçeneğine tıklayın.”Yerel Ağ Bağlantısı” üzerine sağ tıklayıp “Özellikler”e tıklayın.- Açılan pencereden “İnternet Protokolü sürüm 4 (TCP/IPv4)”ü seçip “Özellikler” butonuna tıklayın.

– Bilgisayarınıza Sabit IP tanımlayabilmek için “Aşağıdaki IP adresini Kullan” seçeneğine tıklayıp giriş alanları aktif hale getirin.

– IP Adresi: Dilediğiniz IP adresini yazabilirsiniz.- Ağ Alt Maskesi: Bu kısım siz IP adresini belirttiğinizde otomatik olarak doldurulacaktır. Bir işlem yapmanıza gerek yok.- Varsayılan Ağ Geçidi: Buraya varsayılan ağ geçidi değerini yazmalısınız. Yanlış değer girildiğinde internete erişim sağlayamazsınız. Varsayılan ağ geçidini öğrenmek için Başlat’taki arama kutusuna “cmd” yazıp enter’layın. Komut satırı penceresine tırnaklar hariç “ipconfig” yazıp enterlayın. “Ethernet Bağdaştırıcısı Yerel Ağ Bağlantısı” başlığının altındaki “Varsayılan Ağ Geçidi” değerini buraya yazın.

– “Gelişmiş” butonuna tıklayın- “Gelişmiş TCP/IP Ayarları” Penceresinde “IP Ayarları” sekmesini açın

– “Ekle” butonuna tıklayıp ikinci IP olarak yine istediğiniz IP’yi yazın (Ağ alt maskesi otomatik olarak doldurulacaktır, dokunmayın). “Ekle” butonuna tıklayıp pencereyi kapatın.- Tüm açık pencereler kapanana kadar “Tamam” ve “Kapat” butonlarına tıklayın.- Her ihtimale karşı Ağ Bağlantıları penceresinden Yerel Ağ Bağlantısına sağ tıklayıp önce “Devre Dışı Bırak”ı sonra “Etkinleştir”i tıklayıp ağ bağlantınızı resetleyin.- İkinci IP artık kullanılabilir.VİSTA İÇİN IP ADRESLERİNİ DİNLEME LİSTESİNE EKLEME
– Başlat’taki arama kutusuna “cmd” yazıp enterlayın.- Komut satırına “netsh” yazıp enterlayın.- “http” yazıp enterlayın.- “add iplisten ipaddress=192.168.2.21” yazıp enterlayın.- “IP Adresi Başarıyla Eklendi” mesajını aldıysanız aynı işlemi 192.168.2.42 numaralı IP için de tekrarlayın.- Kontrol için “sho iplisten” yazıp enterlayın. “IP dinleme listesinde bulunan IP adresleri” başlığının altında IP adreslerinizi görüyorsanız işlem tamamdır.- Pencere kapanana kadar “exit” yazıp enterlayın.WINDOWS SERVER 2003 İÇİN IP ADRESİNİ DİNLEME LİSTESİNE EKLEME
– Windows Server 2003 CD’sini sürücüye yerleştirin.- Supports / Tools klasörünün içindeki SUPTOOLS.MSI programını çalıştırıp kurun.- Başlat > Çalıştır’a “cmd” yazıp enterlayın.- cd “c:program filessupport tools” komutunu yazıp enterlayın. (Tırnaklar dahil)- “httpcfg set iplisten -i xxx.xxx.xxx.xxx” komutunu yazıp enterlayın. (xxx’lerin yerine IIS’in dinleyeceği IP adresini yazın.)- Girdiğiniz IP’yi kontrol etmek için “httpcfg query iplisten” komutunu yazıp enterlayın. IP dinlenenler listesinde görünüyorsa işlem tamamdır.- IIS’i restart edin, Apache sorun çıkartacak olursa sunucunuza restart atmanız gerekebilir.192.168.2.21 ADRESİNİ IIS’E ATAMA
– Başlat > Denetim Masası > Yönetimsel Araçlar’dan Internet Information Services (IIS) Yöneticisine tıklayın ya da Başlat’taki arama kutusuna “inetmgr” yazıp enterlayın ve IIS’i açın.- “Bilgisayarınızın Adı > Siteler” ağacını genişletin.- Eğer başka bir site tanımlamadıysanız ve 80 numaralı portu hala bu site kullanıyorsa “Default Web Site”a tıklayın.- En sağdaki seçenekler arasında “Siteyi Düzenle” başlığı altında bulunan “Bağlamalar…”ı tıklayın.- Açılan penceredeki bağlamaya bir kez tıklayıp sağda aktif olan “Düzenle” butonuna tıklayın.

– “IP Adresi” seçenekleri arasından IIS’e atadığınız IP adresini seçin, “Tamam” ve “Kapat”a tıklayıp pencereleri kapatın.- IIS’e IP atama işlemi bitmiştir.192.168.2.42 ADRESİNİ APACHE’A ATAMA
– Standart kurulum yaptıysanız “C:Program FilesApache Software FoundationApache2.2conf” klasörü içinde bulunan “httpd.conf” dosyasını bir metin editörü ile açın.- “Listen” ile başlayan satırı bulup burayı “Listen 192.168.2.42:80” olarak değiştirin.Apache’in bu IP’yi kullanması için bu değişiklik yeterli olmasına karşın Apache ile birden fazla sanal sunucu çalıştıracaksanız buradan sonrasını da gözardı etmemenizi tavsiye ederim.- httpd.conf içinde “#Include conf/extra/httpd-vhosts.conf” satını bulup başındaki diyez’i (#) kaldırarak aktif hale gelmesini sağlayın.- “C:Program FilesApache Software FoundationApache2.2confextra” dizininde bulunan “httpd-vhosts.conf” dosyasını bir metin editörü ile açın.- Bu dosyanın içeriği çokta önemli değildir, o yüzden içeriğini komple silebilirsiniz.- Dosyaya aşağıdaki satırları ekleyip kaydedin:NameVirtualHost 192.168.2.42ServerName apachehostDocumentRoot “C:/inetpub/wwwroot”DirectoryIndex index.html, index.php
Options Indexes FollowSymLinksAllowOverride AllOrder allow,denyAllow from all

Bu komutlarla C:inetpubwwwroot klasörünü Apache için sanal sunucu kök dizini olarak atayıp sunucu adı olarak “apachehost”u tanımladık. Sanal sunucular hakkında detaylı bilgi için Apache dokümantasyonunu inceleyebilirsiniz.- Apache’a restart atın. Sorun çıkmadıysa artık Apache sunucunuz 192.168.2.42 numaralı IP’yi dinlemeye başlamıştır.HERŞEY TAMAM SIRA TESTTE
IP adres tanımlamalarını yaparken sorun çıkmadıysa localhost’a 127.0.0.1 adresiyle erişim artık mümkün olmayacaktır. Zira 127.0.0.1’i dinleyen bir web sunucumuz artık yok. Bunu düzeltmek için “hosts” dosyasında bir takım değişiklikler yapmak zorundayız. “hosts” dosyası “C:WindowsSystem32driversetc” klasöründe bulunan bir nevi şahsi adres defterinizdir. Siz tarayıcıya bir adres yazdığınızda tarayıcı ilk olarak hosts dosyasında girdiğiniz domainin IP karşılığı olup olmadığına bakar. Varsa orada tanımlı IP adresine yönlenir, yoksa Internet Sağlayıcınızdan ilgili domainin IP adresini öğrenir ve oraya yönlenir. Varsayılan olarak “localhost” domaini 127.0.0.1’e yönlendiğinden ve biz IP’lerde değişiklik yaptığımızdan localhost artık sayfa bulunamadı hatası döndürecektir.Bu dosyayı bir metin editörüyle açıp “127.0.0.1 localhost” olan satırdaki IP adresini, localhost yazdığımızda hangi web sunucumuzun çalışmasını istiyorsak onun kullandığı IP adresiyle değiştirmemiz gerekir. Ben varsayılan olarak yine IIS’in kullanılmasını istediğim için bu satırı “192.168.2.21 localhost” olarak değiştirdim. “apachehost” domaininin de Apache sunucusunu çalıştırmasını istediğim için bir satır alta “192.168.2.42 apachehost” yazıp kaydettim. Sizin de bu şekilde yaptığınızı varsayarak devam ediyorum.Aşağıdaki ASP ve PHP kodlarını “C:inetpubwwwroot” klasörüne “default.asp” ve “index.php” isimleriyle kaydedin.default.asp:<%Response.Write"Bu sayfa IIS üzerinden çağırılmıştır. “Response.Write”IIS’in kullandığı IP Adresi: “&Request.ServerVariables(“LOCAL_ADDR”)&”

Response.Write”IIS’in çalıştığı Port: “&Request.ServerVariables(“SERVER_PORT”)&”
%>

index.php< ?phpecho('Bu sayfa Apache üzerinden çağırılmıştır ‘);echo(‘Apache’in kullandığı IP adresi:‘.$_SERVER[‘SERVER_ADDR’].’
‘);
echo(‘Apache’in çalıştığı Port: ‘.$_SERVER[‘SERVER_PORT’].’‘);
?>
Şimdi herşey hazır. http://localhost ve http://apachehost linklerine tıklayıp sunucularınızı test edebilirsiniz.Bu yazının bir kopyası da http://tuncay.kinali.net/windowsta-iis7-ve-apachei-ayni-anda-ayni-portta-calistirma.html adresinde yayınlanmaktadır.