Mac OS X’den Windows VM localhost’una erişmek

Malumunuz uygulama geliştirirken aynı anda hem backend’i hem de client’ı debug edebilmek işleri çok kolaylaştırır. Ancak backend’iniz .NET ise ve Mac OSX üzerinde geliştirme yapıyorsanız bunun için biraz konfigürasyona ihtiyaç duyacaksınız. Bu yazıyı okuduğunuza göre elinizde Parallels Desktop(Windows) yüklü bir OSX var ve bu OSX’den Windows localhost’una erişmeye çalışıyorsunuz. Amacı bu olmayan arkadaşlar hemen burayı terketsin lütfen.

Öncelikle ne yapmaya çalıştığımızı tekrar edelim. OSX bir makinede bir Windows sanal makine (Parallels Desktop, VMware, Virtualbox vs..) çalıştırıyorsunuz ve her iki tarafta da geliştirme yapıyorsunuz. Örn: OSX tarafında Android client, Windows tarafında .NET backend yazıyor olabilirsiniz. Şimdi Android client’in endpoint’ini Visual Studio geliştirme ortamına ayarlamak istiyorsunuz ama nasıl yapacağınızı bilmiyorsunuz. Çünkü Windows’unuz sanal da olsa bağımsız bir makine ve dışarıdan erişebilmek için önce backend’inizi dışarı açmalısınız. Adım adım ilerleyelim:

1) Visual Studio geliştirme ortamını Local IIS’e taşımak

Visual Studio kendi development server’ını kullanır ve bu server’a dışarıdan erişim yapılamaz. Bu yüzden geliştirme ortamınızı IIS’e yönlendirmelisiniz. Tabi bunun için önce IIS kurmalısınız, henüz makinesinde kurulu olmayanlar Windows VM üzerinde Control Panel -> Programs -> Turn Windows features on or off -> Internet Information Services seçtikten sonra World Wide Web Services -> Application Development Features kısmındaki tüm alanların check’li olduğundan emin olmalılar aksi halde ilerleyen bölümde garip bir hata ile boğuşabilirsiniz.

IIS hazırsa artık bir web sitesi eklemeliyiz. Tabi eklediğiniz web sitesinin yoluna projenizi göstermelisiniz.

Yeni bir web sitesi oluşturdunuz ama bu site bir IP adresi ile ilişkilendirilmediğinden Windows çözümlemeyecektir. Bu sorunu da hosts dosyasına(C:\Windows\System32\drivers\etc) aşağıdaki kodu ekleyerek çözüyoruz.

127.0.0.1 eferhatg.local

Şimdi bu ortamı Visual Studio geliştirme ortamına tanıtabiliriz.

Visual Studio’da projenizin properties penceresinden Web tabına geçiyoruz ve Servers kısmını aşağıdaki gibi düzenliyoruz.

Artık VS ile projenizi çalıştırdığınızda http://eferhatg.local/ adresini açacak ve Windows'unuz bu adresi tanıdığından localhost'a yönlendirecek. Şimdi sıra bu siteye OSX üzerinden erişmekte.

2) OSX ile Windows Local IIS’deki bir siteye erişmek.

Bu adım bir önceki adıma nazaran çok daha kısa. Önce Windows Firewall’un erişimlere izin verdiğinden emin olmalıyız. Bunun için

Windows Firewall -> Advanced Settings -> Inbound Rules -> World Wide Web Services yoluna gidip Profile alanını kontrol ediyoruz. All veya Public olmalı. Harici bir Firewall kullanıyorsanız bu değişikliği orada yapmalısınız. Zaten mantığı anladınız.

Şimdi OSX’in hosts dosyasını düzenlemeliyiz. Bunun için önce Windows’unuzun IPv4 adresini öğrenmelisiniz. Bir Command Prompt açıp ipconfig komutunu çalıştırıyoruz. Buradaki IPv4 adresini not edelim (Bende 10.201.5.34 olarak gözüküyor) ve artık OSX'e dönelim.

OSX’de hosts dosyası private/etc altında buluyor. hosts dosyasını açıp aşağıdaki gibi düzenliyoruz.

10.201.5.34 eferhatg.local

Yukarıdaki örnekteki lokal adresin sizin belirlediğiniz adres, IP’nin de Windows’unuzun IPv4 adresi olduğunu tekrar hatırlatayım :)

Son olarak geliştirme yaparken Visual Studio’yu yönetici olarak çalıştırmayı unutmayın.

Kolay Gelsin.


Originally published at www.eferhatg.com on December 29, 2015.