البرنامج التعليمي: نشر تطبيق ASP.NET Core وAzure SQL Database على Azure App Service
في هذا البرنامج التعليمي، ستتعلم كيفية نشر تطبيق ASP.NET Core يستند إلى البيانات إلى Azure App Service والاتصال بقاعدة بيانات Azure SQL. ستقوم أيضا بنشر ذاكرة التخزين المؤقت Azure ل Redis لتمكين التعليمات البرمجية للتخزين المؤقت في التطبيق الخاص بك. Azure App Service هي خدمة استضافة ويب قابلة للتطوير بدرجة كبيرة وتصحيح ذاتي يمكنها نشر التطبيقات بسهولة على Windows أو Linux. على الرغم من أن هذا البرنامج التعليمي يستخدم تطبيق ASP.NET Core 7.0، فإن العملية هي نفسها للإصدارات الأخرى من ASP.NET Core و ASP.NET Framework.
يتطلب هذا البرنامج التعليمي:
- حساب Azure مع اشتراك نشط. إذا لم يكن لديك حساب Azure، يمكنك إنشاء حساب مجانا.
- حساب GitHub. يمكنك أيضا الحصول على واحد مجانا.
عينات التطبيقات
لاستكشاف نموذج التطبيق المستخدم في هذا البرنامج التعليمي، قم بتنزيله من المستودع https://github.com/Azure-Samples/msdocs-app-service-sqldb-dotnetcore أو استنساخه باستخدام أمر Git التالي:
git clone https://github.com/Azure-Samples/msdocs-app-service-sqldb-dotnetcore.git
cd msdocs-app-service-sqldb-dotnetcore
1. إنشاء خدمة التطبيقات وقاعدة البيانات وذاكرة التخزين المؤقت
في هذه الخطوة، يمكنك إنشاء موارد Azure. تنشئ الخطوات المستخدمة في هذا البرنامج التعليمي مجموعة من الموارد الآمنة بشكل افتراضي التي تتضمن App Service وAzure SQL Database وAzure Cache. بالنسبة لعملية الإنشاء، ستحدد:
- اسم تطبيق الويب. هو الاسم المستخدم كجزء من اسم DNS لتطبيق الويب الخاص بك في شكل
https://<app-name>.azurewebsites.net
. - المنطقة لتشغيل التطبيق فعلياً في العالم.
- مكدس الذاكرة المؤقتة لوقت التشغيل للتطبيق. إنه المكان الذي تحدد فيه إصدار .NET لاستخدامه لتطبيقك.
- خطة الاستضافة للتطبيق. إنها طبقة الأسعار التي تتضمن مجموعة الميزات وسعة التحجيم لتطبيقك.
- مجموعة الموارد للتطبيق. تتيح لك مجموعة الموارد تجميع (في حاوية منطقية) جميع موارد Azure المطلوبة للتطبيق.
سجّل الدخول إلى مدخل Azure واتبع هذه الخطوات لإنشاء مورد Azure App Service.
الخطوة 1: في مدخل Microsoft Azure:
- أدخل "قاعدة بيانات تطبيق ويب" في شـريط البحث في أعلى مدخل Microsoft Azure.
- حدد العنصر المسمى تطبيق ويب + قاعدة بيانات ضمن عنوان Marketplace. يمكنك أيضا الانتقال إلى معالج الإنشاء مباشرة.
الخطوة 2: في صفحة إنشاء تطبيق ويب + قاعدة بيانات ، املأ النموذج كما يلي.
- مجموعة الموارد → حدد إنشاء جديد واستخدم اسم msdocs-core-sql-tutorial.
- المنطقة → أي منطقة Azure قريبة منك.
- الاسم → msdocs-core-sql-XYZ حيث XYZ هو أي ثلاثة أحرف عشوائية. يجب أن يكون هذا الاسم فريدا عبر Azure.
- مكدس وقت التشغيل → .NET 7 (STS).
- إضافة ذاكرة التخزين المؤقت Azure ل Redis؟ → نعم.
- خطة الاستضافة → الأساسية. عندما تكون مستعداً، يمكنك التوسع إلى مستوى أسعار الإنتاج لاحقاً.
- حدد SQLAzure كمحرك قاعدة البيانات. قاعدة بيانات Azure SQL هي نظام أساسي مدار بالكامل كمحرك قاعدة بيانات خدمة (PaaS) يعمل دائما على أحدث إصدار مستقر من SQL Server.
- حدد "Review + create".
- وبعد اكتمال عملية التحقق، حدد Create.
الخطوة 3: يستغرق النشر بضع دقائق لإكماله. بعد اكتمال التوزيع، حدد الزر انتقال إلى المورد. يتم نقلك مباشرة إلى تطبيق App Service، ولكن يتم إنشاء الموارد التالية:
- مجموعة الموارد → الحاوية لكافة الموارد التي تم إنشاؤها.
- خطة خدمة التطبيق → تحدد موارد الحساب لخدمة التطبيق. يتم إنشاء خطة Linux في الطبقة الأساسية.
- تمثل خدمة التطبيقات → تطبيقك وتعمل في خطة خدمة التطبيق.
- → الشبكة الظاهرية متكاملة مع تطبيق خدمة التطبيق وتعزل نسبة استخدام الشبكة الخلفية.
- نقاط النهاية الخاصة → نقاط نهاية Access لخادم قاعدة البيانات وذاكرة التخزين المؤقت Redis في الشبكة الظاهرية.
- تمثل واجهات الشبكة → عناوين IP الخاصة، واحدة لكل نقطة من نقاط النهاية الخاصة.
- خادم قاعدة بيانات Azure SQL → يمكن الوصول إليه فقط من خلف نقطة النهاية الخاصة به.
- قاعدة بيانات Azure SQL → يتم إنشاء قاعدة بيانات ومستخدم لك على الخادم.
- → الوصول إلى ذاكرة التخزين المؤقت Azure ل Redis فقط من خلف نقطة النهاية الخاصة به.
- مناطق DNS الخاصة → تمكين دقة DNS لخادم قاعدة البيانات وذاكرة التخزين المؤقت Redis في الشبكة الظاهرية.
2. التحقق من سلسلة الاتصال
قام معالج الإنشاء بإنشاء سلسلة الاتصال لقاعدة بيانات SQL وذاكرة التخزين المؤقت Redis بالفعل. في هذه الخطوة، ابحث عن سلسلة الاتصال التي تم إنشاؤها لاحقا.
الخطوة 1: في صفحة App Service، في القائمة اليسرى، حدد Configuration.
الخطوة 2:
- قم بالتمرير إلى أسفل الصفحة وابحث عن AZURE_SQL_CONNECTIONSTRING في قسم سلاسل الاتصال. تم إنشاء هذه السلسلة من قاعدة بيانات SQL الجديدة بواسطة معالج الإنشاء. لإعداد التطبيق الخاص بك، هذا الاسم هو كل ما تحتاجه.
- ابحث أيضا عن AZURE_REDIS_CONNECTIONSTRING في قسم إعدادات التطبيق. تم إنشاء هذه السلسلة من ذاكرة التخزين المؤقت Redis الجديدة بواسطة معالج الإنشاء. لإعداد التطبيق الخاص بك، هذا الاسم هو كل ما تحتاجه.
- إذا أردت ذلك، يمكنك تحديد الزر تحرير إلى يسار كل إعداد ورؤية قيمته أو نسخها.
لاحقا، ستقوم بتغيير التطبيق الخاص بك لاستخدام
AZURE_SQL_CONNECTIONSTRING
وAZURE_REDIS_CONNECTIONSTRING
.
3 - توزيع عينة التعليمات البرمجية
في هذه الخطوة، ستقوم بتكوين توزيع GitHub باستخدام GitHub. إنها مجرد واحدة من العديد من الطرق للتوزيع في خدمة التطبيق، ولكنها أيضا طريقة رائعة للحصول على تكامل مستمر في عملية التوزيع الخاصة بك. بشكل افتراضي، git push
كل إلى مستودع GitHub الخاص بك سيبدأ إجراء الإنشاء والتوزيع.
الخطوة 1: في نافذة مستعرض جديدة:
- قم بتسجيل الدخول إلى حساب GitHub الخاص بك.
- الانتقال إلى https://github.com/Azure-Samples/msdocs-app-service-sqldb-dotnetcore.
- حدد تفريع:
- حدد Create fork.
الخطوة 2: في صفحة App Service، في القائمة اليسرى، حدد Deployment Center.
الخطوة 3: في صفحة Deployment Center:
- في المصدر، حدد GitHub. بشكل افتراضي، يتم تحديد إجراءات GitHub كموفر بناء.
- سجل الدخول إلى حساب GitHub واتبع المطالبة لتخويل Azure.
- في المؤسسة، حدد حسابك.
- في Repository، حدد msdocs-app-service-sqldb-dotnetcore.
- في الفرع، حدد رئيسي.
- في القائمة العلوية، حدد حفظ. تلتزم App Service بملف سير عمل في مستودع GitHub المختار، في الدليل
.github/workflows
.
الخطوة 4: ارجع إلى صفحة GitHub للعينة المتشعبة، وافتح Visual Studio Code في المتصفح بالضغط على .
المفتاح.
الخطوة 5: في Visual Studio Code في المتصفح:
- افتح DotNetCoreSqlDb/appsettings.json في المستكشف.
- غير اسم
MyDbConnection
سلسلة الاتصال إلىAZURE_SQL_CONNECTIONSTRING
، الذي يطابق سلسلة الاتصال التي تم إنشاؤها في App Service سابقا.
الخطوة 6:
- افتح DotNetCoreSqlDb/Program.cs في المستكشف.
- في
options.UseSqlServer
الأسلوب ، قم بتغيير اسمMyDbConnection
سلسلة الاتصال إلىAZURE_SQL_CONNECTIONSTRING
. هذا هو المكان الذي يتم فيه استخدام سلسلة الاتصال من قبل نموذج التطبيق. - قم بإزالة
builder.Services.AddDistributedMemoryCache();
الأسلوب واستبداله بالتعليمات البرمجية التالية. يغير التعليمات البرمجية الخاصة بك من استخدام ذاكرة التخزين المؤقت في الذاكرة إلى ذاكرة التخزين المؤقت Redis في Azure، ويفعل ذلك باستخدامAZURE_REDIS_CONNECTIONSTRING
من وقت سابق.
builder.Services.AddStackExchangeRedisCache(options =>
{
options.Configuration = builder.Configuration["AZURE_REDIS_CONNECTIONSTRING"];
options.InstanceName = "SampleInstance";
});
الخطوة 7:
- افتح .github/workflows/main_msdocs-core-sql-XYZ في المستكشف. تم إنشاء هذا الملف بواسطة معالج إنشاء App Service.
dotnet publish
ضمن الخطوة ، أضف خطوة لتثبيت أداة Entity Framework Core باستخدام الأمرdotnet tool install -g dotnet-ef --version 7.0.14
.- ضمن الخطوة الجديدة، أضف خطوة أخرى لإنشاء حزمة ترحيل قاعدة بيانات في حزمة النشر:
dotnet ef migrations bundle --runtime linux-x64 -p DotNetCoreSqlDb/DotNetCoreSqlDb.csproj -o ${{env.DOTNET_ROOT}}/myapp/migrate
. حزمة الترحيل هي قابلة للتنفيذ قائمة بذاتها يمكنك تشغيلها في بيئة الإنتاج دون الحاجة إلى .NET SDK. تحتوي حاوية App Service linux فقط على وقت تشغيل .NET وليس .NET SDK.
الخطوة 8:
- حدد ملحق البرنامج للتحكم بالمصادر.
- في مربع النص، اكتب رسالة تثبيت مثل
Configure DB & Redis & add migration bundle
. - حدد Commit and Push.
الخطوة 9: العودة إلى صفحة مركز النشر في مدخل Microsoft Azure:
- حدد "Logs". تم بالفعل بدء تشغيل نشر جديد من التغييرات الملتزم بها.
- في عنصر السجل لتشغيل النشر، حدد إدخال Build/Deploy Logs مع أحدث طابع زمني.
الخطوة 10: يتم نقلك إلى مستودع GitHub الخاص بك وترى أن إجراء GitHub قيد التشغيل. يحدد ملف سير العمل مرحلتين منفصلتين، الإنشاء والتوزيع. انتظر حتى يتم تشغيل GitHub لإظهار حالة مكتمل. يستغرق بضع دقائق.
4. إنشاء مخطط قاعدة البيانات
باستخدام قاعدة بيانات SQL المحمية بالشبكة الظاهرية، فإن أسهل طريقة لتشغيل عمليات ترحيل قاعدة بيانات dotnet هي في جلسة SSH مع حاوية App Service.
الخطوة 1: مرة أخرى في صفحة App Service، في القائمة اليسرى، حدد SSH.
الخطوة 2: في محطة SSH الطرفية:
- شغّل
cd /home/site/wwwroot
. فيما يلي جميع الملفات المنشورة. - قم بتشغيل حزمة الترحيل التي تم إنشاؤها بواسطة سير عمل GitHub باستخدام
./migrate
. إذا نجحت، فإن خدمة التطبيقات تتصل بنجاح بقاعدة بيانات SQL. يمكن أن تستمر التغييرات التي يتم إجراؤها على الملفات في/home
فقط بعد عمليات إعادة تشغيل التطبيق. التغييرات خارج/home
غير مستمرة.
5. استعرض للوصول إلى التطبيق
الخطوة 1: في صفحة App Service:
- من القائمة اليسرى، حدد نظرة عامة.
- حدد عنوان URL لتطبيقك. يمكنك أيضًا الانتقال مباشرة إلى
https://<app-name>.azurewebsites.net
.
الخطوة 2: إضافة بعض المهام إلى القائمة. تهانينا، أنت تقوم بتشغيل تطبيق آمن يستند إلى البيانات ASP.NET Core في Azure App Service.
تلميح
تطبيق العينة ينفذ نمط ذاكرة التخزين المؤقت المصاحبة . عند زيارة طريقة عرض بيانات للمرة الثانية، أو إعادة تحميل الصفحة نفسها بعد إجراء تغييرات على البيانات، يعرض وقت المعالجة في صفحة الويب وقتا أسرع بكثير لأنه يقوم بتحميل البيانات من ذاكرة التخزين المؤقت بدلا من قاعدة البيانات.
6. دفق سجلات التشخيص
تلتقط Azure App Service جميع الرسائل التي تم تسجيلها في وحدة التحكم لمساعدتك في تشخيص المشكلات المتعلقة بالتطبيق الخاص بك. يقوم نموذج التطبيق بإخراج رسائل سجل وحدة التحكم في كل نقطة من نقاط النهاية الخاصة به لتوضيح هذه الإمكانية.
الخطوة 1: في صفحة App Service:
- من القائمة اليسرى، حدد تسجيلات خدمة التطبيق.
- ضمن سجل التطبيقات، حدد نظام الملفات.
الخطوة 2: من القائمة اليسرى، حدد Log stream. ترى سجلات تطبيقك، بما في ذلك سجلات النظام الأساسي والسجلات من داخل الحاوية.
7. تنظيف الموارد
عند الانتهاء، يمكنك حذف جميع الموارد من اشتراك Azure الخاص بك عن طريق حذف مجموعة الموارد.
الخطوة 1: في شريط البحث أعلى مدخل Microsoft Azure:
- أدخل اسم مجموعة الموارد.
- حدد مجموعة الموارد.
الخطوة 2: في صفحة مجموعة الموارد، حدد حذف مجموعة الموارد.
الخطوة 3:
- أدخل اسم مجموعة الموارد لتأكيد حذفك.
- حدد حذف.
الأسئلة الشائعة
- كم يكلف هذا الإعداد؟
- كيف أعمل الاتصال بخادم قاعدة بيانات Azure SQL المؤمن خلف الشبكة الظاهرية باستخدام أدوات أخرى؟
- كيف يعمل تطوير التطبيقات المحلية مع إجراءات GitHub؟
- كيف أعمل أخطاء تصحيح الأخطاء أثناء نشر إجراءات GitHub؟
كم يكلف هذا الإعداد؟
أسعار موارد الإنشاء كما يلي:
- يتم إنشاء خطة App Service في الطبقة الأساسية، ويمكن تغيير حجمها زيادة أو نقصانًا. راجع تسعير App Service.
- يتم إنشاء قاعدة بيانات Azure SQL في مستوى الأغراض العامة بلا خادم على أجهزة السلسلة القياسية مع الحد الأدنى من الذاكرات الأساسية. هناك تكلفة صغيرة ويمكن توزيعها على مناطق أخرى. يمكنك تقليل التكلفة بشكل أكبر عن طريق تقليل الحد الأقصى لحجمها، أو يمكنك توسيع نطاقها عن طريق ضبط مستوى الخدمة وطبقة الحوسبة وتكوين الأجهزة وعدد الذاكرات الأساسية وحجم قاعدة البيانات والتكرار في المنطقة. راجع تسعير قاعدة بيانات Azure SQL.
- يتم إنشاء ذاكرة التخزين المؤقت Azure ل Redis في المستوى الأساسي مع الحد الأدنى لحجم ذاكرة التخزين المؤقت. هناك تكلفة صغيرة مرتبطة بهذا المستوى. يمكنك توسيع نطاقه إلى مستويات أداء أعلى للحصول على قابلية وصول عالية، وتكوين أنظمة المجموعات، وميزات أخرى. راجع تسعير Azure Cache for Redis.
- لا تتحمل الشبكة الظاهرية رسوما ما لم تقم بتكوين وظائف إضافية، مثل التناظر. راجع أسعار شبكة Azure الظاهرية.
- تتحمل منطقة DNS الخاصة رسوما صغيرة. راجع أسعار Azure DNS.
كيف أعمل الاتصال بخادم قاعدة بيانات Azure SQL المؤمن خلف الشبكة الظاهرية باستخدام أدوات أخرى؟
- للوصول الأساسي من أداة سطر الأوامر، يمكنك التشغيل
sqlcmd
من وحدة SSH الطرفية للتطبيق. لا تأتي حاوية التطبيق معsqlcmd
، لذا يجب عليك تثبيتها يدوياً. تذكر أن العميل المثبت لا يستمر عبر عمليات إعادة تشغيل التطبيق. - للاتصال من عميل SQL Server Management Studio أو من Visual Studio، يجب أن يكون جهازك داخل الشبكة الظاهرية. على سبيل المثال، قد يكون جهاز Azure ظاهري متصل بإحدى الشبكات الفرعية، أو جهازا في شبكة محلية لديه اتصال VPN من موقع إلى موقع مع شبكة Azure الظاهرية.
كيف يعمل تطوير التطبيقات المحلية مع إجراءات GitHub؟
خذ ملف سير العمل الذي تم إنشاؤه تلقائيا من خدمة التطبيق كمثال، git push
كل يبدأ تشغيل بنية وتوزيع جديد. من نسخة محلية من مستودع GitHub، يمكنك إجراء التحديثات المطلوبة دفعه إلى GitHub. على سبيل المثال:
git add .
git commit -m "<some-message>"
git push origin main
كيف أعمل أخطاء تصحيح الأخطاء أثناء نشر إجراءات GitHub؟
إذا فشلت خطوة في ملف سير عمل GitHub الذي تم إنشاؤه تلقائيا، فحاول تعديل الأمر الفاشل لإنشاء المزيد من الإخراج المطول. على سبيل المثال، يمكنك الحصول على المزيد من الإخراج من أي من dotnet
الأوامر عن طريق إضافة -v
الخيار . قم بتثبيت التغييرات ودفعها لتشغيل توزيع آخر إلى App Service.
الخطوات التالية
تقدم إلى البرنامج التعليمي التالي لمعرفة كيفية تأمين تطبيقك باستخدام مجال وشهادة مخصصين.
أو، يمكنك التحقق من الموارد الأخرى: