نشر تطبيق C# على VPS: دليل خطوة بخطوة من الألف إلى الياء

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

مقدمة: لماذا VPS هو المكان المثالي لتطبيق C# الخاص بك

\n

التطوير بلغة C# في نظام .NET البيئي يوفر أدوات قوية لإنشاء تطبيقات الويب وواجهات برمجة التطبيقات (API) والخدمات المصغرة. ومع ذلك، فإن كتابة الكود ليست سوى نصف المهمة. لجعل تطبيقك متاحًا للمستخدمين، يجب نشره على خادم. يوفر الخادم الخاص الافتراضي (VPS) تحكمًا كاملاً في البيئة، وهو أمر بالغ الأهمية لبيئة الإنتاج. في هذا الدليل، سننتقل من الصفر إلى تطبيق C# يعمل بالكامل على VPS يعمل بنظام Ubuntu. ستتعلم كيفية تثبيت .NET Runtime، وإعداد خادم وكيل عكسي Nginx، وتشغيل التطبيق كخدمة systemd، وضمان إعادة تشغيله تلقائيًا.

\n\n

تحضير الخادم وتثبيت البرامج الضرورية

\n

1. الاتصال بـ VPS والإعدادات الأساسية

\n

بعد الحصول على الوصول إلى VPS (عنوان IP واسم المستخدم وكلمة المرور أو مفتاح SSH)، اتصل عبر الطرفية:

\n
ssh root@your_server_IP
\n

قم بتحديث قاعدة الحزم وتثبيت curl (ستحتاجه لتحميل .NET):

\n
apt update && apt upgrade -y\napt install curl -y
\n\n

2. تثبيت .NET SDK/Runtime

\n

توصي Microsoft بتثبيت .NET من خلال المستودع الرسمي. سنضيفه ونثبت SDK (للبناء) أو Runtime (للتشغيل فقط). بالنسبة لخادم الإنتاج، عادةً ما يكون Runtime كافيًا، ولكن لتسهيل النشر، سنثبت SDK:

\n
wget 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 -y dotnet-sdk-8.0
\n

تحقق من التثبيت:

\n
dotnet --version
\n\n

3. تثبيت Nginx و Git

\n

سيعمل Nginx كوكيل عكسي، يعيد توجيه الطلبات من المنفذ 80 إلى تطبيقك. ستحتاج Git لاستنساخ المستودع:

\n
apt install -y nginx git\nsystemctl enable nginx\nsystemctl start nginx
\n\n

تحضير ونشر تطبيق C#

\n

1. إنشاء أو استنساخ المشروع

\n

كمثال، سننشئ تطبيق ASP.NET Core Web API بسيط مباشرة على الخادم (في مشروع حقيقي، ستستنسخ المستودع):

\n
mkdir /var/www/myapp\ncd /var/www/myapp\ndotnet new webapi --name MyApp\ncd MyApp
\n\n

2. نشر التطبيق (self-contained)

\n

لجعل التطبيق يعمل بدون تثبيت SDK على الخادم، سننشره في وضع self-contained:

\n
dotnet publish -c Release -r linux-x64 --self-contained true -o /var/www/myapp/publish
\n

العلامة --self-contained true تتضمن جميع تبعيات .NET في مجلد publish. البديل هو --self-contained false (يتطلب تثبيت Runtime).

\n\n

3. تشغيل اختباري

\n

تحقق من أن التطبيق يبدأ (افتراضيًا على المنفذ 5000):

\n
cd /var/www/myapp/publish\n./MyApp --urls "http://0.0.0.0:5000"
\n

افتح في المتصفح http://your_IP:5000 — يجب أن ترى استجابة API. أوقف العملية (Ctrl+C).

\n\n

إعداد Nginx كخادم وكيل عكسي

\n

1. تكوين الموقع

\n

لننشئ ملف تكوين لـ Nginx:

\n
nano /etc/nginx/sites-available/myapp
\n

ألصق الكود التالي (استبدل your_domain_or_ip بنطاقك أو IP الخاص بك):

\n
server {\n    listen 80;\n    server_name your_domain_or_ip;\n\n    location / {\n        proxy_pass http://localhost:5000;\n        proxy_http_version 1.1;\n        proxy_set_header Upgrade $http_upgrade;\n        proxy_set_header Connection keep-alive;\n        proxy_set_header Host $host;\n        proxy_cache_bypass $http_upgrade;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Forwarded-Proto $scheme;\n    }\n}
\n\n

2. تفعيل التكوين

\n
ln -s /etc/nginx/sites-available/myapp /etc/nginx                

المدونات

توصيات الكتب