macOS'ta ServBay ile ASP.NET Framework 4.x Geliştirme
ServBay, yerleşik güçlü Mono ortamı sayesinde macOS üzerinde ASP.NET Framework 1.1/2.0/3.x/4.x (en fazla 4.7.x'e kadar) geliştirme ve test işlemlerini son derece basit ve pratik hale getirir.
ServBay v1.12.0 sürümünden itibaren, Mono 6.14.0 entegre olarak gelir ve XSP geliştirme sunucusu ile fastcgi-mono-server
aracı da kurulu gelir. Bu sayede ASP.NET Framework 4.x uygulamalarınızı çalıştırmak için iki ana yöntem sunuyoruz:
- XSP ile hızlı geliştirme ve test: XSP, Mono için tasarlanmış hafif bir ASP.NET web sunucusudur. Geliştirme ve hızlı test için idealdir.
- Nginx + FastCGI ile dağıtım: Daha stabil ve yüksek performanslı olan bu yöntem, canlı ortama daha yakın bir deneyim sunar. İstekler, ServBay tarafından yönetilen Nginx üzerinden Mono arka plan sürecine yönlendirilir.
Bu dokümanda, ServBay ortamında ASP.NET Framework 4.x projenizi nasıl yapılandırıp çalıştırabileceğinizi adım adım göreceksiniz.
.NET Framework ve .NET Hakkında
Lütfen dikkat: Bu doküman, Mono tabanlı ASP.NET Framework 4.x geliştirmesini kapsar; bu, daha eski bir .NET teknolojisidir.
ServBay, ayrıca en güncel .NET sürümlerini (ör. .NET Core, .NET 5/6/7/8+) de tam anlamıyla destekler. Yeni projeler geliştiriyor veya daha modern bir .NET sürümüne geçiş yapmak istiyorsanız, Mono yerine ServBay’in sunduğu Microsoft’un resmi .NET SDK’sı/çalışma zamanı desteğini kullanmanızı öneririz.
Ön Koşullar
- ServBay’in Kurulumu: macOS’ta ServBay v1.12.0 veya daha güncel bir sürümün kurulu olduğundan emin olun.
- Mono’nun Kurulumu:
- ServBay uygulamasını açın.
- Sol navigasyon panelinde “Paketler” bölümüne gidin.
- Paketler listesinden “.NET” kategorisini bulun ve genişletin.
- “Mono 6” (sürümün 6.14.0 veya daha yeni olması gerekir) seçeneğini bularak sağdaki “Kur” butonuna tıklayın ve kurulumun tamamlanmasını bekleyin.
ASP.NET Projenizin Hazırlanması
- Proje Dosyaları: ASP.NET Framework 4.x Web Application veya Web Site projenizin ve içinde
web.config
dosyasının mevcut olduğundan emin olun. - Önerilen Saklama Yeri: Web sitenizi ServBay’in merkezi olarak yönettiği
www
dizinine, yani/Applications/ServBay/www/
yoluna yerleştirmenizi şiddetle tavsiye ederiz. Her proje için ayrı bir alt klasör oluşturun.- Örnek: Proje adınız
MyWebApp
ise önerilen kök yolunuz/Applications/ServBay/www/MyWebApp
olacaktır. - Devam eden adımlarda örnek olarak
/Applications/ServBay/www/MyWebApp
yolu kullanılacaktır. Lütfen kendi projenizin gerçek yoluyla değiştirin.
- Örnek: Proje adınız
Yöntem 1: XSP (Dahili Geliştirme Sunucusu) ile
XSP, Mono projesi ile birlikte gelen hafif bir web sunucusudur ve ASP.NET Framework uygulamalarını yerelde geliştirmek ve hızlıca test etmek için idealdir. ServBay ile kurulu gelen Mono 6 paketi, XSP4 (ASP.NET 4.x uyumlu) içerir.
İpucu
- ASP.NET 1.1 projesi çalıştırmak için
xsp
komutunu, - ASP.NET 2.0/3.x için
xsp2
komutunu, - ASP.NET 4.x için ise
xsp4
komutunu kullanın.
Adımlar:
Terminali Açın: macOS’un Terminal uygulamasını başlatın.
Proje Dizininize Geçin:
cd
komutuyla ASP.NET projenizin kök dizinine gidin (yani,web.config
dosyasının bulunduğu klasör).bash# Örnek: MyWebApp adlı proje dizinine geçiş cd /Applications/ServBay/www/MyWebApp
1
2XSP Sunucusunu Başlatın: Proje klasörünüzde aşağıdaki komutu yazarak XSP4 sunucusunu başlatın. Servislerle çakışmayı önlemek için kullanılmayan bir port (ör. 8080 veya 9000) seçebilirsiniz.
bash# Projeyi 9000 portunda başlatmak için xsp4 --port 9000
1
2xsp4
: .NET Framework 4.x için uygun XSP sunucusunu başlatır.--port 9000
: Sunucunun dinleyeceği TCP portunu belirtir.
Uygulamanıza Erişin: Bir web tarayıcısı açıp
http://localhost:9000
veyahttp://127.0.0.1:9000
adresini ziyaret edin. Projeniz başarılı bir şekilde çalışıyorsa sayfa görüntülenmelidir.Sunucuyu Durdurun: Geliştirme veya testi tamamladığınızda, XSP başlatılan terminale dönüp
Ctrl + C
ya daEnter
tuşuna basarak sunucuyu durdurabilirsiniz.
Avantajlar:
- Kurulumu kolay, başlatması hızlıdır.
- Yerel geliştirme ve hata ayıklama için çok uygundur.
Dezavantajlar:
- Performansı, Nginx gibi üretim düzeyinde web sunucularına göre daha düşüktür.
- Özellikleri kısıtlıdır; üretim ortamını tam olarak taklit etmez.
- Terminal penceresinin açık kalması gerekir.
Yöntem 2: Nginx + FastCGI Kullanımı
Bu yöntemde, ön uç web sunucusu olarak ServBay’in yönettiği Nginx kullanılır; müşteri isteklerini alır ve statik dosyaları doğrudan işler, dinamik istekleri ise FastCGI protokolü ile arka planda çalışan Mono sürecine (fastcgi-mono-server4
) iletir. Bu yaklaşım, üretim ortamına daha yakın test yapmanıza olanak tanırken, daha yüksek performans ve Nginx’in gelişmiş yeteneklerinden yararlanmanızı sağlar (SSL, önbellekleme, sıkıştırma vb.).
İpucu
- ASP.NET 1.1 için
fastcgi-mono-server
, - ASP.NET 2.0/3.x için
fastcgi-mono-server2
, - ASP.NET 4.x için ise
fastcgi-mono-server4
kullanılmalı.
Adımlar:
Mono ve Nginx’in kurulu ve çalışır olduğundan emin olun:
- ServBay’in “Paketler” bölümünden Mono 6 ile Nginx’i kurun.
- “Servisler” kısmında, Nginx servisinin çalışır durumda olduğunu kontrol edin.
ASP.NET Projenizi hazırlayın: Tavsiye edilen yolda, örneğin
/Applications/ServBay/www/MyWebApp
altında projenizin olduğunu doğrulayın.FastCGI Mono Sunucusunu Başlatın:
- Yeni bir terminal penceresi açın.
fastcgi-mono-server4
sürecini başlatın. Bu, Nginx’ten gelen FastCGI isteklerini dinler, ASP.NET sayfaları parse edip iş mantığını yürütür.bash# Örnek: MyWebApp projesi için FastCGI servisini başlatma fastcgi-mono-server4 --applications=/:/Applications/ServBay/www/MyWebApp \ --socket=tcp:127.0.0.1:9001 \ --loglevels=Standard \ --printlog
1
2
3
4
5fastcgi-mono-server4
: .NET Framework 4.x uyumlu FastCGI sunucusunu başlatır.--applications=/:/Applications/ServBay/www/MyWebApp
: URL yolunu fiziksel dizinle eşler -/:
ana kökü belirtir,/Applications/ServBay/www/MyWebApp
ise gerçek proje dizinidir. Nginx'in ilettiği her/some/page.aspx
isteği, Mono tarafından ilgili dosyada aranıp çalıştırılır. Kendi proje yolunuza göre düzenlemelisiniz.--socket=tcp:127.0.0.1:9001
: FastCGI sunucusunun TCP üzerinden dinleyeceği adres ve portu tanımlar. (Portun başka bir servis ya da uygulama tarafından kullanılmadığından emin olun ve Nginx yapılandırmasındakifastcgi_pass
ile aynı olmalı.)--loglevels=Standard --printlog
: (Opsiyonel) Mono sürecinin çıktısını doğrudan terminalden izleyebilmeniz için standart seviyede log basar.
- Dikkat:
fastcgi-mono-server4
başlattığınız terminal penceresi açık kalmalıdır, aksi takdirde servis durur. Uzun süreli çalışma içinnohup
,screen
veyatmux
gibi araçlarla arka plan işlemi olarak başlatabilirsiniz.
Nginx Sitesini Yapılandırın:
ServBay’de “Siteler” bölümüne geçin.
“Site Ekle”ye tıklayın veya mevcut bir site üzerinde düzenleme yapın.
Alan adı belirleyin: Örneğin,
mywebapp.servbay.demo
gibi marka ile uyumlu bir alan adı kullanabilirsiniz. Bu alan adı otomatik olarak macOS Hosts dosyasına eklenip127.0.0.1
'e yönlendirilir.Site kök dizinini belirleyin: Çok önemli! ASP.NET projenizin gerçek yolunu belirtin (ör:
/Applications/ServBay/www/MyWebApp
). Bu, Nginx yapılandırmasındaroot
yönergesi için kullanılır ve statik dosya servisi sağlar.Özel yapılandırmayı etkinleştirip düzenleyin: Sitenin sağ üstündeki “Özel yapılandırma” kutusunu işaretleyin. ServBay, alan adınız ve kök yolunuzdan yola çıkarak size temel bir Nginx yapılandırma dosyası oluşturacaktır. Bu dosyada ASP.NET dinamik isteklerinin FastCGI Mono Server'a yönlendirilmesi için aşağıdakine benzer eklemeler yapılmalıdır:
nginxserver { listen 80; # HTTP portu listen 443 ssl http2; # HTTPS portu, SSL ve HTTP/2 aktif # ServBay’in otomatik yönettiği SSL sertifika ayarları 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; # Sertifika dosyası yolu, ServBay tarafından otomatik oluşturulur ssl_certificate /Applications/ServBay/ssl/private/tls-certs/mywebapp.servbay.demo/mywebapp.servbay.demo.crt; # Sertifika yolları alan adınız ile uyumlu olmalıdır ssl_certificate_key /Applications/ServBay/ssl/private/tls-certs/mywebapp.servbay.demo/mywebapp.servbay.demo.key; # Sertifika yolları alan adınız ile uyumlu olmalıdır server_name mywebapp.servbay.demo; # ServBay’de ayarladığınız alan adı ile aynı olmalı root /Applications/ServBay/www/MyWebApp; # **Site kök diziniyle aynı olmalı** # ASP.NET varsayılan belgelerini ekleyin; index.html/htm yoksa bunlar denenecek index index.html index.htm default.aspx Default.aspx; # Ana istek işleme mantığı location / { # Sırayla dosya ($uri) veya klasör ($uri/) arar # Statik dosya bulunamazsa @mono’ya yönlendirir try_files $uri $uri/ @mono; } # (Opsiyonel ama tavsiye edilir) Nginx, sık kullanılan statik dosyaları doğrudan servis etsin # expires ile tarayıcı önbelleğinden yararlanın location ~* \.(ico|css|js|gif|jpe?g|png|svg|woff|woff2|ttf|eot)$ { expires max; # Maksimum tarayıcı önbelleği log_not_found off; # Kayıp statik dosya hatalarını loglama access_log off; # Statik dosya erişimlerini loglama, log yoğunluğunu azaltır } # Dinamik istekler için @mono isimli location bloğu location @mono { # FastCGI protokolüyle istekleri Mono Server’a aktar # **Port**, fastcgi-mono-server4 başlatırken belirttiğiniz port ile aynı olmalı fastcgi_pass 127.0.0.1:9001; # Standart FastCGI parametrelerini dahil et include fastcgi_params; # SCRPIT_FILENAME’in tam yolunu belirt - Mono burada .aspx dosyasını bulacak fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; # PATH_INFO genellikle gerekmez, boş bırakılır fastcgi_param PATH_INFO ""; # (Opsiyonel) Diğer FastCGI parametreleri ekleyebilirsiniz # fastcgi_param HOST $host; } # ServBay’in oluşturabileceği diğer varsayılan konfigürasyonlar, örn. log yolları # access_log /Applications/ServBay/logs/nginx/mywebapp.servbay.demo.access.log; # error_log /Applications/ServBay/logs/nginx/mywebapp.servbay.demo.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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58Kaydedip Nginx’i Yeniden Yükleyin/Yeniden Başlatın: ServBay’de Nginx yapılandırmasını kaydedin; sistem otomatik olarak Nginx’i yeniden yüklemeye çalışacaktır. Eğer yapılandırmanızda sentaks hatası varsa uyarı alırsınız. Servisler sayfasından Nginx’i elle yeniden başlatmanız da mümkündür.
Uygulamaya erişin: Tarayıcıda Nginx’e tanımlı alan adınızı (ör.
https://mywebapp.servbay.demo
) ziyaret edin. 443 portu ve SSL etkin olduğundan HTTPS kullanmanız önerilir. Statik dosyalar doğrudan Nginx’ten sunulacak, dinamik istekler isefastcgi-mono-server4
aracılığıyla Mono tarafından işlenecektir.
Avantajlar:
- Daha yüksek performans ve stabilite, üretime yakın testler için idealdir.
- Nginx’in güçlü özelliklerinden (statik dosya servisi, SSL, yük dengeleme vb.) yararlanabilirsiniz.
- ServBay'in site ve alan adı yönetimi ile hosts entegrasyonu daha ileri düzeydedir.
Dezavantajlar:
- XSP’ye göre kurulumu ve yapılandırması daha karmaşıktır.
fastcgi-mono-server4
sürecini manuel olarak yönetmeniz gerekir (arka plan aracı kullanmazsanız).
Hangi Yöntemi Seçmelisiniz?
- Hızlı geliştirme, debugging ve temel fonksiyon testleri için XSP yöntemi en pratik ve hızlı seçenektir. Tek komutla uygulamanızı başlatabilirsiniz.
- Daha yüksek performans, üretim ortamına yakın testler ya da gelişmiş özellikler (ör. HTTPS, özel domain, optimize statik dosyalar) ve ServBay’in site yönetiminden faydalanmak istiyorsanız, Nginx + FastCGI yöntemi tercih edilmelidir.
Dikkat Edilmesi Gerekenler ve Sorun Giderme
- Dosya izinleri: Nginx’in çalıştığı kullanıcı (genelde ServBay tarafından yönetilir) ve
fastcgi-mono-server4
’ü başlattığınız macOS kullanıcısının, proje dosyaları üzerinde (örn./Applications/ServBay/www/YourProjectName
) yeterli okuma izni olduğundan emin olun. Gerektiğindechmod
veyachown
ile dosya ve klasör izinlerini ayarlayın. - Yol tutarlılığı: Nginx konfigürasyonundaki (
root
yönergesi) vefastcgi-mono-server4
komutundaki (--applications
argümanı) proje yolunun tamamen doğru ve aynı olduğundan, projeniz kök klasörüne (web.config
içeren) işaret ettiğinden emin olun. - Port çakışmaları: XSP veya
fastcgi-mono-server4
için seçtiğiniz portun (ör. 9000 veya 9001), başka bir ServBay servisi veya sisteminizdeki başka bir uygulama tarafından kullanılmadığına dikkat edin. - Log kontrolü:
fastcgi-mono-server4
başlatılan terminaldeki çıktı loglarını inceleyin.--printlog
ile Mono’nun çalışma zamanı loglarını anlık takip edebilirsiniz.- Nginx hata loglarını kontrol edin. ServBay, site ayarlarında ilgili log yolunu gösterir; genellikle
/Applications/ServBay/logs/nginx/your-domain.error.log
dizininde bulunur. Bu loglar, Nginx yapılandırma veya FastCGI/Mono sunucu iletişim problemlerini analiz etmek için çok yararlıdır.
- Mono sürüm uyumluluğu: ServBay’in içerdiği Mono 6.14.0, .NET Framework 1.1 - 4.7.2 özelliklerinin çoğunu destekler. Daha üst sürümlerle ilgili fonksiyon veya uyumluluk problemleri yaşarsanız, projenizi desteklenen Framework sürümlerine çekmeyi veya ServBay ile Microsoft’un resmi .NET SDK’sını kullanmayı değerlendirin.
- FastCGI süreç yönetimi: Nginx + FastCGI kullanıyorsanız,
fastcgi-mono-server4
sürecinin sürekli çalışıyor olması gerektiğini unutmayın. Geliştirme sürecinde terminali açık tutabilir, daha uzun süreli üretim benzeri kurulumlarda ise background servis olarak yapılandırabilirsiniz.
ServBay’in yerleşik Mono 6 ortamı ve önerilen proje yapısı sayesinde, macOS üzerinde geleneksel ASP.NET Framework 4.x uygulamalarınızı geliştirmek ve çalıştırmak daha standardize ve zahmetsiz hale gelmektedir. Umarız bu doküman, geliştirme sürecinizde ihtiyacınız olan tüm rehberliği sağlar!