البرنامج التعليمي: نشر تطبيق ويب Node.js + MongoDB إلى Azure
توفر Azure App Service خدمة استضافة ويب قابلة للتطوير بدرجة كبيرة وذاتية التصحيح باستخدام نظام التشغيل Linux. يوضح هذا البرنامج التعليمي كيفية إنشاء تطبيق Node.js آمن في Azure App Service المتصل بقاعدة بيانات Azure Cosmos DB لقاعدة بيانات MongoDB . عند الانتهاء، سيكون لديك تطبيق Express.js يعمل على Azure App Service على Linux.
في هذا البرنامج التعليمي، تتعلم كيفية:
- إنشاء بنية آمنة افتراضيا ل Azure App Service وAzure Cosmos DB باستخدام MongoDB API.
- تأمين أسرار الاتصال باستخدام هوية مدارة ومراجع Key Vault.
- نشر نموذج تطبيق Node.js إلى App Service من مستودع GitHub.
- إعدادات تطبيق Acces App Service في التعليمات البرمجية للتطبيق.
- قم بإجراء التحديثات وإعادة توزيع التعليمات البرمجية للتطبيق.
- دفق سجلات التشخيص من App Service.
- إدارة التطبيق في مدخل Microsoft Azure.
- توفير نفس البنية والنشر باستخدام Azure Developer CLI.
- تحسين سير عمل التطوير الخاص بك باستخدام GitHub Codespaces وGitHub Copilot.
المتطلبات الأساسية
- حساب Azure مع اشتراك نشط. إذا لم يكن لديك حساب Azure، يمكنك إنشاء حساب مجانا.
- حساب GitHub. يمكنك أيضا الحصول على واحد مجانا.
- معرفة تطوير Express.js.
- (اختياري) لتجربة GitHub Copilot، حساب GitHub Copilot. يتوفر إصدار تجريبي مجاني لمدة 30 يوما.
- حساب Azure مع اشتراك نشط. إذا لم يكن لديك حساب Azure، يمكنك إنشاء حساب مجانا.
- تم تثبيت Azure Developer CLI . يمكنك اتباع الخطوات باستخدام Azure Cloud Shell لأنه يحتوي بالفعل على Azure Developer CLI مثبت.
- معرفة تطوير Express.js.
- (اختياري) لتجربة GitHub Copilot، حساب GitHub Copilot. يتوفر إصدار تجريبي مجاني لمدة 30 يوما.
تخطي إلى النهاية
يمكنك نشر نموذج التطبيق بسرعة في هذا البرنامج التعليمي ورؤيتها قيد التشغيل في Azure. ما عليك سوى تشغيل الأوامر التالية في Azure Cloud Shell، واتبع المطالبة:
mkdir msdocs-nodejs-mongodb-azure-sample-app
cd msdocs-nodejs-mongodb-azure-sample-app
azd init --template msdocs-nodejs-mongodb-azure-sample-app
azd up
1. تشغيل العينة
أولا، يمكنك إعداد نموذج تطبيق يستند إلى البيانات كنقطة بداية. لراحتك، يتضمن مستودع العينة تكوين حاوية التطوير. تحتوي حاوية التطوير على كل ما تحتاجه لتطوير تطبيق، بما في ذلك قاعدة البيانات وذاكرة التخزين المؤقت وجميع متغيرات البيئة التي يحتاجها نموذج التطبيق. يمكن تشغيل حاوية التطوير في مساحة التعليمات البرمجية GitHub، ما يعني أنه يمكنك تشغيل العينة على أي كمبيوتر باستخدام مستعرض ويب.
الخطوة 1: في نافذة مستعرض جديدة:
- قم بتسجيل الدخول إلى حساب GitHub الخاص بك.
- الانتقال إلى https://github.com/Azure-Samples/msdocs-nodejs-mongodb-azure-sample-app/fork.
- قم بإلغاء تحديد نسخ الفرع الرئيسي فقط. تريد جميع الفروع.
- حدد Create fork.
الخطوة 2: في نسخة GitHub:
- حدد main>starter-no-infra لفرع البداية. يحتوي هذا الفرع فقط على نموذج المشروع ولا يوجد ملفات أو تكوينات متعلقة ب Azure.
- حدد Code>Create codespace على starter-no-infra. تستغرق مساحة التعليمات البرمجية بضع دقائق لإعدادها.
الخطوة 3: في الوحدة الطرفية لمساحة التعليمات البرمجية:
- شغّل
npm install && npm start
. - عندما ترى الإعلام
Your application running on port 3000 is available.
، حدد فتح في المستعرض. يجب أن تشاهد نموذج التطبيق في علامة تبويب مستعرض جديدة. لإيقاف تطبيق Express.js، اكتبCtrl
+C
.
تلميح
يمكنك أن تسأل GitHub Copilot عن هذا المستودع. على سبيل المثال:
- @workspace ماذا يفعل هذا المشروع؟
- @workspace ماذا يفعل المجلد .devcontainer؟
هل تواجه مشكلات؟ تحقق من قسم استكشاف الأخطاء وإصلاحها.
2. إنشاء App Service وAzure Cosmos DB
في هذه الخطوة، يمكنك إنشاء موارد Azure. تنشئ الخطوات المستخدمة في هذا البرنامج التعليمي مجموعة من الموارد الآمنة بشكل افتراضي التي تتضمن App Service وAzure Cosmos DB ل MongoDB. بالنسبة لعملية الإنشاء، ستحدد:
- اسم تطبيق الويب. يتم استخدامه كجزء من اسم DNS لتطبيقك في شكل
https://<app-name>-<hash>.<region>.azurewebsites.net
. - المنطقة لتشغيل التطبيق فعلياً في العالم. كما يتم استخدامه كجزء من اسم DNS لتطبيقك.
- مكدس الذاكرة المؤقتة لوقت التشغيل للتطبيق. هو المكان الذي تحدد فيه إصدار Node لاستخدامه لتطبيقك.
- خطة الاستضافة للتطبيق. إنها طبقة الأسعار التي تتضمن مجموعة الميزات وسعة التحجيم لتطبيقك.
- مجموعة الموارد للتطبيق. تتيح لك مجموعة الموارد تجميع (في حاوية منطقية) جميع موارد Azure المطلوبة للتطبيق.
سجّل الدخول إلى مدخل Azure واتبع هذه الخطوات لإنشاء مورد Azure App Service.
الخطوة 1: في مدخل Microsoft Azure:
- أدخل "قاعدة بيانات تطبيق ويب" في شـريط البحث في أعلى مدخل Microsoft Azure.
- حدد العنصر المسمى تطبيق ويب + قاعدة بيانات ضمن عنوان Marketplace. يمكنك أيضا الانتقال إلى معالج الإنشاء مباشرة.
الخطوة 2: في صفحة إنشاء تطبيق ويب + قاعدة بيانات ، املأ النموذج كما يلي.
- Resource Group: حدد Create new واستخدم اسم msdocs-expressjs-mongodb-tutorial.
- المنطقة: أي منطقة Azure قريبة منك.
- الاسم: msdocs-expressjs-mongodb-XYZ، حيث XYZ هو أي ثلاثة أحرف عشوائية.
- مكدس وقت التشغيل: العقدة 20 LTS.
- المحرك: Cosmos DB API ل MongoDB. Azure Cosmos DB هي قاعدة بيانات سحابية أصلية تقدم واجهة برمجة تطبيقات متوافقة مع MongoDB بنسبة 100%. لاحظ اسم قاعدة البيانات الذي تم إنشاؤه لك (<app-name-database>). سوف تحتاجها لاحقًا.
- خطة الاستضافة: أساسية. عندما تكون مستعدا، يمكنك التوسع إلى مستوى تسعير الإنتاج.
- حدد "Review + create".
- وبعد اكتمال عملية التحقق، حدد Create.
الخطوة 3: يستغرق النشر بضع دقائق لإكماله. بعد اكتمال التوزيع، حدد الزر انتقال إلى المورد. يتم نقلك مباشرة إلى تطبيق App Service، ولكن يتم إنشاء الموارد التالية:
- مجموعة الموارد → الحاوية لكافة الموارد التي تم إنشاؤها.
- خطة خدمة التطبيق → تحدد موارد الحساب لخدمة التطبيق. يتم إنشاء خطة Linux في الطبقة الأساسية.
- تمثل خدمة التطبيقات → تطبيقك وتعمل في خطة خدمة التطبيق.
- → الشبكة الظاهرية متكاملة مع تطبيق خدمة التطبيق وتعزل نسبة استخدام الشبكة الخلفية.
- نقطة النهاية الخاصة → الوصول إلى نقطة النهاية لمورد قاعدة البيانات في الشبكة الظاهرية.
- واجهة الشبكة → تمثل عنوان IP خاصاً لنقطة النهاية الخاصة.
- → يمكن الوصول إلى Azure Cosmos DB ل MongoDB فقط من خلف نقطة النهاية الخاصة. يتم إنشاء قاعدة بيانات ومستخدم لك على الخادم.
- تمكن منطقة DNS الخاصة → دقة DNS لخادم Azure Cosmos DB في الشبكة الظاهرية.
هل تواجه مشكلات؟ تحقق من قسم استكشاف الأخطاء وإصلاحها.
3. تأمين أسرار الاتصال
قام معالج الإنشاء بإنشاء سلسلة الاتصال لك بالفعل كإعداد تطبيق. ومع ذلك، فإن أفضل ممارسة أمنية هي الاحتفاظ بأسرار خارج App Service تماما. ستقوم بنقل أسرارك إلى مخزن مفاتيح وتغيير إعداد التطبيق إلى مرجع Key Vault بمساعدة موصلات الخدمة.
الخطوة 1: في صفحة App Service:
- في القائمة اليسرى، حدد Settings > Environment variables.
- بجوار AZURE_COSMOS_CONNECTIONSTRING، حدد Show value. يتيح لك هذا سلسلة الاتصال الاتصال بقاعدة بيانات Cosmos DB المؤمنة خلف نقطة نهاية خاصة. ومع ذلك، يتم حفظ السر مباشرة في تطبيق App Service، وهو ليس الأفضل. ستغير هذا.
الخطوة 2: إنشاء مخزن رئيسي للإدارة الآمنة للبيانات السرية.
- في شريط البحث العلوي، اكتب "key vault"، ثم حدد Marketplace>Key Vault.
- في Resource Group، حدد msdocs-expressjs-mongodb-tutorial.
- في اسم Key vault، اكتب اسما يتكون من أحرف وأرقام فقط.
- في Region، قم بتعيينه إلى موقع العينة كمجموعة موارد.
الخطوة 3:
- حدد علامة التبويب Networking
- إلغاء تحديد تمكين الوصول العام.
- حدد Create a private endpoint.
- في Resource Group، حدد msdocs-expressjs-mongodb-tutorial.
- في اسم Key vault، اكتب اسما يتكون من أحرف وأرقام فقط.
- في Region، قم بتعيينه إلى موقع العينة كمجموعة موارد.
- في مربع الحوار، في الموقع، حدد نفس موقع تطبيق App Service.
- في Resource Group، حدد msdocs-expressjs-mongodb-tutorial.
- في Name، اكتب msdocs-expressjs-mongodb-XYZVaultEndpoint.
- في الشبكة الظاهرية، حدد msdocs-expressjs-mongodb-XYZVnet.
- في الشبكة الفرعية، msdocs-expressjs-mongodb-XYZSubnet.
- حدد موافق.
- حدد Review + create، ثم حدد Create. انتظر حتى ينتهي نشر مخزن المفاتيح. يجب أن ترى "اكتمل النشر الخاص بك. "
الخطوة 4:
- في شريط البحث العلوي، اكتب msdocs-expressjs-mongodb، ثم مورد App Service المسمى msdocs-expressjs-mongodb-XYZ.
- في صفحة App Service، في القائمة اليمنى، حدد Settings > Service Connector. يوجد بالفعل موصل، أنشأه معالج إنشاء التطبيق لك.
- حدد خانة الاختيار بجوار الموصل، ثم حدد تحرير.
- في علامة التبويب Basics ، قم بتعيين Client type إلى Node.js.
- حدد علامة التبويب مصادقة.
- حدد مخزن البيانات السرية في Key Vault.
- ضمن Key Vault Connection، حدد Create new. يتم فتح مربع حوار إنشاء اتصال أعلى مربع حوار التحرير.
الخطوة 5: في مربع الحوار إنشاء اتصال لاتصال Key Vault:
- في Key Vault، حدد key vault الذي أنشأته سابقا.
- حدد "استعراض + إنشاء". يجب أن ترى أنه تم تعيين الهوية المدارة المعينة من قبل النظام إلى Selected.
- عند اكتمال التحقق من الصحة، حدد إنشاء.
الخطوة 6: لقد عدت إلى مربع حوار التحرير ل defaultConnector.
- في علامة التبويب Authentication ، انتظر حتى يتم إنشاء موصل key vault. عند الانتهاء، تحددها القائمة المنسدلة اتصال Key Vault تلقائيا.
- حدد Next: Networking.
- حدد تكوين قواعد جدار الحماية لتمكين الوصول إلى الخدمة المستهدفة. إذا رأيت الرسالة "لا توجد نقطة نهاية خاصة على الخدمة الهدف"، فتجاهلها. قام معالج إنشاء التطبيق بالفعل بتأمين قاعدة بيانات Cosmos DB بنقطة نهاية خاصة.
- حدد حفظ. انتظر حتى يظهر إعلام نجاح التحديث.
الخطوة 7: للتحقق من التغييرات:
- من القائمة اليسرى، حدد متغيرات البيئة مرة أخرى.
- بجوار إعداد التطبيق AZURE_COSMOS_CONNECTIONSTRING، حدد Show value. يجب أن تكون
@Microsoft.KeyVault(...)
القيمة ، ما يعني أنها مرجع خزنة مفاتيح لأن السر تتم إدارته الآن في مخزن المفاتيح.
هل تواجه مشكلات؟ تحقق من قسم استكشاف الأخطاء وإصلاحها.
4. نشر نموذج التعليمات البرمجية
في هذه الخطوة، يمكنك تكوين نشر GitHub باستخدام GitHub Actions. إنها مجرد واحدة من العديد من الطرق للتوزيع في خدمة التطبيق، ولكنها أيضا طريقة رائعة للحصول على تكامل مستمر في عملية التوزيع الخاصة بك. بشكل افتراضي، git push
كل إلى مستودع GitHub الخاص بك تبدأ إجراء الإنشاء والتوزيع.
الخطوة 1: في القائمة اليمنى، حدد Deployment>Deployment Center.
الخطوة 2: في صفحة Deployment Center:
- في المصدر، حدد GitHub. بشكل افتراضي، يتم تحديد إجراءات GitHub كموفر بناء.
- سجل الدخول إلى حساب GitHub واتبع المطالبة لتخويل Azure.
- في المؤسسة، حدد حسابك.
- في المستودع، حدد msdocs-nodejs-mongodb-azure-sample-app.
- في Branch، حدد starter-no-infra. هذا هو نفس الفرع الذي عملت فيه مع نموذج التطبيق الخاص بك، دون أي ملفات أو تكوينات متعلقة ب Azure.
- بالنسبة لنوع المصادقة، حدد الهوية المعينة من قبل المستخدم.
- في القائمة العلوية، حدد حفظ. تلتزم App Service بملف سير عمل في مستودع GitHub المختار، في الدليل
.github/workflows
. بشكل افتراضي، ينشئ مركز التوزيع هوية معينة من قبل المستخدم لسير العمل للمصادقة باستخدام Microsoft Entra (مصادقة OIDC). للحصول على خيارات المصادقة البديلة، راجع النشر إلى App Service باستخدام GitHub Actions.
الخطوة 3: مرة أخرى في مساحة التعليمات البرمجية GitHub لنسخة المستودع الخاصة بك، قم بتشغيل git pull origin starter-no-infra
.
يؤدي هذا إلى سحب ملف سير العمل الملتزم به حديثا إلى مساحة التعليمات البرمجية الخاصة بك.
الخطوة 4 (الخيار 1: مع GitHub Copilot):
- ابدأ جلسة دردشة جديدة عن طريق تحديد طريقة عرض الدردشة، ثم تحديد +.
- اسأل، "@workspace كيف يتصل التطبيق بقاعدة البيانات؟" قد يشيرك Copilot إلى ملف app.js والمكالمة
mongoose.connect
. - قل، "*لدي متغير سلسلة الاتصال في Azure يسمى AZURE_COSMOS_CONNECTIONSTRING." قد يمنحك Copilot اقتراحا للتعليمات البرمجية مشابها لاقتراح في الخيار 2: دون خطوات GitHub Copilot أدناه وحتى إخبارك بإجراء التغيير في app.js.
- افتح app.js في المستكشف وأضف اقتراح التعليمات البرمجية في
getApp
الأسلوب . لا يمنحك GitHub Copilot نفس الرد في كل مرة، فقد تحتاج إلى طرح المزيد من الأسئلة لضبط استجابته. للحصول على تلميحات، راجع ما الذي يمكنني فعله باستخدام GitHub Copilot في مساحة التعليمات البرمجية الخاصة بي؟.
الخطوة 4 (الخيار 2: بدون GitHub Copilot):
- من المستكشف، افتح app.js.
- ابحث عن السطر الذي
mongoose.connect
يسمى (السطر 16) وقم بالتغييرprocess.env.MONGODB_URI
إلىprocess.env.AZURE_COSMOS_CONNECTIONSTRING || process.env.MONGODB_URI
.
الخطوة 5:
- حدد ملحق البرنامج للتحكم بالمصادر.
- في مربع النص، اكتب رسالة تثبيت مثل
Update environment variable
. أو حدد واسمح ل GitHub Copilot بإنشاء رسالة تثبيت لك. - حدد Commit، ثم قم بالتأكيد باستخدام Yes.
- حدد مزامنة التغييرات 1، ثم تأكد من موافق.
الخطوة 6: العودة إلى صفحة Deployment Center في مدخل Microsoft Azure:
- ضمن علامة التبويب Logs ، حدد Refresh. تم بالفعل بدء تشغيل نشر جديد من التغييرات الملتزم بها.
- في عنصر السجل لتشغيل النشر، حدد إدخال Build/Deploy Logs مع أحدث طابع زمني.
الخطوة 7: يتم نقلك إلى مستودع GitHub الخاص بك وترى أن إجراء GitHub قيد التشغيل. يحدد ملف سير العمل مرحلتين منفصلتين، الإنشاء والتوزيع. انتظر حتى يتم تشغيل GitHub لإظهار حالة مكتمل.
هل تواجه مشكلات؟ تحقق من قسم استكشاف الأخطاء وإصلاحها.
5. استعرض للوصول إلى التطبيق
الخطوة 1: في صفحة App Service:
- من القائمة اليسرى، حدد نظرة عامة.
- حدد عنوان URL لتطبيقك. يمكنك أيضًا الانتقال مباشرة إلى
https://<app-name>.azurewebsites.net
.
الخطوة 2: إضافة بعض المهام إلى القائمة. تهانينا، أنت تقوم بتشغيل تطبيق Node.js آمن مستند إلى البيانات في Azure App Service.
6. دفق سجلات التشخيص
تلتقط Azure App Service جميع الرسائل التي تم تسجيلها في وحدة التحكم لمساعدتك في تشخيص المشكلات المتعلقة بالتطبيق الخاص بك. يقوم نموذج التطبيق بإخراج رسائل سجل وحدة التحكم في كل نقطة من نقاط النهاية الخاصة به لتوضيح هذه الإمكانية. على سبيل المثال، تُصدر نقطة النهاية get
رسالة بشأن عدد المهام التي تم استردادها من قاعدة البيانات وتظهر رسالة خطأ إذا حدث خطأ ما.
router.get('/', function(req, res, next) {
Task.find()
.then((tasks) => {
const currentTasks = tasks.filter(task => !task.completed);
const completedTasks = tasks.filter(task => task.completed === true);
console.log(`Total tasks: ${tasks.length} Current tasks: ${currentTasks.length} Completed tasks: ${completedTasks.length}`)
res.render('index', { currentTasks: currentTasks, completedTasks: completedTasks });
})
.catch((err) => {
console.log(err);
res.send('Sorry! Something went wrong.');
});
});
الخطوة 1: في صفحة App Service:
- من القائمة اليسرى، حدد تسجيلات خدمة التطبيق.
- ضمن سجل التطبيقات، حدد نظام الملفات.
- في القائمة العلوية، حدد حفظ.
الخطوة 2: من القائمة اليسرى، حدد Log stream. ترى سجلات تطبيقك، بما في ذلك سجلات النظام الأساسي والسجلات من داخل الحاوية.
7. فحص الملفات المنشورة باستخدام Kudu
توفر Azure App Service وحدة تحكم تشخيصية مستندة إلى الويب تسمى Kudu تتيح لك فحص بيئة استضافة الخادم لتطبيق الويب الخاص بك. باستخدام Kudu، يمكنك عرض الملفات المنشورة في Azure، ومراجعة محفوظات نشر التطبيق، وحتى فتح جلسة SSH في بيئة الاستضافة.
الخطوة 1: في صفحة App Service:
- من القائمة اليمنى، حدد أدوات متقدمة.
- حدد Go. يمكنك أيضًا الانتقال مباشرة إلى
https://<app-name>.scm.azurewebsites.net
.
الخطوة 2: في صفحة Kudu، حدد Deployments.
إذا قمت بنشر التعليمات البرمجية إلى App Service باستخدام Git أو توزيع zip، فسترى محفوظات عمليات نشر تطبيق الويب الخاص بك.
الخطوة 3: ارجع إلى صفحة Kudu الرئيسية وحدد الموقع wwwroot.
يمكنك مشاهدة بنية المجلد المنشور وتحديد لاستعراض الملفات وعرضها.
8- تنظيف الموارد
عند الانتهاء، يمكنك حذف جميع الموارد من اشتراك Azure الخاص بك عن طريق حذف مجموعة الموارد.
الخطوة 1: في شريط البحث أعلى مدخل Microsoft Azure:
- أدخل اسم مجموعة الموارد.
- حدد مجموعة الموارد.
الخطوة 2: في صفحة مجموعة الموارد، حدد حذف مجموعة الموارد.
الخطوة 3:
- أدخل اسم مجموعة الموارد لتأكيد حذفك.
- حدد حذف.
2. إنشاء موارد Azure ونشر نموذج تطبيق
في هذه الخطوة، يمكنك إنشاء موارد Azure ونشر نموذج تطبيق إلى App Service على Linux. تنشئ الخطوات المستخدمة في هذا البرنامج التعليمي مجموعة من الموارد الآمنة بشكل افتراضي التي تتضمن App Service وAzure Cosmos DB.
تحتوي حاوية التطوير بالفعل على Azure Developer CLI (AZD).
من جذر المستودع، قم بتشغيل
azd init
.azd init --template nodejs-app-service-cosmos-redis-infra
عند المطالبة، قدم الإجابات التالية:
السؤال الإجابة الدليل الحالي غير فارغ. هل ترغب في تهيئة مشروع هنا في "<دليلك>"؟ السنة ماذا تريد أن تفعل بهذه الملفات؟ الاحتفاظ بالملفات الموجودة دون تغيير أدخل اسم بيئة جديدة اكتب اسم فريد. يستخدم قالب AZD هذا الاسم كجزء من اسم DNS لتطبيق الويب الخاص بك في Azure ( <app-name>-<hash>.azurewebsites.net
). يسمح بالأحرف الأبجدية الرقمية والواصلات.سجل الدخول إلى Azure عن طريق تشغيل
azd auth login
الأمر واتباع المطالبة:azd auth login
إنشاء موارد Azure الضرورية ونشر التعليمات البرمجية للتطبيق باستخدام
azd up
الأمر . اتبع المطالبة لتحديد الاشتراك والموقع المطلوبين لموارد Azure.azd up
azd up
يستغرق الأمر حوالي 15 دقيقة لإكماله (تستغرق ذاكرة التخزين المؤقت Redis معظم الوقت). كما أنه يقوم بتجميع ونشر التعليمات البرمجية للتطبيق الخاص بك، ولكنك ستقوم بتعديل التعليمات البرمجية الخاصة بك لاحقا للعمل مع App Service. أثناء تشغيله، يوفر الأمر رسائل حول عملية التوفير والنشر، بما في ذلك ارتباط إلى النشر في Azure. عند الانتهاء، يعرض الأمر أيضا ارتباطا إلى تطبيق التوزيع.يحتوي قالب AZD هذا على ملفات (azure.yaml والدليل infra ) التي تنشئ بنية آمنة بشكل افتراضي مع موارد Azure التالية:
- مجموعة الموارد: الحاوية لكافة الموارد التي تم إنشاؤها.
- خطة App Service: تحدد موارد الحوسبة ل App Service. يتم إنشاء خطة Linux في المستوى B1 .
- App Service: تمثل تطبيقك وتعمل في خطة App Service.
- الشبكة الظاهرية: متكاملة مع تطبيق App Service وتعزل حركة مرور الشبكة الخلفية.
- حساب Azure Cosmos DB مع MongoDB API: يمكن الوصول إليه فقط من وراء نقطة النهاية الخاصة به. يتم إنشاء قاعدة بيانات لك على الخادم.
- ذاكرة التخزين المؤقت Azure ل Redis: يمكن الوصول إليها فقط من داخل الشبكة الظاهرية.
- Key vault: يمكن الوصول إليه فقط من خلف نقطة النهاية الخاصة به. يستخدم لإدارة البيانات السرية لتطبيق App Service.
- نقاط النهاية الخاصة: الوصول إلى نقاط النهاية لمخزن المفاتيح وخادم قاعدة البيانات وذاكرة التخزين المؤقت Redis في الشبكة الظاهرية.
- مناطق DNS الخاصة: تمكين دقة DNS لقاعدة بيانات Cosmos DB وذاكرة التخزين المؤقت Redis وخزنة المفاتيح في الشبكة الظاهرية.
- مساحة عمل Log Analytics: تعمل كحاوية مستهدفة لتطبيقك لشحن سجلاته، حيث يمكنك أيضا الاستعلام عن السجلات.
بمجرد انتهاء الأمر من إنشاء الموارد ونشر التعليمات البرمجية للتطبيق في المرة الأولى، لا يعمل نموذج التطبيق المنشور بعد لأنه يجب إجراء تغييرات صغيرة لجعله يتصل بقاعدة البيانات في Azure.
3. التحقق من سلسلة الاتصال
قام قالب AZD الذي تستخدمه بإنشاء متغيرات الاتصال لك بالفعل كإعدادات تطبيق وإخراجها إلى المحطة الطرفية لراحتك. تعد إعدادات التطبيق إحدى الطرق للحفاظ على أسرار الاتصال خارج مستودع التعليمات البرمجية.
في إخراج AZD، ابحث عن إعداد
AZURE_COSMOS_CONNECTIONSTRING
التطبيق . يتم عرض أسماء الإعدادات فقط. تبدو كما يلي في إخراج AZD:App Service app has the following app settings: - AZURE_COSMOS_CONNECTIONSTRING - AZURE_REDIS_CONNECTIONSTRING - AZURE_KEYVAULT_RESOURCEENDPOINT - AZURE_KEYVAULT_SCOPE
AZURE_COSMOS_CONNECTIONSTRING
يحتوي على سلسلة الاتصال إلى قاعدة بيانات Cosmos DB في Azure. تحتاج إلى استخدامه في التعليمات البرمجية الخاصة بك لاحقا.لراحتك، يعرض لك قالب AZD الارتباط المباشر إلى صفحة إعدادات التطبيق. ابحث عن الارتباط وافتحه في علامة تبويب مستعرض جديدة.
هل تواجه مشكلات؟ تحقق من قسم استكشاف الأخطاء وإصلاحها.
4. تعديل نموذج التعليمات البرمجية وإعادة النشر
في مساحة التعليمات البرمجية GitHub، ابدأ جلسة دردشة جديدة بالنقر فوق طريقة عرض الدردشة ، ثم النقر فوق +.
اسأل، "@workspace كيف يتصل التطبيق بقاعدة البيانات؟" قد يشيرك Copilot إلى ملف app.js والمكالمة
mongoose.connect
.قل، "لدي متغير سلسلة الاتصال في Azure يسمى AZURE_COSMOS_CONNECTIONSTRING." قد يمنحك Copilot اقتراحا للتعليمات البرمجية مشابها لاقتراح في الخيار 2: دون خطوات GitHub Copilot أدناه وحتى إخبارك بإجراء التغيير في app.js.
افتح app.js في المستكشف وأضف اقتراح التعليمات البرمجية في
getApp
الأسلوب .لا يمنحك GitHub Copilot نفس الرد في كل مرة، فقد تحتاج إلى طرح المزيد من الأسئلة لضبط استجابته. للحصول على تلميحات، راجع ما الذي يمكنني فعله باستخدام GitHub Copilot في مساحة التعليمات البرمجية الخاصة بي؟.
مرة أخرى في المحطة الطرفية لمساحة التعليمات البرمجية، قم بتشغيل
azd deploy
.azd deploy
تلميح
يمكنك أيضا استخدام azd up
دائما فقط، والذي يقوم بجميع azd package
و azd provision
و.azd deploy
هل تواجه مشكلات؟ تحقق من قسم استكشاف الأخطاء وإصلاحها.
5. استعرض للوصول إلى التطبيق
في إخراج AZD، ابحث عن عنوان URL لتطبيقك وانتقل إليه في المستعرض. يبدو عنوان URL كما يلي في إخراج AZD:
Deploying services (azd deploy) (✓) Done: Deploying service web - Endpoint: https://<app-name>-<hash>.azurewebsites.net/
أضف القليل من المهام إلى القائمة.
تهانينا، أنت تقوم بتشغيل تطبيق ويب في Azure App Service، مع اتصال آمن ب Azure Cosmos DB.
هل تواجه مشكلات؟ تحقق من قسم استكشاف الأخطاء وإصلاحها.
6. دفق سجلات التشخيص
تلتقط Azure App Service جميع الرسائل التي تم تسجيلها في وحدة التحكم لمساعدتك في تشخيص المشكلات المتعلقة بالتطبيق الخاص بك. يقوم نموذج التطبيق بإخراج رسائل سجل وحدة التحكم في كل نقطة من نقاط النهاية الخاصة به لتوضيح هذه الإمكانية. على سبيل المثال، تُصدر نقطة النهاية get
رسالة بشأن عدد المهام التي تم استردادها من قاعدة البيانات وتظهر رسالة خطأ إذا حدث خطأ ما.
router.get('/', function(req, res, next) {
Task.find()
.then((tasks) => {
const currentTasks = tasks.filter(task => !task.completed);
const completedTasks = tasks.filter(task => task.completed === true);
console.log(`Total tasks: ${tasks.length} Current tasks: ${currentTasks.length} Completed tasks: ${completedTasks.length}`)
res.render('index', { currentTasks: currentTasks, completedTasks: completedTasks });
})
.catch((err) => {
console.log(err);
res.send('Sorry! Something went wrong.');
});
});
في إخراج AZD، ابحث عن الارتباط لدفق سجلات App Service وانتقل إليه في المتصفح. يبدو الارتباط كما يلي في إخراج AZD:
Stream App Service logs at: https://portal.azure.com/#@/resource/subscriptions/<subscription-guid>/resourceGroups/<group-name>/providers/Microsoft.Web/sites/<app-name>/logStream
تعرف على المزيد حول تسجيل الدخول إلى تطبيقات Java في السلسلة على تمكين Azure Monitor OpenTelemetry لتطبيقات .NET Node.js وPython وJava.
هل تواجه مشكلات؟ تحقق من قسم استكشاف الأخطاء وإصلاحها.
7. تنظيف الموارد
لحذف كافة موارد Azure في بيئة النشر الحالية، قم بتشغيل azd down
المطالبات واتبعها.
azd down
استكشاف الأخطاء وإصلاحها
- تظهر طريقة عرض نشر المدخل ل Azure Cosmos DB حالة تعارض
- صفحة المتصفح للتطبيق المنشور تقول "حدث خطأ ما".
تظهر طريقة عرض نشر المدخل ل Azure Cosmos DB حالة تعارض
اعتمادا على اشتراكك والمنطقة التي تحددها، قد ترى حالة النشر ل Azure Cosmos DB لتكون Conflict
، مع الرسالة التالية في تفاصيل العملية:
Sorry, we are currently experiencing high demand in <region> region, and cannot fulfill your request at this time.
من المرجح أن يكون الخطأ ناتجا عن حد اشتراكك للمنطقة التي تحددها. حاول اختيار منطقة مختلفة للتوزيع.
صفحة المتصفح للتطبيق المنشور تقول "حدث خطأ ما".
ربما لا تزال بحاجة إلى إجراء تغييرات سلسلة الاتصال في التعليمات البرمجية للتطبيق الخاص بك. انظر 4. نشر نموذج التعليمات البرمجية.
الأسئلة الشائعة
- كم يكلف هذا الإعداد؟
- كيف أعمل الاتصال بخادم Azure Cosmos DB المؤمن خلف الشبكة الظاهرية باستخدام أدوات أخرى؟
- كيف يعمل تطوير التطبيقات المحلية مع إجراءات GitHub؟
- لماذا توزيع إجراءات GitHub بطيء جدًا؟
- ليس لدي أذونات لإنشاء هوية معينة من قبل المستخدم
- ماذا يمكنني أن أفعل مع GitHub Copilot في مساحة التعليمات البرمجية الخاصة بي؟
كم يكلف هذا الإعداد؟
تسعير الموارد التي تم إنشاؤها كما يلي:
- يتم إنشاء خطة App Service في الطبقة الأساسية، ويمكن تغيير حجمها زيادة أو نقصانًا. راجع تسعير App Service.
- يتم إنشاء خادم Azure Cosmos DB في منطقة واحدة ويمكن توزيعه على مناطق أخرى. راجع أسعار Azure Cosmos DB.
- لا تتحمل الشبكة الظاهرية رسوما ما لم تقم بتكوين وظائف إضافية، مثل التناظر. راجع أسعار شبكة Azure الظاهرية.
- تتحمل منطقة DNS الخاصة رسوما صغيرة. راجع أسعار Azure DNS.
كيف أعمل الاتصال بخادم Azure Cosmos DB المؤمن خلف الشبكة الظاهرية باستخدام أدوات أخرى؟
- للوصول الأساسي من أداة سطر الأوامر، يمكنك التشغيل
mongosh
من وحدة SSH الطرفية للتطبيق. لا تأتي حاوية التطبيق معmongosh
، لذا يجب عليك تثبيتها يدوياً. تذكر أن العميل المثبت لا يستمر عبر عمليات إعادة تشغيل التطبيق. - للاتصال من عميل MongoDB GUI، يجب أن يكون جهازك داخل الشبكة الظاهرية. على سبيل المثال، قد يكون جهاز Azure ظاهري متصل بإحدى الشبكات الفرعية، أو جهازا في شبكة محلية لديه اتصال VPN من موقع إلى موقع مع شبكة Azure الظاهرية.
- للاتصال من MongoDB shell من صفحة إدارة Azure Cosmos DB في المدخل، يجب أن يكون جهازك أيضا داخل الشبكة الظاهرية. يمكنك بدلا من ذلك فتح جدار حماية خادم Azure Cosmos DB لعنوان IP الخاص بالجهاز المحلي، ولكنه يزيد من سطح الهجوم للتكوين الخاص بك.
كيف يعمل تطوير التطبيقات المحلية مع إجراءات GitHub؟
خذ ملف سير العمل الذي تم إنشاؤه تلقائيا من خدمة التطبيق كمثال، git push
كل يبدأ تشغيل بنية وتوزيع جديد. من نسخة محلية من مستودع GitHub، يمكنك إجراء التحديثات المطلوبة دفعه إلى GitHub. على سبيل المثال:
git add .
git commit -m "<some-message>"
git push origin main
لماذا توزيع إجراءات GitHub بطيء جدًا؟
يعرف ملف سير العمل الذي تم إنشاؤه تلقائيا من خدمة التطبيق البناء ثم التوزيع والتشغيل على وظيفتين. لأن كل مهمة تعمل في بيئتها النظيفة الخاصة، يضمن ملف سير العمل أن deploy
الوظيفة لديها حق الوصول إلى الملفات من build
الوظيفة:
- في نهاية المهمة
build
، قم بتحميل الملفات كقطع أثرية. - في بداية المهمة
deploy
، قم بتنزيل البيانات الاصطناعية.
يتم إنفاق معظم الوقت الذي تستغرقه العملية المكونة من وظيفتين في تحميل وتنزيل البيانات الاصطناعية. إذا أردت، يمكنك تبسيط ملف سير العمل عن طريق دمج الوظيفتين في واحدة، ما يلغي الحاجة إلى خطوات التحميل والتنزيل.
ليس لدي أذونات لإنشاء هوية معينة من قبل المستخدم
راجع إعداد نشر إجراءات GitHub من مركز النشر.
ماذا يمكنني أن أفعل مع GitHub Copilot في مساحة التعليمات البرمجية الخاصة بي؟
قد تلاحظ أن طريقة عرض دردشة GitHub Copilot كانت موجودة بالفعل لك عند إنشاء مساحة التعليمات البرمجية. لراحتك، نقوم بتضمين ملحق دردشة GitHub Copilot في تعريف الحاوية (راجع .devcontainer/devcontainer.json). ومع ذلك، تحتاج إلى حساب GitHub Copilot (يتوفر إصدار تجريبي مجاني لمدة 30 يوما).
بعض النصائح لك عند التحدث إلى GitHub Copilot:
- في جلسة دردشة واحدة، تعتمد الأسئلة والأجوبة على بعضها البعض ويمكنك ضبط أسئلتك لضبط الإجابة التي تحصل عليها.
- بشكل افتراضي، لا يملك GitHub Copilot حق الوصول إلى أي ملف في المستودع الخاص بك. لطرح أسئلة حول ملف، افتح الملف في المحرر أولا.
- للسماح ل GitHub Copilot بالوصول إلى جميع الملفات في المستودع عند إعداد إجاباته، ابدأ سؤالك ب
@workspace
. لمزيد من المعلومات، انظر Use the @workspace agent. - في جلسة الدردشة، يمكن ل GitHub Copilot اقتراح تغييرات و (مع
@workspace
) حتى مكان إجراء التغييرات، ولكن لا يسمح بإجراء التغييرات نيابة عنك. الأمر متروك لك لإضافة التغييرات المقترحة واختبارها.
فيما يلي بعض الأشياء الأخرى التي يمكنك قولها لضبط الإجابة التي تحصل عليها:
- @workspace أين يتم تعريف MONGODB_URI؟
- ما الملف الذي أقوم بإجراء التغيير فيه؟
- هل سيقطع هذا التغيير تطبيقي عند التشغيل محليا؟