نشر تطبيق Asp.net Core مع MySQL وNginx على أوبنتو 18.04
تنشر تطبيق Asp.net Core مع خادم MySQL باستخدام Nginx على أوبنتو 18.04 يتطلب فهمًا عميقًا لعدة مفاهيم وخطوات. سأقوم بتوضيح العملية بشكل مفصل لضمان فهمك الكامل للخطوات المطلوبة.
أولًا وقبل أن نبدأ في تثبيت وتكوين البرامج والخدمات، يجب أن تتأكد من أن لديك إصدار من Asp.net Core المثبت على الخادم الخاص بك، وأنك قد أعددت تطبيقك للإنتاج.
-
استخدام طرق وثوابت المانجوس في Mongoose02/04/2024
-
فهم الخيوط والشبكات في Java21/01/2024
الخطوة الأولى: تثبيت MySQL وإعداد قاعدة البيانات
قم بتثبيت MySQL على الخادم الخاص بك وقم بإنشاء قاعدة بيانات لتخزين بيانات تطبيقك.
bashsudo apt update sudo apt install mysql-server sudo mysql_secure_installation mysql -u root -p CREATE DATABASE your_database_name;
قم بإنشاء مستخدم MySQL ومنحه صلاحيات على قاعدة البيانات الخاصة بك:
sqlCREATE 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.
bashsudo 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 ليخدم تطبيقك. قم بفتح محرر النصوص المفضل لديك وأضف التكوين التالي:
nginxserver { 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"
}
}
}
}
ثم قم ببناء تطبيقك باستخدام الأمر:
bashdotnet publish -c Release
الآن، قم بتشغيل تطبيقك باستخدام:
bashdotnet your_application.dll
بهذا، يجب أن يكون تطبيق Asp.net Core الخاص بك يعمل مع Nginx ويستخدم MySQL كقاعدة بيانات. تأكد من أنك قمت بتكوين جدار الحماية على الخادم الخاص بك للسماح بحركة المرور عبر المنفذ 80.
يرجى مراجعة وتخصيص الأكواد والإعدادات وفقًا لاحتياجات تطبيقك الخاص والأمان الذي تحتاجه.
المزيد من المعلومات
بالطبع، سنقوم الآن بتوضيح المزيد من المعلومات حول عملية نشر تطبيق Asp.net Core مع خادم MySQL باستخدام Nginx على أوبنتو 18.04.
الخطوة الخامسة: تكوين خدمة MySQL للعمل مع Asp.net Core
تأكد من تحرير ملف my.cnf لتمكين الاتصال البعيد إذا كانت خدمة MySQL تعمل على نفس الخادم. قم بفتح الملف باستخدام محرر النصوص المفضل لديك:
bashsudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
ثم أضف أو قم بتعديل السطور التالية:
inibind-address = 0.0.0.0
بعد ذلك، قم بإعادة تشغيل خدمة MySQL لتطبيق التغييرات:
bashsudo service mysql restart
الخطوة السادسة: تكوين جدار الحماية
قم بتكوين جدار الحماية على الخادم للسماح بحركة المرور عبر المنافذ المستخدمة. في هذا المثال، سنفترض أنك تستخدم المنافذ 80 (لـ Nginx) و 3306 (لـ MySQL). قم بتشغيل الأوامر التالية:
bashsudo 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
مع الإعدادات التالية:
nginxhttp { # ... 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:
bashsudo service nginx restart
الخطوة التاسعة: تكوين SSL (اختياري)
لتأمين اتصالاتك، يُفضل تكوين SSL باستخدام Let’s Encrypt. يمكنك استخدام Certbot لتحقيق ذلك:
bashsudo apt install certbot sudo certbot --nginx
اتبع التعليمات لتكوين الشهادة SSL.
الخطوة العاشرة: إعادة تشغيل الخدمات
أخيرًا، قم بإعادة تشغيل Nginx وتطبيق Asp.net Core وMySQL:
bashsudo service nginx restart sudo service your_application_name restart sudo service mysql restart
بهذا، يجب أن يكون تطبيق Asp.net Core الخاص بك قد نشر بنجاح على خادم أوبنتو 18.04 مع خادم MySQL و Nginx. تأكد من فحص سجلات الأخطاء وتسجيلات النظام لضمان عدم وجود مشاكل غير متوقعة، وتحقق من أن جميع الاتصالات اللازمة قد تم تكوينها بشكل صحيح.