مشاركة عبر


البرنامج التعليمي: نشر تطبيق ويب Node.js + MongoDB إلى Azure

يوضح هذا الدرس كيفية إنشاء تطبيق Node.js آمن في Azure App Service متصل بقاعدة بيانات Azure Cosmos لقاعدة بيانات MongoDB . توفر Azure App Service خدمة استضافة ويب قابلة للتطوير بدرجة كبيرة وذاتية التصحيح باستخدام نظام التشغيل Linux. عندما تنتهي، سيكون لديك تطبيق Express.js يعمل على Azure App Service على لينكس.

لقطة شاشة لتطبيق Node.js يخزن البيانات في Cosmos DB.

في هذا البرنامج التعليمي، تتعلم كيفية:

  • إنشاء بنية آمنة افتراضيا ل Azure App Service وAzure Cosmos DB باستخدام MongoDB API.
  • تأمين أسرار الاتصال باستخدام هوية مدارة ومراجع Key Vault.
  • نشر نموذج تطبيق Node.js إلى App Service من مستودع GitHub.
  • الوصول إلى إعدادات تطبيق App Service في التعليمات البرمجية للتطبيق.
  • قم بإجراء التحديثات وإعادة توزيع التعليمات البرمجية للتطبيق.
  • دفق سجلات التشخيص من App Service.
  • إدارة التطبيق في مدخل Microsoft Azure.
  • توفير نفس البنية والنشر باستخدام Azure Developer CLI.
  • تحسين سير عمل التطوير الخاص بك باستخدام GitHub Codespaces وGitHub Copilot.

المتطلبات الأساسية

  • حساب 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

تشغيل تطبيق العرض التوضيحي

قم بإعداد تطبيق نموذجي قائم على البيانات كنقطة انطلاق. يتضمن مستودع العينات تكوين حاوية التطوير . حاوية التطوير تحتوي على كل ما تحتاجه لتطوير تطبيق. يشمل قاعدة البيانات، وذاكرة التخزين المؤقت، وجميع متغيرات البيئة التي يحتاجها التطبيق النموذجي. يمكن تشغيل حاوية التطوير في مساحة التعليمات البرمجية GitHub، ما يعني أنه يمكنك تشغيل العينة على أي كمبيوتر باستخدام مستعرض ويب.

الخطوة 1: في نافذة مستعرض جديدة:

  1. قم بتسجيل الدخول إلى حساب GitHub الخاص بك.
  2. الانتقال إلى https://github.com/Azure-Samples/msdocs-nodejs-mongodb-azure-sample-app/fork.
  3. قم بإلغاء تحديد نسخ الفرع الرئيسي فقط. تريد جميع الفروع.
  4. حدد Create fork.

الخطوة 2: في نسخة GitHub:

  1. حدد main>starter-no-infra لفرع البداية. يحتوي هذا الفرع فقط على نموذج المشروع ولا يوجد ملفات أو تكوينات متعلقة ب Azure.
  2. حدد Code>Create codespace على starter-no-infra. تستغرق مساحة التعليمات البرمجية بضع دقائق لإعدادها.

الخطوة 3: في الوحدة الطرفية لمساحة التعليمات البرمجية:

  1. شغّل npm install && npm start.
  2. عندما ترى الإعلام Your application running on port 3000 is available.، حدد فتح في المستعرض. يجب أن ترى نموذج التطبيق في تبويب جديد في المتصفح.
  3. لإيقاف تطبيق Express.js، اكتب Ctrl+C.

تلميح

يمكنك أن تسأل GitHub Copilot عن هذا المستودع. على سبيل المثال:

  • @workspace ماذا يفعل هذا المشروع؟
  • @workspace ماذا يفعل المجلد .devcontainer؟

هل تواجه مشكلات؟ تحقق من قسم استكشاف الأخطاء وإصلاحها.

Create App Service و Azure Cosmos DB

