مقدمة
تطوير تطبيق C# على منصة .NET هو نصف المهمة فقط. لجعل مشروعك متاحًا للمستخدمين على الإنترنت، يجب نشره بشكل صحيح على الخادم. VPS (الخادم الخاص الافتراضي) هو الحل المثالي للشركات الصغيرة والمتوسطة والمطورين المستقلين: فهو يمنحك تحكمًا كاملاً في البيئة بسعر مناسب. في هذه المقالة، سنشرح العملية الكاملة لنشر تطبيق C# على VPS يعمل بنظام Linux (Ubuntu 22.04). ستتعلم كيفية تحضير الخادم، ونشر التطبيق، وإعداد reverse proxy باستخدام Nginx، وضمان التشغيل التلقائي عبر systemd.
1. تحضير VPS وتثبيت .NET Runtime
1.1. الاتصال بالخادم
بعد شراء VPS، ستحصل على عنوان IP وكلمة مرور root. اتصل عبر SSH:
ssh root@your-server-ipيوصى بإنشاء مستخدم منفصل فورًا للأمان:
adduser appuserusermod -aG sudo appusersu - appuser1.2. تثبيت .NET Runtime
لتشغيل تطبيق C# على الخادم، تحتاج إلى ASP.NET Core Runtime. أضف مستودع Microsoft وقم بتثبيت الحزمة:
wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.debsudo dpkg -i packages-microsoft-prod.debsudo apt-get updatesudo apt-get install -y aspnetcore-runtime-8.0تحقق من التثبيت:
dotnet --list-runtimesيجب أن ترى سطرًا يحتوي على إصدار ASP.NET Core 8.0.0.
2. نشر التطبيق وتحميله على الخادم
2.1. النشر (publish) على الجهاز المحلي
على جهاز الكمبيوتر الخاص بك باستخدام Visual Studio أو .NET CLI، افتح المشروع ونفذ أمر النشر:
dotnet publish -c Release -o ./publishسينشئ هذا الأمر مجلد publish يحتوي على جميع الملفات اللازمة لتشغيل التطبيق (بما في ذلك تبعيات runtime إذا كنت تستخدم FDD — Framework-Dependent Deployment).
2.2. التحميل على VPS
انسخ مجلد publish إلى الخادم باستخدام scp أو sftp. على الجهاز المحلي، نفذ:
scp -r ./publish appuser@your-server-ip:/home/appuser/myappالآن على الخادم، تحقق من وجود الملفات:
ls -la /home/appuser/myapp3. إعداد systemd للتشغيل التلقائي
لتشغيل التطبيق عند بدء تشغيل النظام وإعادة تشغيله تلقائيًا بعد الأعطال، قم بإنشاء وحدة systemd.
3.1. إنشاء ملف الخدمة
أنشئ ملفًا /etc/systemd/system/myapp.service بصلاحيات root:
sudo nano /etc/systemd/system/myapp.serviceألصق المحتوى التالي:
[Unit]Description=My ASP.NET Core ApplicationAfter=network.target
[Service]WorkingDirectory=/home/appuser/myappExecStart=/usr/bin/dotnet /home/appuser/myapp/YourAppName.dllRestart=alwaysRestartSec=10KillSignal=SIGINTSyslogIdentifier=myappUser=appuserEnvironment=ASPNETCORE_ENVIRONMENT=ProductionEnvironment=ASPNETCORE_URLS=http://localhost:5000
[Install]WantedBy=multi-user.targetاستبدل YourAppName.dll بالاسم الفعلي لملف .dll الخاص بك (عادةً ما يتطابق مع اسم المشروع).
3.2. تشغيل الخدمة وتمكينها
sudo systemctl daemon-reloadsudo systemctl start myappsudo systemctl enable myappتحقق من الحالة:
sudo systemctl status myappإذا تم الإعداد بشكل صحيح، سترى الحالة active (running). الآن التطبيق يستمع على المنفذ 5000 على الواجهة المحلية.
4. إعداد Nginx كـ reverse proxy
للوصول إلى التطبيق من الخارج عبر المنافذ القياسية (80/443) ولإضافة شهادة SSL، قم بتثبيت وإعداد Nginx.
4.1. تثبيت Nginx
sudo apt updatesudo apt install nginx -y