البرمجة

نشر تطبيق ASP.NET Core على أوبونتو

نشر تطبيق ASP.NET Core مع خادم MySQL باستخدام Nginx على أوبونتو 18.04

نظام أوبونتو هو أحد أشهر أنظمة التشغيل المستندة إلى لينكس التي تستخدم بشكل واسع في بيئات السيرفرات، حيث يتميز بسهولة استخدامه وأدائه العالي. في هذا المقال، سنتناول كيفية نشر تطبيق ويب باستخدام ASP.NET Core على خادم أوبونتو 18.04، مع إعداد قاعدة بيانات MySQL واستخدام Nginx كخادم ويب أمامي لإدارة التوجيه والتحميل.

1. التحضير المبدئي

قبل البدء في عملية نشر تطبيق ASP.NET Core، من المهم التأكد من أن جميع المكونات الأساسية على الخادم قد تم تثبيتها بشكل صحيح. في هذه الخطوات، سنحتاج إلى تثبيت أوبونتو 18.04 على الخادم، بالإضافة إلى مجموعة من الحزم والبرمجيات الضرورية مثل .NET Core وMySQL وNginx.

1.1 تحديث النظام

ابدأ بتحديث النظام لضمان أن جميع الحزم على الخادم محدثة. افتح الطرفية وأدخل الأوامر التالية:

bash
sudo apt update sudo apt upgrade
1.2 تثبيت حزم أساسية

تأكد من تثبيت الأدوات الأساسية مثل curl وwget:

bash
sudo apt install curl wget gnupg

2. تثبيت .NET Core

ASP.NET Core هو إطار عمل مفتوح المصدر لتطوير التطبيقات على الويب باستخدام لغة C#. لتثبيته على أوبونتو 18.04، يجب إضافة مستودع .NET Core وتثبيته باستخدام الأوامر التالية:

2.1 إضافة مستودع .NET Core
bash
wget https://packages.microsoft.com/config/ubuntu/18.04/prod.list sudo mv prod.list /etc/apt/sources.list.d/microsoft-prod.list
2.2 تثبيت حزم .NET Core

لتثبيت .NET SDK على أوبونتو 18.04، استخدم الأوامر التالية:

bash
sudo apt update sudo apt install dotnet-sdk-6.0

يمكنك التحقق من تثبيت .NET Core بنجاح عبر الأمر:

bash
dotnet --version

3. تثبيت MySQL

MySQL هو نظام إدارة قواعد بيانات شهير يستخدم لتخزين البيانات بشكل فعال. لتثبيته على أوبونتو 18.04، استخدم الأوامر التالية:

3.1 تثبيت MySQL
bash
sudo apt install mysql-server
3.2 تأمين MySQL

بعد التثبيت، قم بتشغيل أداة تأمين MySQL لإعداد كلمة مرور للمستخدم الجذر وتطبيق إعدادات الأمان:

bash
sudo mysql_secure_installation
3.3 التحقق من تشغيل MySQL

لتأكيد أن MySQL يعمل بشكل صحيح، استخدم الأمر:

bash
sudo systemctl status mysql

4. إنشاء قاعدة بيانات وتكوين MySQL

الآن، يجب أن تقوم بإنشاء قاعدة بيانات لتطبيق ASP.NET Core الخاص بك. قم بالدخول إلى واجهة MySQL:

bash
sudo mysql -u root -p

بعد إدخال كلمة المرور الخاصة بك، يمكنك إنشاء قاعدة بيانات باستخدام الأمر التالي:

sql
CREATE DATABASE myappdb;

ثم يمكنك إنشاء مستخدم جديد وتحديد الصلاحيات:

sql
CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypassword'; GRANT ALL PRIVILEGES ON myappdb.* TO 'myuser'@'localhost'; FLUSH PRIVILEGES;

5. نشر تطبيق ASP.NET Core

الآن بعد أن تم تثبيت .NET Core وMySQL، يمكننا نشر تطبيق ASP.NET Core على الخادم.

5.1 بناء تطبيق ASP.NET Core

في جهاز التطوير المحلي، يجب أولاً بناء التطبيق باستخدام أوامر .NET Core التالية:

bash
dotnet publish -c Release -o /path/to/publish
5.2 نقل التطبيق إلى الخادم

استخدم scp أو أي أداة نقل أخرى لنقل الملفات إلى الخادم. على سبيل المثال:

bash
scp -r /path/to/publish user@your-server-ip:/home/youruser/myapp
5.3 تشغيل التطبيق باستخدام Kestrel

يمكنك تشغيل التطبيق مباشرة باستخدام Kestrel، وهو خادم الويب المدمج في .NET Core. في الطرفية على الخادم، انتقل إلى مجلد التطبيق:

bash
cd /home/youruser/myapp dotnet MyApp.dll

ولكن بدلاً من تشغيل التطبيق مباشرة بهذا الشكل، نريد استخدام Nginx وSystemd لضمان تشغيل التطبيق بشكل مستمر.

6. إعداد Nginx كخادم عكسي

Nginx هو خادم ويب يستخدم عادة كخادم عكسي (reverse proxy) لتوجيه الطلبات إلى تطبيق ASP.NET Core. يمكن تكوينه بسهولة على أوبونتو 18.04.

6.1 تثبيت Nginx

لتثبيت Nginx، استخدم الأمر التالي:

bash
sudo apt install nginx
6.2 تكوين Nginx

الآن، قم بإنشاء ملف تكوين جديد لـ Nginx لتوجيه الطلبات إلى تطبيق ASP.NET Core الخاص بك.

افتح ملف تكوين جديد باستخدام المحرر المفضل لديك (مثل nano):

bash
sudo nano /etc/nginx/sites-available/myapp

ثم أضف التكوين التالي:

nginx
server { listen 80; server_name your_domain_or_IP; location / { proxy_pass http://localhost:5000; # Kestrel port proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }
6.3 تفعيل تكوين Nginx

لتفعيل هذا التكوين، أنشئ رابطًا رمزيًا في المجلد sites-enabled:

bash
sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/

ثم تحقق من صحة التكوين باستخدام:

bash
sudo nginx -t

وأخيرًا، أعد تشغيل Nginx لتطبيق التغييرات:

bash
sudo systemctl restart nginx

7. استخدام Systemd لتشغيل التطبيق

لتشغيل تطبيق ASP.NET Core بشكل دائم باستخدام Systemd، يجب إنشاء ملف وحدة (unit file) في /etc/systemd/system.

7.1 إنشاء ملف وحدة Systemd

افتح المحرر وأضف التكوين التالي:

bash
sudo nano /etc/systemd/system/myapp.service

أضف محتويات الملف التالية:

ini
[Unit] Description=ASP.NET Core application After=network.target [Service] WorkingDirectory=/home/youruser/myapp ExecStart=/usr/bin/dotnet /home/youruser/myapp/MyApp.dll Restart=always # Specify a user to run the app User=youruser Environment=ASPNETCORE_ENVIRONMENT=Production Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false SyslogIdentifier=dotnet-myapp LogLevel=Information TimeoutStopSec=20 KillSignal=SIGINT [Install] WantedBy=multi-user.target
7.2 بدء الخدمة

بعد إنشاء ملف الوحدة، قم بتحميل التغييرات وتشغيل التطبيق:

bash
sudo systemctl daemon-reload sudo systemctl start myapp sudo systemctl enable myapp

8. التحقق من تشغيل التطبيق

بمجرد أن يبدأ تطبيقك باستخدام systemd وNginx، يمكنك التحقق من أنه يعمل بشكل صحيح عن طريق زيارة النطاق أو عنوان IP الخاص بالخادم في المتصفح.

إذا كان كل شيء قد تم بشكل صحيح، ستظهر صفحة الويب الخاصة بتطبيق ASP.NET Core الذي يعمل مع MySQL عبر Nginx.

9. إدارة الأخطاء ومراقبة التطبيق

من المهم دائمًا مراقبة سير العمل وتسجيل الأخطاء. يمكنك فحص سجلات Nginx عبر:

bash
sudo tail -f /var/log/nginx/error.log

كما يمكنك التحقق من حالة تطبيق ASP.NET Core من خلال:

bash
sudo systemctl status myapp

لإيقاف التطبيق:

bash
sudo systemctl stop myapp

الخاتمة

بهذا الشكل، نكون قد انتهينا من نشر تطبيق ASP.NET Core مع خادم MySQL باستخدام Nginx على خادم أوبونتو 18.04. يعتبر هذا النوع من النشر من الخيارات الموثوقة والمرنة لتشغيل تطبيقات الويب في بيئات الإنتاج.