في هذه الخطوة، يمكنك إنشاء موارد Azure. تنشئ الخطوات المستخدمة في هذا البرنامج التعليمي مجموعة من الموارد الآمنة بشكل افتراضي التي تتضمن App Service وAzure Cosmos DB ل MongoDB. بالنسبة لعملية الإنشاء، يمكنك تحديد:

  • اسم تطبيق الويب. هذا جزء من اسم DNS لتطبيقك.
  • المنطقة لتشغيل التطبيق فعلياً في العالم. كما أنه جزء من اسم DNS لتطبيقك.
  • مكدس الذاكرة المؤقتة لوقت التشغيل للتطبيق. هو المكان الذي تحدد فيه إصدار Node لاستخدامه لتطبيقك.
  • خطة الاستضافة للتطبيق. إنها طبقة الأسعار التي تتضمن مجموعة الميزات وسعة التحجيم لتطبيقك.
  • مجموعة الموارد للتطبيق. تتيح لك مجموعة الموارد تجميع (في حاوية منطقية) جميع موارد Azure المطلوبة للتطبيق.

سجّل الدخول إلى مدخل Azure واتبع هذه الخطوات لإنشاء مورد Azure App Service.

الخطوة 1: في مدخل Microsoft Azure:

  1. أدخل "قاعدة بيانات تطبيق ويب" في شـريط البحث في أعلى مدخل Microsoft Azure.
  2. حدد العنصر المسمى تطبيق ويب + قاعدة بيانات ضمن عنوان Marketplace. يمكنك أيضا التوجه مباشرة إلى إنشاء تطبيق ويب + قاعدة بيانات .

الخطوة 2: في صفحة إنشاء تطبيق ويب + قاعدة بيانات ، املأ النموذج كما يلي.

  1. Resource Group: حدد Create new واستخدم اسم msdocs-expressjs-mongodb-tutorial.
  2. المنطقة: أي منطقة Azure قريبة منك.
  3. الاسم: msdocs-expressjs-mongodb-XYZ، حيث XYZ هو أي ثلاثة أحرف عشوائية.
  4. مكدس وقت التشغيل: Node 24 LTS.
  5. المحرك: Cosmos DB API ل MongoDB. Azure Cosmos DB هي قاعدة بيانات سحابية أصلية تقدم واجهة برمجة تطبيقات متوافقة مع MongoDB بنسبة 100%. لاحظ اسم قاعدة البيانات الذي تم إنشاؤه لك (<app-name-database>). سوف تحتاجها لاحقًا.
  6. خطة الاستضافة: أساسية. عندما تكون مستعدا، يمكنك التوسع إلى مستوى تسعير الإنتاج.
  7. حدد "Review + create".
  8. وبعد اكتمال عملية التحقق، حدد Create.

الخطوة 3: يستغرق النشر بضع دقائق لإكماله. بعد اكتمال التوزيع، حدد «Go to resource». يتم نقلك مباشرة إلى تطبيق خدمة التطبيق. تم إنشاء الموارد التالية:

  • مجموعة الموارد → الحاوية لكافة الموارد التي تم إنشاؤها.
  • خطة خدمة التطبيق → تحدد موارد الحساب لخدمة التطبيق. يتم إنشاء خطة Linux في الطبقة الأساسية.
  • تمثل خدمة التطبيقات → تطبيقك وتعمل في خطة خدمة التطبيق.
  • الشبكة الظاهرية متكاملة مع تطبيق خدمة التطبيق وتعزل نسبة استخدام الشبكة الخلفية.
  • نقطة النهاية الخاصة → الوصول إلى نقطة النهاية لمورد قاعدة البيانات في الشبكة الظاهرية.
  • واجهة الشبكة → تمثل عنوان IP خاصاً لنقطة النهاية الخاصة.
  • → يمكن الوصول إلى Azure Cosmos DB ل MongoDB فقط من خلف نقطة النهاية الخاصة. يتم إنشاء قاعدة بيانات ومستخدم لك على الخادم.
  • تمكن منطقة DNS الخاصة → دقة DNS لخادم Azure Cosmos DB في الشبكة الظاهرية.

هل تواجه مشكلات؟ تحقق من قسم استكشاف الأخطاء وإصلاحها.

أسرار الاتصال الآمن

النشر يولد سلسلة الاتصال الخاصة بك بالفعل كإعداد تطبيق. ومع ذلك، فإن أفضل ممارسة أمنية هي الاحتفاظ بأسرار خارج App Service تماما. انقل أسرارك إلى خزنة المفاتيح وغير إعداد تطبيقك إلى مرجع خزنة المفاتيح بمساعدة Service Connectors.

الخطوة 1: في صفحة App Service:

  1. في القائمة اليسرى، حدد Settings > Environment variables.
  2. بجوار AZURE_COSMOS_CONNECTIONSTRING، حدد Show value. يتيح لك هذا سلسلة الاتصال الاتصال بقاعدة بيانات Cosmos DB المؤمنة خلف نقطة نهاية خاصة. السر محفوظ مباشرة في تطبيق خدمة التطبيقات، وهو ليس الأفضل. ستغير هذا التكوين.

الخطوة 2: إنشاء مخزن رئيسي للإدارة الآمنة للبيانات السرية.

  1. في شريط البحث العلوي، اكتب خزنة المفاتيح، ثم اخترخزنة مفاتيحالسوق>.
  2. في Resource Group، حدد msdocs-expressjs-mongodb-tutorial.
  3. في اسم Key vault، اكتب اسما يتكون من أحرف وأرقام فقط.
  4. في Region، قم بتعيينه إلى موقع العينة كمجموعة موارد.

الخطوة 3:

  1. حدد علامة التبويب Networking
  2. إلغاء تحديد تمكين الوصول العام.
  3. حدد Create a private endpoint.
  4. في Resource Group، حدد msdocs-expressjs-mongodb-tutorial.
  5. في اسم Key vault، اكتب اسما يتكون من أحرف وأرقام فقط.
  6. في الموقع، قم بتعيين موقع العينة كمجموعة الموارد.
  7. في مربع الحوار، في الموقع، حدد نفس موقع تطبيق App Service.
  8. في مجموعة الموارد، اختر مجموعة الموارد، مثل msdocs-expressjs-mongodb-tutorial.
  9. في الاسم، أدخل اسما مثل msdocs-expressjs-mongodb-VaultEndpoint.
  10. في الشبكة الافتراضية، اختر msdocs-expressjs-mongodbVnet.
  11. في Subnet، اختر msdocs-expressjs-mongodb-XYZSubnet.
  12. حدد موافق.
  13. حدد Review + create، ثم حدد Create. انتظر حتى ينتهي نشر مخزن المفاتيح. يجب أن ترى أن نشرك قد اكتمل.

الخطوة 4:

  1. في شريط البحث العلوي، اكتب msdocs-expressjs-mongodb، ثم مورد خدمة التطبيقات المسمى msdocs-expressjs-mongodb.
  2. في صفحة خدمة التطبيقات، في القائمة اليسرى، اختر موصل خدمة الإعدادات>. يوجد بالفعل موصل، أنشأه معالج إنشاء التطبيق لك.
  3. حدد خانة الاختيار بجوار الموصل، ثم حدد تحرير.
  4. في علامة التبويب Basics ، قم بتعيين Client type إلى Node.js.
  5. حدد علامة التبويب مصادقة.
  6. حدد مخزن البيانات السرية في Key Vault.
  7. ضمن Key Vault Connection، حدد Create new. يتم فتح مربع حوار إنشاء اتصال أعلى مربع حوار التحرير.

الخطوة 5: في مربع الحوار إنشاء اتصال لاتصال Key Vault:

  1. في Key Vault، حدد key vault الذي أنشأته سابقا.
  2. حدد "استعراض + إنشاء". يجب أن ترى أنه تم تعيين الهوية المدارة المعينة من قبل النظام إلى Selected.
  3. عند اكتمال التحقق من الصحة، حدد إنشاء.

الخطوة 6: لقد عدت إلى مربع حوار التحرير ل defaultConnector.

  1. في علامة التبويب Authentication ، انتظر حتى يتم إنشاء موصل key vault. عند الانتهاء، يقوم منسدل Key Vault Connection بتحديده تلقائيا.
  2. حدد Next: Networking.
  3. حدد تكوين قواعد جدار الحماية لتمكين الوصول إلى الخدمة المستهدفة. إذا رأيت الرسالة "لا توجد نقطة نهاية خاصة على الخدمة الهدف"، فتجاهلها. عملية إنشاء التطبيق كانت قد أمنت بالفعل قاعدة بيانات Cosmos DB بنقطة نهاية خاصة.
  4. حدد حفظ. انتظر حتى ينجح التحديث .

الخطوة 7: للتحقق من التغييرات:

  1. من القائمة اليسرى، حدد متغيرات البيئة مرة أخرى.
  2. بجوار إعداد التطبيق AZURE_COSMOS_CONNECTIONSTRING، حدد Show value. يجب أن تكون @Microsoft.KeyVault(...)القيمة ، مما يعني أنها مرجع لخزنة المفاتيح. السر الآن يدار في خزنة المفاتيح.

هل تواجه مشكلات؟ تحقق من قسم استكشاف الأخطاء وإصلاحها.

نشر نموذج الكود

في هذه الخطوة، يمكنك تكوين نشر GitHub باستخدام GitHub Actions. إنها مجرد واحدة من العديد من الطرق للتوزيع في خدمة التطبيق، ولكنها أيضا طريقة رائعة للحصول على تكامل مستمر في عملية التوزيع الخاصة بك. بشكل افتراضي، git push كل إلى مستودع GitHub الخاص بك تبدأ إجراء الإنشاء والتوزيع.

الخطوة 1: في القائمة اليمنى، حدد Deployment>Deployment Center.

الخطوة 2: في صفحة مركز النشر :

  1. في المصدر، حدد GitHub. بشكل افتراضي، يتم تحديد إجراءات GitHub كموفر بناء.
  2. سجل الدخول إلى حساب GitHub واتبع المطالبة لتخويل Azure.
  3. في المؤسسة، حدد حسابك.
  4. في المستودع، حدد msdocs-nodejs-mongodb-azure-sample-app.
  5. في Branch، حدد starter-no-infra. هذا الفرع هو نفس الفرع الذي عملت فيه مع تطبيق نموذجي، بدون أي ملفات أو إعدادات متعلقة ب Azure.
  6. بالنسبة لنوع المصادقة، حدد الهوية المعينة من قبل المستخدم.
  7. في القائمة العلوية، حدد حفظ. تلتزم App Service بملف سير عمل في مستودع GitHub المختار، في الدليل .github/workflows. بشكل افتراضي، ينشئ مركز التوزيع هوية معينة من قبل المستخدم لسير العمل للمصادقة باستخدام Microsoft Entra (مصادقة OIDC). للحصول على خيارات المصادقة البديلة، راجع النشر إلى App Service باستخدام GitHub Actions.

الخطوة 3: مرة أخرى في مساحة التعليمات البرمجية GitHub لنسخة المستودع الخاصة بك، قم بتشغيل git pull origin starter-no-infra. هذا الأمر يسحب ملف سير العمل الجديد إلى مساحة الشيفرة الخاصة بك.

الخطوة 4 (الخيار 1: مع GitHub Copilot):

  1. ابدأ جلسة دردشة جديدة عن طريق تحديد طريقة عرض الدردشة، ثم تحديد +.
  2. اسأل، "@workspace كيف يتصل التطبيق بقاعدة البيانات؟" قد يشيرك Copilot إلى ملف app.js والمكالمة mongoose.connect .
  3. مثلا، لدي متغير سلسلة اتصال في Azure يسمى AZURE_COSMOS_CONNECTIONSTRING. قد يعطيك Copilot اقتراحا بكود مشابه لما في الخيار الثاني: بدون GitHub يخطو Copilot ويطلب منك إجراء التغيير في app.js.
  4. افتح app.js في المستكشف وأضف اقتراح التعليمات البرمجية في getApp الأسلوب . GitHub Copilot لا يعطيك نفس الرد في كل مرة. قد تحتاج إلى طرح المزيد من الأسئلة لضبط استجابتها. للحصول على تلميحات، راجع ما الذي يمكنني فعله باستخدام GitHub Copilot في مساحة التعليمات البرمجية الخاصة بي؟.

الخطوة 4 (الخيار 2: بدون GitHub Copilot):

  1. من المستكشف، افتح app.js.
  2. ابحث عن السطر الذي mongoose.connect يسمى (السطر 16) وقم بالتغيير process.env.MONGODB_URI إلى process.env.AZURE_COSMOS_CONNECTIONSTRING || process.env.MONGODB_URI.

الخطوة 5:

  1. حدد ملحق البرنامج للتحكم بالمصادر.
  2. في مربع النص، اكتب رسالة تثبيت مثل Update environment variable. أو حدد واسمح ل GitHub Copilot بإنشاء رسالة تثبيت لك.
  3. حدد Commit، ثم قم بالتأكيد باستخدام Yes.
  4. حدد مزامنة التغييرات 1، ثم تأكد من موافق.

