macOS पर ServBay के साथ ASP.NET Framework 4.x डेवलपमेंट
ServBay में अंतर्निहित शक्तिशाली Mono वातावरण है, जिससे macOS पर ASP.NET Framework 1.1/2.0/3.x/4.x (अधिकतम 4.7.x तक) के विकास और परीक्षण को आसान और संभव बनाया गया है।
ServBay v1.12.0 से, हमने Mono 6.14.0 को एकीकृत किया है, जिसमें XSP डेवलपमेंट सर्वर और fastcgi-mono-server
टूल शामिल हैं। इससे आप ASP.NET Framework 4.x ऐप्लिकेशन चलाने के दो प्रमुख तरीके प्राप्त करते हैं:
- त्वरित विकास और परीक्षण के लिए XSP का उपयोग करें: XSP एक हल्का, विशेष रूप से Mono के लिए डिज़ाइन किया गया ASP.NET वेब सर्वर है, जो विकास और त्वरित परीक्षण के लिए आदर्श है।
- Nginx + FastCGI के साथ तैनाती: यह अधिक स्थिर और उच्च प्रदर्शन वाला तरीका है, जो प्रोडक्शन के बराबर का अनुभव देता है। ServBay द्वारा प्रबंधित Nginx सभी अनुरोधों को Mono बैकएंड तक फॉरवर्ड करता है।
यह दस्तावेज़ आपको बताएगा कि ServBay वातावरण में अपने ASP.NET Framework 4.x प्रोजेक्ट को कैसे कॉन्फ़िगर और चला सकते हैं।
नोट .NET Framework और .NET के बारे में
कृपया ध्यान दें, यह दस्तावेज़ Mono-आधारित ASP.NET Framework 4.x विकास के लिए है, जो एक पुरानी .NET तकनीक है।
ServBay नवीनतम .NET (जैसे .NET Core, .NET 5/6/7/8+) के विकास और तैनाती को भी पूरी तरह से सपोर्ट करता है। अगर आप नया .NET प्रोजेक्ट बना रहे हैं या मौजूदा को आधुनिक .NET वर्शन पर माइग्रेट करना चाहते हैं, तो हम आपको सलाह देंगे कि ServBay द्वारा दिए गए आधिकारिक Microsoft .NET SDK/रनटाइम का उपयोग करें और Mono-आधारित ASP.NET Framework ग्रुप का सहारा न लें।
आवश्यकताएँ
- ServBay इंस्टॉल करें: सुनिश्चित करें कि macOS पर आपके पास ServBay v1.12.0 या उच्चतर स्थापित है।
- Mono इंस्टॉल करें:
- ServBay एप्लिकेशन खोलें।
- बाएँ साइडबार में “पैकेज” चुनें।
- पैकेज सूची में “.NET” श्रेणी खोजें और उसे खोलें।
- “Mono 6” (संस्करण 6.14.0 या उच्चतर) चुनें, दाएँ तरफ “इंस्टॉल करें” बटन दबाएँ, और इंस्टॉलेशन पूरा होने तक प्रतीक्षा करें।
अपना ASP.NET प्रोजेक्ट तैयार करें
- प्रोजेक्ट फाइलें: आपके पास ASP.NET Framework 4.x की एक Web Application या Web Site प्रोजेक्ट होनी चाहिए, जिसमें
web.config
फाइल हो। - अनुशंसित लोकेशन: हम बहुत जोर देकर सलाह देते हैं कि अपने वेबसाइट प्रोजेक्ट को ServBay के द्वारा प्रबंधित
www
डायरेक्ट्री में रखें, जैसे/Applications/ServBay/www/
। प्रत्येक प्रोजेक्ट के लिए एक अलग सबडायरेक्ट्री बनाएँ।- उदाहरण: अगर आपका प्रोजेक्ट नाम
MyWebApp
है, तो अनुशंसित रूट पथ/Applications/ServBay/www/MyWebApp
होगा। - आगे के चरणों में, हम
/Applications/ServBay/www/MyWebApp
को उदाहरण पथ के रूप में इस्तेमाल करेंगे। इस पथ को अपने प्रोजेक्ट के वास्तविक लोकेशन से बदलना न भूलें।
- उदाहरण: अगर आपका प्रोजेक्ट नाम
तरीका 1: XSP (इनबिल्ट डेवलपमेंट सर्वर) का उपयोग
XSP Mono का एक हल्का वेब सर्वर है, जो स्थानीय विकास और ASP.NET Framework एप्लिकेशन के त्वरित परीक्षण के लिए आदर्श है। ServBay में दिए Mono 6 पैकेज में XSP4 (ASP.NET 4.x हेतु) शामिल है।
सुझाव
- अगर आप ASP.NET 1.1 प्रोजेक्ट चला रहे हैं, तो
xsp
कमांड का प्रयोग करें। - अगर आप ASP.NET 2.0/3.x प्रोजेक्ट चला रहे हैं, तो
xsp2
कमांड का प्रयोग करें। - अगर आप ASP.NET 4.x प्रोजेक्ट चला रहे हैं, तो
xsp4
कमांड का इस्तेमाल करें।
स्टेप्स:
टर्मिनल खोलें: macOS पर टर्मिनल ऐप खोलें।
प्रोजेक्ट डायरेक्ट्री में जाएँ:
cd
कमांड से उस डायरेक्ट्री में जाएँ जहाँ आपका ASP.NET प्रोजेक्ट है (यानी जहाँweb.config
फाइल है)।bash# उदाहरण: MyWebApp नामक प्रोजेक्ट डायरेक्ट्री में जाएँ cd /Applications/ServBay/www/MyWebApp
1
2XSP सर्वर शुरू करें: प्रोजेक्ट डाइरेक्ट्री में निम्न कमांड से XSP4 सर्वर शुरू करें। कोई भी फ्री पोर्ट (जैसे 8080 या 9000) ले सकते हैं ताकि ServBay या अन्य सेवाओं से टकराव न हो।
bash# 9000 पोर्ट पर प्रोजेक्ट सर्व करें xsp4 --port 9000
1
2xsp4
: .NET Framework 4.x हेतु XSP सर्वर।--port 9000
: सर्वर का TCP पोर्ट।
एप्लिकेशन देखें: वेब ब्राउज़र में
http://localhost:9000
याhttp://127.0.0.1:9000
ओपन करें। अपने ASP.NET एप्लिकेशन को रन होते हुए देखें।सर्वर बन्द करें: विकास या टेस्टिंग खत्म करने पर टर्मिनल में जाकर
Ctrl + C
या एंटर दबाएँ और XSP सर्वर को रोकें।
फायदे:
- आसान सेटअप और झटपट शुरू होता है।
- स्थानीय विकास व डिबगिंग के लिए आदर्श।
सीमाएँ:
- उत्पाद स्तर के वेब सर्वरों (जैसे Nginx) जितना तेज़ नहीं है।
- मूलभूत फीचर, प्रोडक्शन समरूपता कम।
- टर्मिनल विंडो चालू रखना ज़रूरी है।
तरीका 2: Nginx + FastCGI का उपयोग
इस विधि में ServBay-प्रबंधित Nginx को सामने रखकर, वह सभी क्लाइंट अनुरोध लेता एवं स्थैतिक फाइलें प्रोसेस करता है। जबकि FastCGI प्रोटोकॉल से डायनामिक अनुरोध (जैसे .aspx
, .ashx
आदि) Mono बैकएंड (fastcgi-mono-server4
) तक जाते हैं। यह तरीका प्रोडक्शन जैसा वातावरण देता है, बेहतर परफॉरमेंस व Nginx की उन्नत क्षमताओं का लाभ मिलता है (जैसे SSL, कैशिंग, कम्प्रेशन आदि)।
सुझाव
- अगर आप ASP.NET 1.1 प्रोजेक्ट चलाना चाहते हैं, तो
fastcgi-mono-server
कमांड चलाएँ। - अगर आप ASP.NET 2.0/3.x प्रोजेक्ट चलाना चाहते हैं, तो
fastcgi-mono-server2
कमांड चलाएँ। - अगर आप ASP.NET 4.x प्रोजेक्ट चला रहे हैं, तो
fastcgi-mono-server4
कमांड का प्रयोग करें।
स्टेप्स:
सुनिश्चित करें कि Mono और Nginx इंस्टॉल और चालू हैं:
- ServBay के "पैकेज" में जाकर Mono 6 और Nginx इंस्टॉल करें।
- "सेवाएँ" अनुभाग में, Nginx सर्विस चालू है, यह देखें।
ASP.NET प्रोजेक्ट तैयार रखें: प्रोजेक्ट को कनेक्टेड पथ पर रखें, जैसे
/Applications/ServBay/www/MyWebApp
।FastCGI Mono Server शुरू करें:
- नया टर्मिनल विंडो खोलें।
fastcgi-mono-server4
प्रोसेस चलाएँ। यह Nginx के FastCGI अनुरोध सुनता, ASP.NET पृष्ठों को प्रोसेस करता है।bash# MyWebApp के लिए FastCGI सर्विस शुरू करें 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 हेतु FastCGI सर्वर।--applications=/:/Applications/ServBay/www/MyWebApp
: URL पथ को फ़ाइल पथ से जोड़ता है।/:
वेब साइट का रूट URL होता है,/Applications/ServBay/www/MyWebApp
आपके प्रोजेक्ट का असली पथ। जब Nginx/some/page.aspx
पास करेगा, Mono प्रोजेक्ट डाइरेक्ट्री में उस पृष्ठ को खोजेगा। अपने प्रोजेक्ट के पथ से इसे बदलें।--socket=tcp:127.0.0.1:9001
: किस TCP एड्रेस और पोर्ट पर FastCGI सर्वर सुनेगा।127.0.0.1
मतलब लोकल कनेक्शन,9001
पोर्ट।--loglevels=Standard --printlog
: (वैकल्पिक) टर्मिनल पर लॉग देख सकते हैं।
- नोट:
fastcgi-mono-server4
चलाने वाला टर्मिनल खुला रहना चाहिए, वरना सर्विस रुकेगी। लंबे समय के लिए आपnohup
,screen
याtmux
का उपयोग अलग से कर सकते हैं।
Nginx साइट कॉन्फ़िगर करें:
ServBay में “साइट्स” पर जाएँ।
“साइट जोड़ें” या मौजूदा साइट संपादित करें।
डोमेन सेट करें: उदाहरणार्थ, ब्रांड से जुड़ा डोमेन
mywebapp.servbay.demo
रखें। ServBay अपने आप macOS होस्ट्स फाइल में यह डोमेन 127.0.0.1 से जोड़ देगा।रूट डायरेक्ट्री सेट करें: अत्यंत महत्वपूर्ण! ASP.NET प्रोजेक्ट का असली पथ सेट करें, जैसे
/Applications/ServBay/www/MyWebApp
। यह Nginx कीroot
सेटिंग को डाइरेक्ट करेगा।कस्टम कॉन्फिगरेशन एनेबल कर संपादित करें: कस्टम कॉन्फिगरेशन बॉक्स जरूर चेक करें। ServBay बेसीक Nginx फाइल तैयार करता है, आपको इसमें बदलाव करके ASP.NET अनुरोध FastCGI Mono Server तक भेजने का लॉजिक जोड़ना होता है।
ServBay की ऑटो-जनरेटेड कॉन्फिगरेशन का उदाहरण (जाँचें/जोड़ें/सम्पादित करें):
nginxserver { listen 80; # HTTP पोर्ट listen 443 ssl http2; # HTTPS पोर्ट, SSL और HTTP/2 सक्षम # SSL प्रमाण-पत्र के लिए ServBay का ऑटो-कॉन्फिगरेशन 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; # प्रमाण-पत्र फाइल पथ, ServBay अपने आप तैयार करता है ssl_certificate /Applications/ServBay/ssl/private/tls-certs/mywebapp.servbay.demo/mywebapp.servbay.demo.crt; # डोमेन व पथ मिलाएं ssl_certificate_key /Applications/ServBay/ssl/private/tls-certs/mywebapp.servbay.demo/mywebapp.servbay.demo.key; # डोमेन व पथ मिलाएं server_name mywebapp.servbay.demo; # ServBay डोमेन सेटिंग से मेल खाएं root /Applications/ServBay/www/MyWebApp; # **ज़रूर** वेबसाइट रूट के अनुसार बदलें # ASP.NET डिफ़ॉल्ट डॉक्युमेंट्स, यदि Nginx को index.html/htm न मिले तो इन्हें आजमाएगा index index.html index.htm default.aspx Default.aspx; # मुख्य अनुरोध प्रोसेसिंग लॉजिक location / { # क्रमवार फाइल ($uri) या डायरेक्ट्री ($uri/) देखें, न मिले तो @mono हैंडलर पर फॉरवर्ड करें try_files $uri $uri/ @mono; } # (ऑप्शनल, सुझावित) Nginx द्वारा कॉमन स्थैतिक फाइल्स को सीधा प्रोसेस करें # ब्राउज़र कैशिंग का अधिकतम लाभ लें location ~* \.(ico|css|js|gif|jpe?g|png|svg|woff|woff2|ttf|eot)$ { expires max; # कैश अधिकतम रखें log_not_found off; # मिसिंग फाइल लॉग न करें access_log off; # स्थैतिक फाइल लॉग न रखें } # @mono नामस्थ स्थान, डायनामिक ASP.NET अनुरोधों को हैण्डल करता है location @mono { # FastCGI से Mono सर्वर तक अनुरोध भेजें # **पोर्ट** fastcgi-mono-server4 में यूज़ किए गए --socket पोर्ट जैसा हो fastcgi_pass 127.0.0.1:9001; # मानक FastCGI पैरामीटर सम्मिलित करें include fastcgi_params; # महत्वपूर्ण: SCRIPT_FILENAME पैरामीटर Mono को ASP.NET फाइल दूंढने हेतु fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; # PATH_INFO की आवश्यकता नहीं; खाली छोड़ें fastcgi_param PATH_INFO ""; # (वैकल्पिक) अतिरिक्त पैरामीटर जैसे HOST, आवश्यकता अनुसार जोड़ें # fastcgi_param HOST $host; } # ServBay के अन्य डिफ़ॉल्ट सेटिंग जैसे लॉग पथ # 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कॉन्फिगरेशन सेव करें व Nginx को रीलोड/रीस्टार्ट करें: ServBay में Nginx कॉन्फिग फाइल सेव करें। ServBay को यह कॉन्फिग स्वचालित रीलोड करना चाहिए। कोई सिंटैक्स त्रुटि होने पर वार्निंग दिखेगी। जरूरत पड़े तो "सेवाएँ" में जाकर Nginx मैन्युअली रीस्टार्ट करें।
एप्लिकेशन देखें: ब्राउज़र में, आपने जो डोमेन Nginx में सेट किया है (जैसे
https://mywebapp.servbay.demo
), उसे खोलें। Nginx 443 SSL पोर्ट का प्रयोग करेगा - अतः HTTPS यूज़ करें। Nginx स्थैतिक फाइलें सीधे देगा और डायनामिक अनुरोध FastCGI Mono सर्वर पर भेजेगा, जहाँ Mono आपका ASP.NET कोड चलाएगा।
फायदे:
- बेहतर स्थिरता एवं प्रदर्शन, प्रोडक्शन-जैसा टेस्टिंग अनुभव।
- Nginx की ताकत (स्थैतिक फाइलें, SSL, लोड बैलेंसिंग आदि) का लाभ।
- ServBay साईट, डोमेन व होस्ट्स मैनेजमेंट से गहरा इंटीग्रेशन।
सीमाएँ:
- XSP की तुलना में कॉन्फिगरेशन अधिक जटिल।
fastcgi-mono-server4
प्रक्रिया का हाथ से प्रबंधन आवश्यक (जब तक आप बैकग्राउंड टूल्स न यूज़ करें)।
उपयुक्त तरीका कैसे चुनें
- त्वरित विकास, डिबगिंग एवं बेसिक टेस्टिंग हेतु XSP सबसे सरल और तेज तरीका है; बस कमांड चलाएँ।
- उच्च प्रदर्शन, प्रोडक्शन-जैसी टेस्टिंग या Nginx की एडवांस्ड क्षमताओं (HTTPS, कस्टम डोमेन, फाइल ऑप्टिमाइजेशन) एवं ServBay साइट मैनेजमेंट चाहें, तो Nginx + FastCGI सर्वोत्तम विकल्प है।
ध्यान देने योग्य बातें एवं समस्या निवारण
- फाइल परमिशन्स: Nginx का उपयोगकर्ता (आमतौर पर ServBay द्वारा नियंत्रित) और
fastcgi-mono-server4
चलाने वाला macOS यूजर - दोनों को आपके प्रोजेक्ट फोल्डर (/Applications/ServBay/www/YourProjectName
) पर पर्याप्त पढ़ने की अनुमति होनी चाहिए। कभी-कभीchmod
याchown
से परमिशन बदलनी पड़ सकती है। - पथों की संगति: Nginx (
root
) औरfastcgi-mono-server4
(--applications
) के प्रोजेक्ट पथ एकदम सही होने चाहिए, और दोनों कोweb.config
युक्त प्रोजेक्ट रूट तक जाना चाहिए। - पोर्ट टकराव: XSP या
fastcgi-mono-server4
में प्रयुक्त पोर्ट (9000/9001) किसी अन्य सर्विस या प्रोग्राम द्वारा उपयोग में न हो। - लॉग जाँचें:
fastcgi-mono-server4
की टर्मिनल लॉग देखें,--printlog
प्रत्यक्ष डिबग में सहायक।- Nginx की एरर लॉग चेक करें, ServBay "साइट सेटिंग" में लॉग पथ दिखाता है (आमतौर पर
/Applications/ServBay/logs/nginx/your-domain.error.log
)। यह Nginx कांफिग या FastCGI Mono Server समस्याओं के लिए अत्यंत महत्वपूर्ण है।
- Mono संस्करण संगति: ServBay का Mono 6.14.0 सामान्यतः .NET Framework 1.1 से 4.7.2 तक संगत है। यदि आपने उससे ऊँचा किसी .NET फ़ीचर का उपयोग किया है या संगति संबंधी समस्या आए तो Microsoft के आधिकारिक .NET SDK/रनटाइम का प्रयोग करें या अपने प्रोजेक्ट को Mono समर्थित फ़्रेमवर्क तक डाउनग्रेड करें।
- FastCGI प्रक्रिया प्रबंधन: Nginx + FastCGI तरीके में,
fastcgi-mono-server4
प्रक्रिया लगातार चलती रहनी चाहिए। विकास के लिए टर्मिनल चालू रखें, या स्थाई उपयोग हेतु इसे बैकग्राउंड सेवा अथवा प्रक्रिया मैनेजर के साथ सेट करें।
ServBay के अंतर्गत Mono 6 वातावरण और अनुशंसित प्रोजेक्ट संरचना का उपयोग करते हुए, macOS पर पारंपरिक ASP.NET Framework 4.x एप्लिकेशन का विकास और रनिंग बेहद सुव्यवस्थित और सरल हो जाता है। आशा है, यह दस्तावेज़ आपके विकास आरंभ में पूर्ण सहायता करेगा!