परिचय: C# एप्लिकेशन के लिए VPS आदर्श समाधान क्यों है?
\nC# और .NET प्लेटफॉर्म पर डेवलपमेंट अब केवल Windows सर्वरों का विशेषाधिकार नहीं रह गया है। .NET Core (और अब .NET 5/6/7/8) के आगमन के साथ, डेवलपर्स को Linux पर अपने एप्लिकेशन चलाने की क्षमता मिल गई है, जिससे सस्ते और उच्च-प्रदर्शन वाले VPS सर्वरों तक पहुंच खुल गई है। VPS पर C# एप्लिकेशन का डिप्लॉयमेंट न केवल बजट बचाता है, बल्कि OS चुनने से लेकर सुरक्षा कॉन्फ़िगर करने तक, बुनियादी ढांचे पर पूर्ण नियंत्रण भी प्रदान करता है।
\nइस मार्गदर्शिका में, हम एक रिमोट सर्वर पर ASP.NET Core एप्लिकेशन को डिप्लॉय करने के पूरे चक्र को समझेंगे। आप सीखेंगे कि सर्वर कैसे तैयार करें, रिवर्स प्रॉक्सी सर्वर Nginx को कैसे कॉन्फ़िगर करें, Kestrel के माध्यम से एप्लिकेशन कैसे चलाएं और SSL सर्टिफिकेट से इसे कैसे सुरक्षित करें। सभी चरण कोड उदाहरणों और कंसोल कमांड के साथ दिए गए हैं।
\n\n1. सर्वर तैयार करना और .NET Runtime इंस्टॉल करना
\nOS चुनना और SSH से कनेक्ट करना
\nVPS पर C# एप्लिकेशन डिप्लॉय करने के लिए Ubuntu 22.04 LTS या Debian 11 डिस्ट्रीब्यूशन का उपयोग करने की अनुशंसा की जाती है। सर्वर किराए पर लेने के बाद, SSH के माध्यम से उससे कनेक्ट करें:
\nssh root@आपका_सर्वर_IP\nपैकेज मैनेजर को अपडेट करें और आवश्यक उपयोगिताएँ इंस्टॉल करें:
\napt update && apt upgrade -y\napt install curl wget git -y\n\n.NET SDK या Runtime इंस्टॉल करना
\nतैयार एप्लिकेशन चलाने के लिए केवल ASP.NET Core Runtime इंस्टॉल करना पर्याप्त है। यदि आप सर्वर पर ही कोड कंपाइल करने की योजना बना रहे हैं, तो SDK इंस्टॉल करें। Microsoft रिपॉजिटरी जोड़ें और .NET 8 इंस्टॉल करें:
\nwget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb\ndpkg -i packages-microsoft-prod.deb\napt update\napt install aspnetcore-runtime-8.0 -y\nइंस्टॉलेशन जांचें:
\ndotnet --list-runtimes\nआउटपुट में ASP.NET Core 8.0.x वर्शन वाली एक पंक्ति होनी चाहिए।
\n\n2. एप्लिकेशन तैयार करना और प्रकाशित करना
\nप्रोडक्शन के लिए प्रोजेक्ट कॉन्फ़िगर करना
\nअपने ASP.NET Core प्रोजेक्ट में Program.cs फ़ाइल खोलें और सुनिश्चित करें कि एप्लिकेशन सही URL पर सुन रहा है। Kestrel के माध्यम से काम करने के लिए पोर्ट 5000 सेट करें:
var builder = WebApplication.CreateBuilder(args);\nbuilder.WebHost.UseUrls("http://0.0.0.0:5000");\nvar app = builder.Build();\napp.MapGet("/", () => "VPS से नमस्ते!");\napp.Run();\nसाथ ही, यदि उपयोग किए जा रहे हैं तो appsettings.json में लॉग और डेटाबेस कनेक्शन स्ट्रिंग के लिए एक सेक्शन जोड़ें।
एप्लिकेशन प्रकाशित करना (Self-contained या Framework-dependent)
\nप्रकाशन का तरीका चुनें। Self-contained में सभी निर्भरताएँ शामिल होती हैं, जो तब सुविधाजनक होता है जब सर्वर पर .NET Runtime स्थापित न हो। Framework-dependent के लिए इंस्टॉल किए गए Runtime की आवश्यकता होती है। प्रोजेक्ट फ़ोल्डर में कमांड चलाएँ:
\ndotnet publish -c Release -o ./publish\nपूरा होने पर, publish फ़ोल्डर में सभी आवश्यक फ़ाइलें दिखाई देंगी। उन्हें संग्रहित करें:
tar -czf app.tar.gz ./publish\n\nसर्वर पर अपलोड करना
\nआर्काइव ट्रांसफर करने के लिए SCP या SFTP का उपयोग करें। SCP के माध्यम से उदाहरण (लोकल मशीन से चलाया जाता है):
\nscp app.tar.gz root@आपका_IP:/var/www/myapp/\nसर्वर पर आर्काइव को अनज़िप करें:
\nmkdir -p /var/www/myapp\ntar -xzf /var/www/myapp/app.tar.gz -C /var/www/myapp/\n\n3. Kestrel कॉन्फ़िगर करना और systemd सेवा बनाना
\nKestrel के माध्यम से एप्लिकेशन चलाना
\nKestrel ASP.NET Core का अंतर्निहित वेब सर्वर है। परीक्षण के लिए चलाएँ:
\ncd /var/www/myapp/publish\ndotnet YourAppName.dll\nएप्लिकेशन पोर्ट 5000 पर चालू होना चाहिए। curl http://localhost:5000 के माध्यम से जांचें। यदि सब कुछ काम करता है, तो प्रक्रिया रोकें (Ctrl+C)।
systemd यूनिट फ़ाइल बनाना
\nएप्लिकेशन को सिस्टम स्टार्टअप पर स्वचालित रूप से चालू होने और विफलता पर पुनरारंभ होने के लिए, एक systemd सेवा बनाएँ। फ़ाइल बनाएँ:
\nnano /etc/systemd/syst