الخطوة 6: في صفحة مركز النشر في بوابة Azure:

  1. ضمن علامة التبويب Logs ، حدد Refresh. تم بالفعل بدء تشغيل نشر جديد من التغييرات الملتزم بها.
  2. في عنصر السجل لتشغيل النشر، حدد إدخال Build/Deploy Logs مع أحدث طابع زمني.

الخطوة 7: يتم نقلك إلى مستودع GitHub الخاص بك وترى أن إجراء GitHub قيد التشغيل. ملف سير العمل يحدد مرحلتين: البناءوالنشر. انتظر حتى يتم تشغيل GitHub لإظهار حالة مكتمل.

هل تواجه مشكلات؟ تحقق من قسم استكشاف الأخطاء وإصلاحها.

استعرض التطبيق

الخطوة 1: في صفحة App Service:

  1. من القائمة اليسرى، حدد نظرة عامة.
  2. حدد عنوان URL لتطبيقك.

الخطوة 2: إضافة بعض المهام إلى القائمة. تهانينا، أنت تقوم بتشغيل تطبيق Node.js آمن مستند إلى البيانات في Azure App Service.

دفق سجلات التشخيص

تلتقط 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:

  1. من القائمة اليسرى، حدد تسجيلات خدمة التطبيق.
  2. ضمن سجل التطبيقات، حدد نظام الملفات.
  3. في القائمة العلوية، حدد حفظ.

الخطوة 2: من القائمة اليسرى، حدد Log stream. ترى سجلات تطبيقك، بما في ذلك سجلات النظام الأساسي والسجلات من داخل الحاوية.

فحص الملفات المنشورة باستخدام Kudu

يوفر Azure App Service وحدة تحكم تشخيصية قائمة على الويب باسم Kudu. تتيح لك وحدة التحكم فحص بيئة استضافة الخادم لتطبيق الويب الخاص بك. باستخدام Kudu، يمكنك عرض الملفات المنشورة في Azure، ومراجعة محفوظات نشر التطبيق، وحتى فتح جلسة SSH في بيئة الاستضافة.

الخطوة 1: في صفحة App Service:

  1. من القائمة اليسرى، اختر أدوات> التطويرالمتقدمة.
  2. حدد Go.

الخطوة 2: في صفحة Kudu، حدد Deployments.

إذا قمت بنشر التعليمات البرمجية إلى App Service باستخدام Git أو توزيع zip، فسترى محفوظات عمليات نشر تطبيق الويب الخاص بك.

الخطوة 3: ارجع إلى صفحة Kudu الرئيسية وحدد الموقع wwwroot.

يمكنك مشاهدة بنية المجلد المنشور وتحديد لاستعراض الملفات وعرضها.

تنظيف الموارد

عند الانتهاء، يمكنك حذف جميع الموارد من اشتراك Azure الخاص بك عن طريق حذف مجموعة الموارد.

الخطوة 1: في شريط البحث أعلى مدخل Microsoft Azure:

  1. أدخل اسم مجموعة الموارد.
  2. حدد مجموعة الموارد.

الخطوة 2: في صفحة مجموعة الموارد، حدد حذف مجموعة الموارد.

الخطوة 3:

  1. لتأكيد الحذف، أدخل اسم مجموعة الموارد.
  2. حدد حذف.

إنشاء موارد Azure ونشر تطبيق نموذجي

في هذا القسم، تنشئ موارد Azure وتنشر تطبيق نموذجي على App Service على لينكس. تنشئ الخطوات المستخدمة في هذا البرنامج التعليمي مجموعة من الموارد الآمنة بشكل افتراضي التي تتضمن App Service وAzure Cosmos DB.

تحتوي حاوية التطوير بالفعل على Azure Developer CLI (AZD).

  1. من جذر المستودع، قم بتشغيل azd init.

    azd init --template nodejs-app-service-cosmos-redis-infra
    
  2. عند المطالبة، قدم الإجابات التالية:

    السؤال الإجابة
    الدليل الحالي ليس فارغا. هل ترغب في تهيئة مشروع هنا في <your-directory>؟ السنة
    ماذا تريد أن تفعل بهذه الملفات؟ الاحتفاظ بالملفات الموجودة دون تغيير
    أدخل اسم بيئة جديدة اكتب اسم فريد. يستخدم قالب AZD هذا الاسم كجزء من اسم DNS لتطبيق الويب الخاص بك في Azure (<app-name>-<hash>.azurewebsites.net). يسمح بالأحرف الأبجدية الرقمية والواصلات.
  3. سجل الدخول إلى Azure عن طريق تشغيل azd auth login الأمر واتباع المطالبة:

    azd auth login
    
  4. إنشاء موارد Azure الضرورية ونشر التعليمات البرمجية للتطبيق باستخدام azd up الأمر . اتبع المطالبة لتحديد الاشتراك والموقع المطلوبين لموارد Azure.

    azd up
    

    يستغرق الأمر azd up حوالي 15 دقيقة لإتمامه. ذاكرة Redis الاحتياطية تستغرق أكبر وقت ممكن. كما يقوم الأمر بتجميع ونشر كود التطبيق. تقوم بتعديل كودك لاحقا ليعمل مع App Service.

    أثناء التشغيل، يوفر الأمر رسائل حول عملية التوفير والنشر، بما في ذلك رابط للنشر في أزور. عند الانتهاء، يعرض الأمر أيضا ارتباطا إلى تطبيق التوزيع.

    يحتوي قالب 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.

تحقق من سلاسل الاتصال

قام قالب AZD الذي تستخدمه بإنشاء متغيرات الاتصال لك بالفعل كإعدادات تطبيق وإخراجها إلى المحطة الطرفية لراحتك. تعد إعدادات التطبيق إحدى الطرق للحفاظ على أسرار الاتصال خارج مستودع التعليمات البرمجية.

  1. في إخراج 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. تحتاج إلى استخدامه في التعليمات البرمجية الخاصة بك لاحقا.

  2. قالب AZD يعرض لك الرابط المباشر لصفحة إعدادات التطبيق في التطبيق. ابحث عن الارتباط وافتحه في علامة تبويب مستعرض جديدة.

هل تواجه مشكلات؟ تحقق من قسم استكشاف الأخطاء وإصلاحها.

تعديل كود العينة وإعادة النشر

  1. في مساحة التعليمات البرمجية GitHub، ابدأ جلسة دردشة جديدة بالنقر فوق طريقة عرض الدردشة ، ثم النقر فوق +.

  2. اسأل، @workspace كيف يتصل التطبيق بقاعدة البيانات؟ قد يوجهك المساعد إلى ملف app.js والمكالمة mongoose.connect .

  3. مثلا، لدي متغير سلسلة اتصال في Azure يسمى AZURE_COSMOS_CONNECTIONSTRING. قد يعطيك Copilot اقتراحا مشابها لما في الخيار الثاني: بدون GitHub، سيخطو Copilot وحتى يطلب منك إجراء التغيير فيapp.js.

  4. افتح app.js في المستكشف وأضف اقتراح التعليمات البرمجية في getApp الأسلوب .

    GitHub Copilot لا يعطيك نفس الرد في كل مرة. قد تحتاج إلى طرح المزيد من الأسئلة لضبط استجابتها. للحصول على تلميحات، راجع ما الذي يمكنني فعله باستخدام GitHub Copilot في مساحة التعليمات البرمجية الخاصة بي؟.

  5. مرة أخرى في المحطة الطرفية لمساحة التعليمات البرمجية، قم بتشغيل azd deploy.

    azd deploy
    

تلميح

يمكنك أيضا استخدام azd up دائما فقط، والذي يقوم بجميع azd packageو azd provisionو.azd deploy

هل تواجه مشكلات؟ تحقق من قسم استكشاف الأخطاء وإصلاحها.

استعرض التطبيق

  1. في إخراج AZD، ابحث عن عنوان URL لتطبيقك وانتقل إليه في المستعرض. يبدو عنوان URL كما يلي في إخراج AZD:

    Deploying services (azd deploy)
    
      (✓) Done: Deploying service web
      - Endpoint: &lt;URL>
    
  2. أضف القليل من المهام إلى القائمة.

    لقطة شاشة لتطبيق الويب Express.js مع قاعدة بيانات كوزموس تعمل على أزور تظهر المهام.

    تهانينا، أنت تقوم بتشغيل تطبيق ويب في Azure App Service، مع اتصال آمن ب Azure Cosmos DB.

هل تواجه مشكلات؟ تحقق من قسم استكشاف الأخطاء وإصلاحها.

دفق سجلات التشخيص

تلتقط 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: <URL>

تعرف على المزيد حول تسجيل الدخول إلى تطبيقات Java في السلسلة على تمكين Azure Monitor OpenTelemetry لتطبيقات .NET Node.js وPython وJava.

هل تواجه مشكلات؟ تحقق من قسم استكشاف الأخطاء وإصلاحها.

تنظيف الموارد

لحذف كافة موارد Azure في بيئة النشر الحالية، قم بتشغيل azd down المطالبات واتبعها.

azd down

استكشاف الأخطاء وإصلاحها

تظهر طريقة عرض نشر المدخل ل 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.

من المرجح أن يكون الخطأ ناتجا عن حد اشتراكك للمنطقة التي تحددها. حاول اختيار منطقة مختلفة للتوزيع.

صفحة المتصفح للتطبيق المنشور تقول "حدث خطأ ما".

ربما لا تزال بحاجة إلى إجراء تغييرات سلسلة الاتصال في التعليمات البرمجية للتطبيق الخاص بك. انظر نموذج الشيفرة.

الأسئلة الشائعة

كم يكلف هذا الإعداد؟

تسعير الموارد التي تم إنشاؤها كما يلي:

  • يتم إنشاء خطة App Service في الطبقة الأساسية، ويمكن تغيير حجمها زيادة أو نقصانًا. راجع تسعير App Service.
  • يتم إنشاء خادم Azure Cosmos DB في منطقة واحدة ويمكن توزيعه على مناطق أخرى. راجع أسعار Azure Cosmos DB.
  • لا تتحمل الشبكة الظاهرية رسوما ما لم تقم بتكوين وظائف إضافية، مثل التناظر. راجع أسعار شبكة Azure الظاهرية.
  • تتحمل منطقة DNS الخاصة رسوما صغيرة. راجع أسعار Azure DNS.

كيف أعمل الاتصال بخادم Azure Cosmos DB المؤمن خلف الشبكة الظاهرية باستخدام أدوات أخرى؟

  • للوصول الأساسي من أداة سطر الأوامر، يمكنك التشغيل mongosh من وحدة SSH الطرفية للتطبيق. لا تأتي حاوية التطبيق مع mongosh، لذا يجب عليك تثبيتها يدوياً. تذكر أن العميل المثبت لا يستمر عبر عمليات إعادة تشغيل التطبيق.
  • للاتصال من عميل واجهة المستخدم الرسومية MongoDB، يجب أن يكون جهازك داخل الشبكة الافتراضية. على سبيل المثال، قد يكون جهاز افتراضي في Azure متصل بأحد الشبكات الفرعية، أو جهاز كمبيوتر في شبكة داخلية لديه اتصال VPN من موقع إلى موقع مع شبكة Azure الافتراضية.
  • للاتصال من غلاف MongoDB من صفحة إدارة قاعدة بيانات Azure Cosmos في بوابة Azure، يجب أن يكون جهازك أيضا ضمن الشبكة الافتراضية. يمكنك بدلا من ذلك فتح جدار الحماية في خادم Azure Cosmos DB لعنوان IP الخاص بجهازك المحلي، لكنه يزيد من سطح الهجوم لتكوينك.

كيف يعمل تطوير التطبيقات المحلية مع إجراءات GitHub؟

خذ ملف سير العمل الذي تم إنشاؤه تلقائيا من خدمة التطبيق كمثال، git push كل يبدأ تشغيل بنية وتوزيع جديد. من نسخة محلية من مستودع GitHub، يمكنك إجراء التحديثات المطلوبة دفعه إلى GitHub. على سبيل المثال:

git add .
git commit -m "<some-message>"
git push origin main

لماذا توزيع إجراءات GitHub بطيء جدًا؟

يعرف ملف سير العمل الذي تم إنشاؤه تلقائيا من خدمة التطبيق البناء ثم التوزيع والتشغيل على وظيفتين. لأن كل مهمة تعمل في بيئتها النظيفة الخاصة، يضمن ملف سير العمل أن deploy الوظيفة لديها حق الوصول إلى الملفات من build الوظيفة:

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

ليس لدي أذونات لإنشاء هوية معينة من قبل المستخدم

راجع إعداد نشر إجراءات 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؟
  • ما الملف الذي أقوم بإجراء التغيير فيه؟
  • هل سيقطع هذا التغيير تطبيقي عند التشغيل محليا؟