البرمجة

نشر تطبيق Asp.net Core مع MySQL وNginx على أوبنتو 18.04

تنشر تطبيق Asp.net Core مع خادم MySQL باستخدام Nginx على أوبنتو 18.04 يتطلب فهمًا عميقًا لعدة مفاهيم وخطوات. سأقوم بتوضيح العملية بشكل مفصل لضمان فهمك الكامل للخطوات المطلوبة.

أولًا وقبل أن نبدأ في تثبيت وتكوين البرامج والخدمات، يجب أن تتأكد من أن لديك إصدار من Asp.net Core المثبت على الخادم الخاص بك، وأنك قد أعددت تطبيقك للإنتاج.

الخطوة الأولى: تثبيت MySQL وإعداد قاعدة البيانات
قم بتثبيت MySQL على الخادم الخاص بك وقم بإنشاء قاعدة بيانات لتخزين بيانات تطبيقك.

bash
sudo apt update sudo apt install mysql-server sudo mysql_secure_installation mysql -u root -p CREATE DATABASE your_database_name;

قم بإنشاء مستخدم MySQL ومنحه صلاحيات على قاعدة البيانات الخاصة بك:

sql
CREATE USER 'your_user'@'localhost' IDENTIFIED BY 'your_password'; GRANT ALL PRIVILEGES ON your_database_name.* TO 'your_user'@'localhost'; FLUSH PRIVILEGES; EXIT;

الخطوة الثانية: تثبيت Nginx
قم بتثبيت Nginx والحزم اللازمة لدعم Asp.net Core.

bash
sudo apt install nginx sudo apt install software-properties-common sudo add-apt-repository universe sudo apt update sudo apt install dotnet-sdk-3.1

الخطوة الثالثة: تكوين Nginx لخدمة التطبيق
قم بإنشاء ملف تكوين جديد لتكوين Nginx ليخدم تطبيقك. قم بفتح محرر النصوص المفضل لديك وأضف التكوين التالي:

nginx
server { listen 80; server_name your_domain_or_ip; location / { proxy_pass http://localhost:5000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection keep-alive; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } location /api { proxy_pass http://localhost:5001; # Assuming your API runs on a different port proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection keep-alive; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } location /socketHub { proxy_pass http://localhost:5002; # Assuming SignalR hub runs on a different port proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection keep-alive; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } # Add any other location blocks as needed for your application }

بعد ذلك، قم بحفظ التغييرات وأغلق المحرر.

الخطوة الرابعة: تكوين تطبيق Asp.net Core للاستماع على Nginx
في مشروع Asp.net Core الخاص بك، تأكد من أن الإعدادات الخاصة بالخادم تشير إلى الاستماع على المنفذ الصحيح. في ملف appsettings.json:

json
{ "Kestrel": { "EndPoints": { "Http": { "Url": "http://localhost:5000" } } } }

ثم قم ببناء تطبيقك باستخدام الأمر:

bash
dotnet publish -c Release

الآن، قم بتشغيل تطبيقك باستخدام:

bash
dotnet your_application.dll

بهذا، يجب أن يكون تطبيق Asp.net Core الخاص بك يعمل مع Nginx ويستخدم MySQL كقاعدة بيانات. تأكد من أنك قمت بتكوين جدار الحماية على الخادم الخاص بك للسماح بحركة المرور عبر المنفذ 80.

يرجى مراجعة وتخصيص الأكواد والإعدادات وفقًا لاحتياجات تطبيقك الخاص والأمان الذي تحتاجه.

المزيد من المعلومات

بالطبع، سنقوم الآن بتوضيح المزيد من المعلومات حول عملية نشر تطبيق Asp.net Core مع خادم MySQL باستخدام Nginx على أوبنتو 18.04.

الخطوة الخامسة: تكوين خدمة MySQL للعمل مع Asp.net Core

تأكد من تحرير ملف my.cnf لتمكين الاتصال البعيد إذا كانت خدمة MySQL تعمل على نفس الخادم. قم بفتح الملف باستخدام محرر النصوص المفضل لديك:

bash
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

ثم أضف أو قم بتعديل السطور التالية:

ini
bind-address = 0.0.0.0

بعد ذلك، قم بإعادة تشغيل خدمة MySQL لتطبيق التغييرات:

bash
sudo service mysql restart

الخطوة السادسة: تكوين جدار الحماية

قم بتكوين جدار الحماية على الخادم للسماح بحركة المرور عبر المنافذ المستخدمة. في هذا المثال، سنفترض أنك تستخدم المنافذ 80 (لـ Nginx) و 3306 (لـ MySQL). قم بتشغيل الأوامر التالية:

bash
sudo ufw allow 80/tcp sudo ufw allow 3306/tcp sudo ufw enable

الخطوة السابعة: تكوين الاتصال بقاعدة البيانات في Asp.net Core

قم بفتح ملف appsettings.json في مشروع Asp.net Core الخاص بك وقم بتحديد سلسلة الاتصال بقاعدة البيانات MySQL:

json
{ "ConnectionStrings": { "DefaultConnection": "Server=your_mysql_server_ip;Database=your_database_name;User=your_user;Password=your_password;" } }

تأكد من استبدال your_mysql_server_ip وyour_database_name وyour_user وyour_password بالقيم الصحيحة.

الخطوة الثامنة: ضبط أمان Nginx

قم بضبط إعدادات أمان Nginx لتعزيز الأمان. قم بتحديث ملف التكوين /etc/nginx/nginx.conf مع الإعدادات التالية:

nginx
http { # ... server_tokens off; add_header X-Content-Type-Options nosniff; add_header X-Frame-Options DENY; add_header X-Content-Type-Options nosniff; add_header X-XSS-Protection "1; mode=block"; # ... }

ثم قم بإعادة تشغيل Nginx:

bash
sudo service nginx restart

الخطوة التاسعة: تكوين SSL (اختياري)

لتأمين اتصالاتك، يُفضل تكوين SSL باستخدام Let’s Encrypt. يمكنك استخدام Certbot لتحقيق ذلك:

bash
sudo apt install certbot sudo certbot --nginx

اتبع التعليمات لتكوين الشهادة SSL.

الخطوة العاشرة: إعادة تشغيل الخدمات

أخيرًا، قم بإعادة تشغيل Nginx وتطبيق Asp.net Core وMySQL:

bash
sudo service nginx restart sudo service your_application_name restart sudo service mysql restart

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

زر الذهاب إلى الأعلى