macOS'ta ASP.NET Framework 4.x Geliştirme
ServBay, yerleşik güçlü Mono ortamıyla, macOS üzerinde ASP.NET Framework 1.1/2.0/3.x/4.x (maksimum 4.7.x desteği ile) geliştirme ve test işlemlerini basit ve uygulanabilir hale getirir.
ServBay v1.12.0 sürümünden itibaren, Mono 6.14.0'ı entegre ettik ve XSP geliştirme sunucusu ile birlikte sunuyoruz. Bu sayede ASP.NET Framework 4.x uygulamalarını çalıştırmak için iki ana yöntemi sağlayabilirsiniz:
- Hızlı geliştirme ve test için XSP kullanma
- Nginx + FastCGI kullanarak daha stabil ve üretim ortamına daha yakın bir uygulama dağıtımı.
Bu belge, ServBay ortamında ASP.NET Framework 4.x projenizi nasıl yapılandırıp çalıştıracağınızı rehberlik edecektir.
Ön Koşullar
- ServBay'ı Kurun: macOS'unuzda ServBay v1.12.0 veya daha üst bir sürümün yüklü olduğundan emin olun.
- Mono'yu Kurun:
- ServBay uygulamasını açın.
- Sol taraftaki navigasyon çubuğunda "Paketler"i seçin.
- Paket listesinde ".NET" kategorisini bulup açın.
- "Mono 6"yı (sürüm 6.14.0 veya daha yüksek olmalıdır) bulup sağdaki "Kur" butonuna tıklayın ve kurulumun tamamlanmasını bekleyin.
ASP.NET Projenizi Hazırlama
- Proje Dosyası: ASP.NET Framework 4.x Web Uygulaması veya Web Sitesi projeniz olduğundan emin olun.
- Tavsiye Edilen Konum: Proje dizininizi ServBay'ın merkezi olarak yönettiği
www
dizini altında saklamanızı şiddetle tavsiye ederiz; bu dizin/Applications/ServBay/www/
içindedir. Her proje için ayrı bir alt dizin oluşturun.- Örnek: Proje adınız
MyWebApp
ise önerilen yol/Applications/ServBay/www/MyWebApp
olacaktır. - İlerleyen adımlarda,
/Applications/ServBay/www/MyWebApp
dizinini örnek yol olarak kullanacağız. Bunu projenizin gerçek yolu ile değiştirdiğinizden emin olun.
- Örnek: Proje adınız
Yöntem 1: XSP Kullanarak (Yerleşik Geliştirme Sunucusu)
XSP, Mono için tasarlanmış hafif bir ASP.NET Web sunucusudur ve geliştirme ile hızlı test aşamaları için oldukça uygundur. ServBay'a yüklenen Mono 6 paketi, XSP4'ü (ASP.NET 4.x ile uyumlu) yerleşik olarak barındırır.
İpuçları
- ASP.NET 1.1 projelerini çalıştırmak istiyorsanız
xsp
komutunu kullanın. - ASP.NET 2.0 projelerini çalıştırmak istiyorsanız
xsp2
komutunu kullanın.
Adımlar:
Terminali Açın: macOS'un Terminal uygulamasını açın.
Proje Dizinine Geçin:
cd
komutunu kullanarak ASP.NET proje kök dizinine gidin (içindeweb.config
dosyası bulunan dizin).bash# Örnek: MyWebApp adlı proje dizinine girin cd /Applications/ServBay/www/MyWebApp
1
2XSP Sunucusunu Başlatın: Proje kök dizininde, XSP4 sunucusunu başlatmak için aşağıdaki komutu çalıştırın. ServBay içindeki diğer hizmetlerle çakışmamak için bir port numarası (örneğin 8080 veya 9000) belirtebilirsiniz.
bash# Mevcut dizindeki projeyi 9000 portunda başlatın xsp4 --port 9000
1
2xsp4
: .NET 4.x için uygun XSP sunucusunu çağırır.--port 9000
: Sunucunun dinleyeceği port numarasını belirler.
Uygulamaya Erişin: Web tarayıcınızı açın ve
http://localhost:9000
veyahttp://127.0.0.1:9000
adresine gidin. ASP.NET uygulamanızın çalıştığını görmelisiniz.Sunucuyu Durdurun: Geliştirme veya test işlemlerini tamamladığınızda, terminal penceresine geri dönün,
Ctrl + C
tuşlarına veya "Enter" tuşuna basarak XSP sunucusunu durdurun.
Avantajlar:
- Kolay yapılandırma, hızlı başlatma.
- Yerel geliştirme ve hata ayıklama için oldukça uygundur.
Dezavantajlar:
- Performansı Nginx gibi üretim düzeyi sunucular kadar iyi değildir.
- Görevleri sınırlıdır, üretim ortamını tam olarak simüle etmez.
Yöntem 2: Nginx + FastCGI Kullanarak
Bu yöntem, ServBay tarafından yönetilen Nginx'i ön uç Web sunucusu olarak kullanır ve dinamik talepleri FastCGI protokolüyle Mono arka uç işlemine (fastcgi-mono-server4
) yönlendirir. Bu yöntem, üretim ortamı dağıtımına daha yakın ve daha iyi performans sağlar.
İpuçları
- ASP.NET 1.1 projelerini çalıştırmak istiyorsanız
fastcgi-mono-server
komutunu kullanın. - ASP.NET 2.0 projelerini çalıştırmak istiyorsanız
fastcgi-mono-server2
komutunu kullanın.
Adımlar:
Mono ve Nginx'in Yüklü ve Çalıştığından Emin Olun:
- ServBay'ın "Paketler" bölümünden Mono 6 ve Nginx'i kurun.
- ServBay'ın "Hizmetler" bölümünde, Nginx hizmetinin başlatıldığından emin olun.
ASP.NET Projesini Hazırlayın: Projenizin önerilen yolda bulunduğundan emin olun, örneğin
/Applications/ServBay/www/MyWebApp
.FastCGI Mono Sunucusunu Başlatın:
- Yeni bir terminal penceresi açın.
fastcgi-mono-server4
sürecini çalıştırın. Bu işlem, Nginx'ten gelen FastCGI taleplerini dinler ve ASP.NET kodunuzu çalıştırır.bash# Örnek: MyWebApp projesi için FastCGI hizmetini başlatın fastcgi-mono-server4 --applications=/:/Applications/ServBay/www/MyWebApp \ --socket=tcp:127.0.0.1:9001 \ --loglevels=Standard \ --printlog
1
2
3
4
5--applications=/:/Applications/ServBay/www/MyWebApp
: Web sitenizin kök yolunu (/
) projenizin fiziksel yolu ile haritalar. Lütfen/Applications/ServBay/www/MyWebApp
ifadesini projenizin gerçek yolu ile değiştirin.--socket=tcp:127.0.0.1:9001
: FastCGI sunucusunun dinleyeceği TCP adresi ve portunu belirler. Bu portun (örneğin 9001) kullanılmadığından emin olun ve aşağıdaki Nginx yapılandırmasındakifastcgi_pass
talimatıyla eşleştiğinden emin olun.--loglevels=Standard --printlog
: (isteğe bağlı) terminalde standart düzeyde günlükleri basar, hata ayıklama için faydalıdır.
- Dikkat: Bu terminal penceresinin FastCGI hizmetini çalıştıracak şekilde açık tutulması gerekir. Uzun süreli çalıştırma için
nohup
veyascreen
/tmux
gibi araçlar kullanmanız gerekebilir.
Nginx Sitesini Yapılandırın:
ServBay'de "Siteler" bölümüne gidin.
"Site Ekle"ye tıklayın veya mevcut bir siteyi düzenleyin.
Alan Adını Belirleyin: Örneğin,
mywebapp.test
. ServBay bu alan adını otomatik olarak Hosts dosyanıza ekleyecektir.Web Sitesi Kök Dizinini Belirleyin: Çok Önemli! Bunu ASP.NET projenizin gerçek yolu olarak ayarlayın, örneğin
/Applications/ServBay/www/MyWebApp
. Bu ayar, Nginx yapılandırmasındakiroot
talimatını doğru bir şekilde ayarlayacaktır.Anahtar: Nginx yapılandırma dosyasını kontrol edin/düzenleyin: Site ayarının üst sağ kısmındaki "Özel Yapılandırma" seçeneğine tıklayın. ServBay, belirttiğiniz web sitesi kök dizinine göre temel yapılandırmayı oluşturacaktır. Talebin FastCGI Mono Sunucuya iletileceğinden emin olmak için
location /
ve@mono
(veya benzeri adlandırılmış location blokları) yapılandırmasının doğru olduğuna emin olun.ServBay tarafından otomatik olarak oluşturulan bir yapılandırmada kontrol edilmesi veya eklenmesi gereken kısımlara örnek olarak aşağıdaki gibi olabilir:
nginxserver { listen 443; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers 'TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384'; ssl_prefer_server_ciphers on; ssl_session_timeout 1d; ssl_session_cache shared:ServBay:10m; ssl_session_tickets off; ssl_certificate /Applications/ServBay/ssl/private/tls-certs/mywebapp.test/mywebapp.test.crt; # Sertifikanın gerçek yolu ile uyumlu olduğundan emin olun ssl_certificate_key /Applications/ServBay/ssl/private/tls-certs/mywebapp.test/mywebapp.test.key; # Sertifikanın gerçek yolu ile uyumlu olduğundan emin olun server_name mywebapp.test; # ServBay'de ayarladığınız alan adınızla eşleşmelidir root /Applications/ServBay/www/MyWebApp; # **Bunun, ayarladığınız web sitesinin kök dizini ile eşleştiğinden emin olun** index index.html index.htm default.aspx Default.aspx; # ASP.NET varsayılan belgeyi ekleyin location / { try_files $uri $uri/ @mono; # Statik dosyaları deneyin, başarısız olursa @mono ile işleyin } # (isteğe bağlı ama önerilir) Nginx, sık kullanılan statik dosyaları doğrudan işlesin # location ~* \.(ico|css|js|gif|jpe?g|png|svg|woff|woff2|ttf|eot)$ { # expires max; # log_not_found off; # access_log off; # } location @mono { # İsteği FastCGI Mono Sunucusuna iletin # **Port kesinlikle**, fastcgi-mono-server4 başlatıldığında belirtilen --socket parametresi ile eşleşmelidir fastcgi_pass 127.0.0.1:9001; # Gerekli FastCGI parametreleri include fastcgi_params; # SCRIPT_FILENAME, root talimatı ve $fastcgi_script_name'a dayalı olarak doğru bir şekilde ayarlanacaktır fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO ""; } # ServBay ayrıca günlükler, erişim kontrolü vb. gibi diğer varsayılan yapılandırmaları da içerebilir # access_log /Applications/ServBay/logs/nginx/mywebapp.test.access.log; # error_log /Applications/ServBay/logs/nginx/mywebapp.test.error.log; }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43Yapılandırmayı Kaydedin ve Nginx'i Yeniden Başlatın: Nginx yapılandırma dosyasını kaydedin. ServBay, kaydettikten sonra otomatik olarak Nginx yapılandırmasını yeniden yükler. Yapılandırma hatalıysa ServBay hata verir. Gerekirse, ServBay'ın "Hizmetler" sayfasında Nginx'i manuel olarak yeniden başlatabilirsiniz.
Uygulamaya Erişim: Tarayıcınızı açın ve Nginx'te yapılandırdığınız alan adına gidin (örneğin,
https://mywebapp.test
, burada HTTPS protokolü kullanıldığını unutmayın). Nginx, taleplerifastcgi-mono-server4
'e yönlendirecek ve Mono, ASP.NET kodunuzu çalıştıracaktır.
Avantajlar:
- Daha iyi performans, daha stabil.
- Üretim ortamına daha yakın bir dağıtım yöntemi.
- Nginx'in statik dosya işlemesi, yük dengeleme, SSL gibi gelişmiş özellikleri kullanabilir.
- ServBay'in site yönetimi, alan adı ve Hosts yönetimi ile daha yüksek entegrasyon.
Dezavantajlar:
- XSP'ye kıyasla yapılandırması biraz daha karmaşık.
fastcgi-mono-server4
sürecini manuel olarak yönetmeniz gerekir.
Nasıl Seçilir?
- Hızlı geliştirme, hata ayıklama ve basit testler için XSP en yalın yöntemdir.
- Daha yüksek performans, üretim ortamına daha yakın test veya dahili dağıtım gerekiyorsa veya Nginx'in gelişmiş özelliklerini ve ServBay'in site yönetimini kullanmayı istiyorsanız Nginx + FastCGI modunu seçmek daha iyidir.
Dikkat Edilmesi Gerekenler ve Sorun Giderme
- Dosya İzinleri: Nginx sürecinin (genellikle ServBay tarafından yönetilir) ve
fastcgi-mono-server4
'ü çalıştıran macOS kullanıcısının proje dosyalarınıza (/Applications/ServBay/www/YourProjectName
) okuma izni olduğundan emin olun. Bazen dizin izinlerini (chmod
veyachown
) ayarlamanız gerekebilir. - Yol: Nginx yapılandırmasındaki (
root
talimatı) vefastcgi-mono-server4
komutundaki (--applications
parametresi) proje yolunun tamamen doğru olduğundan veweb.config
dosyasının bulunduğu dizine işaret ettiğinden emin olun. - Port Çakışması: XSP veya
fastcgi-mono-server4
'ün kullandığı portların (örneğin, 9000 veya 9001) başka bir uygulama tarafından kullanılmadığından emin olun. - Günlükler:
fastcgi-mono-server4
başlatıldığında terminaldeki çıktıları kontrol edin.- Nginx hata günlüklerini kontrol edin. İlgili sitenin hata günlüklerinin yolunu, ServBay'ın site ayarlarında bulabilirsiniz (genellikle
/Applications/ServBay/logs/nginx/mywebapp.test.error.log
).
- Mono Sürüm Uyumluluğu: Mono 6.14.0, .NET Framework 1.1'den başlayarak, .NET Framework 4.7.2'ye kadar genel uyumluluk sunar. Daha yüksek sürüm .NET Framework özellikleri kullanıyorsanız, ServBay ile Microsoft'un resmi .NET Core veya .NET'ini yüklemeyi tercih edin.
ServBay'ın yerleşik Mono 6 ortamı ve önerilen proje yapısını kullanarak, macOS üzerinde ASP.NET Framework 4.x uygulamaları geliştirmek ve çalıştırmak artık daha düzenli ve kolay. Bu belgenin geliştirme işlerinize yardımcı olmasını umarız!