البرنامج التعليمي: إنشاء تطبيق ويب Java Spring Boot باستخدام Azure App Service على Linux وAzure Cosmos DB

في هذا البرنامج التعليمي، ستتعلم كيفية إنشاء وتكوين ونشر تطبيق Spring Boot آمن في Azure App Service يتصل بقاعدة بيانات MongoDB في Azure (في الواقع، قاعدة بيانات Cosmos DB مع MongoDB API). عند الانتهاء، سيكون لديك تطبيق Java SE يعمل على Azure App Service على Linux.

لقطة شاشة لتطبيق Spring Boot الذي يخزن البيانات في Cosmos DB.

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

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

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

  • حساب Azure مع اشتراك نشط. إذا لم يكن لديك حساب Azure، يمكنك إنشاء حساب مجانا.
  • تم تثبيت Azure Developer CLI . يمكنك اتباع الخطوات باستخدام Azure Cloud Shell لأنه يحتوي بالفعل على Azure Developer CLI مثبت.
  • معرفة Java مع تطوير Spring Framework.
  • (اختياري) لتجربة GitHub Copilot، حساب GitHub Copilot. يتوفر إصدار تجريبي مجاني لمدة 30 يوما.

تخطي إلى النهاية

يمكنك نشر نموذج التطبيق بسرعة في هذا البرنامج التعليمي ورؤيتها قيد التشغيل في Azure. ما عليك سوى تشغيل الأوامر التالية في Azure Cloud Shell، واتبع المطالبة:

mkdir msdocs-spring-boot-mongodb-sample-app
cd msdocs-spring-boot-mongodb-sample-app
azd init --template msdocs-spring-boot-mongodb-sample-app
azd up

1. تشغيل العينة

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

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

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

لقطة شاشة توضح كيفية إنشاء نسخة مستودع من نموذج مستودع GitHub.

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

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

لقطة شاشة توضح كيفية إنشاء مساحة تعليمات برمجية في GitHub.

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

  1. شغّل mvn package spring-boot:run.
  2. عندما ترى الإعلام Your application running on port 8080 is available.، حدد فتح في المستعرض. يجب أن تشاهد نموذج التطبيق في علامة تبويب مستعرض جديدة. لإيقاف خادم Jetty، اكتب Ctrl+C.

لقطة شاشة توضح كيفية تشغيل نموذج التطبيق داخل مساحة التعليمات البرمجية GitHub.

تلميح

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

  • @workspace ماذا يفعل هذا المشروع؟
  • @workspace كيف يتصل التطبيق بقاعدة البيانات؟
  • @workspace ماذا يفعل المجلد .devcontainer؟

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

2. إنشاء App Service وCosmos DB

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

  • اسم تطبيق الويب. يتم استخدامه كجزء من اسم DNS لتطبيقك في شكل https://<app-name>-<hash>.<region>.azurewebsites.net.
  • المنطقة لتشغيل التطبيق فعلياً في العالم. كما يتم استخدامه كجزء من اسم DNS لتطبيقك.
  • مكدس الذاكرة المؤقتة لوقت التشغيل للتطبيق. إنه المكان الذي تحدد فيه إصدار Java لاستخدامه لتطبيقك.
  • خطة الاستضافة للتطبيق. إنها طبقة الأسعار التي تتضمن مجموعة الميزات وسعة التحجيم لتطبيقك.
  • مجموعة الموارد للتطبيق. تتيح لك مجموعة الموارد تجميع (في حاوية منطقية) جميع موارد Azure المطلوبة للتطبيق.

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

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

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

لقطة شاشة تعرض كيفية استخدام مربع البحث في شريط الأدوات العلوي للعثور على تطبيق الويب + معالج إنشاء قاعدة البيانات.

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

  1. Resource Group: حدد Create new واستخدم اسم msdocs-spring-cosmosdb-tutorial.
  2. المنطقة: أي منطقة Azure قريبة منك.
  3. الاسم: msdocs-spring-cosmosdb-XYZ حيث XYZ هو أي ثلاثة أحرف عشوائية. يجب أن يكون هذا الاسم فريدا عبر Azure.
  4. مكدس وقت التشغيل: Java 21.
  5. مكدس خادم ويب Java: Java SE (خادم ويب مضمن).
  6. المحرك: Cosmos DB API ل MongoDB. Cosmos DB هي قاعدة بيانات NoSQL وعلائقية ومتجهة مدارة بالكامل كخدمة على Azure.
  7. خطة الاستضافة: أساسية. عندما تكون مستعدا، يمكنك التوسع إلى مستوى تسعير الإنتاج.
  8. حدد "Review + create".
  9. وبعد اكتمال عملية التحقق، حدد Create.

لقطة شاشة توضح كيفية تكوين تطبيق جديد وقاعدة بيانات جديدة في تطبيق الويب + معالج قاعدة البيانات.

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

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

لقطة شاشة تعرض الانتهاء من عملية التوزيع.

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

3. تأمين أسرار الاتصال

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

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

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

لقطة شاشة توضح كيفية رؤية قيمة إعداد التطبيق.

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

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

لقطة شاشة توضح كيفية إنشاء مخزن مفاتيح.

الخطوة 3:

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

لقطة شاشة توضح كيفية تأمين مخزن مفاتيح بنقطة نهاية خاصة.

الخطوة 4:

  1. في شريط البحث العلوي، اكتب msdocs-spring-cosmosdb، ثم مورد App Service المسمى msdocs-spring-cosmosdb-XYZ.
  2. في صفحة App Service، في القائمة اليمنى، حدد Settings > Service Connector. يوجد بالفعل موصل، أنشأه معالج إنشاء التطبيق لك.
  3. حدد خانة الاختيار بجوار الموصل، ثم حدد تحرير.
  4. في علامة التبويب Basics ، قم بتعيين Client type إلى SpringBoot. ينشئ هذا الخيار متغيرات البيئة الخاصة ب Spring Boot لك.
  5. حدد علامة التبويب مصادقة.
  6. حدد مخزن البيانات السرية في Key Vault.
  7. ضمن Key Vault Connection، حدد Create new. يتم فتح مربع حوار إنشاء اتصال أعلى مربع حوار التحرير.

لقطة شاشة توضح كيفية تحرير موصل خدمة باستخدام اتصال key vault.

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

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

لقطة شاشة توضح كيفية تكوين موصل خدمة مخزن المفاتيح.

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

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

لقطة شاشة تعرض اتصال key vault المحدد في defaultConnector.

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

  1. من القائمة اليسرى، حدد متغيرات البيئة مرة أخرى.
  2. تأكد من وجود إعداد التطبيق spring.data.mongodb.uri . قام الموصل الافتراضي بإنشائه لك، ويستخدم تطبيق Spring Boot الخاص بك المتغير بالفعل.
  3. بجوار إعداد التطبيق، حدد إظهار القيمة. يجب أن تكون @Microsoft.KeyVault(...)القيمة ، ما يعني أنها مرجع خزنة مفاتيح لأن السر تتم إدارته الآن في مخزن المفاتيح.

لقطة شاشة توضح كيفية رؤية قيمة متغير بيئة Spring Boot في Azure.

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

4. نشر نموذج التعليمات البرمجية

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

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

لقطة شاشة توضح كيفية فتح مركز التوزيع في خدمة التطبيقات.

الخطوة 2: في صفحة Deployment Center:

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

لقطة شاشة توضح كيفية تكوين CI / CD باستخدام إجراءات GitHub.

الخطوة 3:

  1. حدد علامة التبويب Logs. تأكد من تشغيل عملية نشر جديدة بالفعل، ولكن الحالة هي Failed.
  2. حدد Build/Deploy Logs. تفتح علامة تبويب المتصفح على علامة التبويب Actions في المستودع المتشعب في GitHub. في التعليقات التوضيحية، سترى الخطأ The string 'java21' is not valid SeVer notation for a Java version. إذا أردت، فحدد خطوة الإنشاء الفاشلة في الصفحة للحصول على مزيد من المعلومات.

لقطة شاشة تعرض خطأ في صفحة سجلات مركز التوزيع.

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

لقطة شاشة تعرض سحب git داخل مساحة تعليمات GitHub البرمجية.

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

  1. ابدأ جلسة دردشة جديدة عن طريق تحديد طريقة عرض الدردشة، ثم تحديد +.
  2. اسأل، "@workspace لماذا أحصل على الخطأ في إجراءات GitHub: السلسلة 'java21' ليست رمز SemVer صالحا لإصدار Java." قد يمنحك Copilot شرحا ويمنحك حتى الرابط إلى ملف سير العمل الذي تحتاج إلى إصلاحه.
  3. افتح .github/workflows/starter-no-infra_msdocs-spring-cosmosdb-123.yaml في المستكشف وقم بإجراء الإصلاح المقترح. لا يمنحك GitHub Copilot نفس الرد في كل مرة، فقد تحتاج إلى طرح المزيد من الأسئلة لضبط استجابته. للحصول على تلميحات، راجع ما الذي يمكنني فعله باستخدام GitHub Copilot في مساحة التعليمات البرمجية الخاصة بي؟.

لقطة شاشة توضح كيفية طرح سؤال في جلسة دردشة GitHub Copilot جديدة.

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

  1. افتح .github/workflows/starter-no-infra_msdocs-spring-cosmosdb-123.yaml في المستكشف وابحث عن setup-java@v4 الإجراء.
  2. تغيير قيمة java-version إلى '21'.

لقطة شاشة تعرض مساحة تعليمة GitHub البرمجية وملف سير العمل الذي تم إنشاؤه تلقائيا مفتوحا.

الخطوة 6:

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

لقطة شاشة تعرض التغييرات التي يتم تنفيذها ودفعها إلى GitHub.

الخطوة 7: العودة إلى صفحة مركز النشر في مدخل Microsoft Azure:

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

لقطة شاشة تعرض عملية نشر ناجحة في صفحة سجلات مركز التوزيع.

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

لقطة شاشة تعرض تشغيل GitHub ناجحا.

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

5. استعرض للوصول إلى التطبيق

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

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

لقطة شاشة توضح كيفية إطلاق خدمة التطبيق في مدخل Microsoft Azure

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

لقطة شاشة لتطبيق ويب Spring Boot مع تشغيل Cosmos DB في Azure.

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

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

تلتقط Azure App Service جميع مُخرجات الرسائل إلى وحدة التحكم لمساعدتك في تشخيص المشكلات مع التطبيق الخاص بك. يتضمن نموذج التطبيق عبارات تسجيل Log4j القياسية لإثبات هذه الإمكانية، كما هو موضح في القصاصة البرمجية التالية:

private static Logger logger = LoggerFactory.getLogger(TodoListController.class);

@Autowired
private TodoItemRepository todoItemRepository;

public TodoListController() {
}

/**
 * HTTP GET
 */
@GetMapping(path = "/api/todolist/{index}", produces = {MediaType.APPLICATION_JSON_VALUE})
public TodoItem getTodoItem(@PathVariable("index") String index) {
    logger.info("GET request access '/api/todolist/{}' path.", index);
    return todoItemRepository.findById(index).get();
}

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

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

لقطة شاشة توضح كيفية تمكين السجلات الأصلية في خدمة التطبيقات في مدخل Microsoft Azure.

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

لقطة شاشة توضح كيفية عرض تدفق السجل في مدخل Microsoft Azure.

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

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

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

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

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

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

لقطة شاشة توضح كيفية البحث عن مجموعة موارد والتنقل إليها في مدخل Microsoft Azure.

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

لقطة شاشة تعرض موقع زر **Delete Resource Group** في مدخل Microsoft Azure.

الخطوة 3:

  1. تأكد من الحذف عن طريق كتابة اسم مجموعة الموارد.
  2. حدد حذف.
  3. قم بالتأكيد باستخدام الحذف مرة أخرى.

لقطة شاشة لمربع حوار التأكيد لحذف مجموعة موارد في مدخل Microsoft Azure.

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

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

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

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

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

    السؤال الإجابة
    الدليل الحالي غير فارغ. هل ترغب في تهيئة مشروع هنا في "<دليلك>"؟ السنة
    ماذا تريد أن تفعل بهذه الملفات؟ الاحتفاظ بالملفات الموجودة دون تغيير
    أدخل اسم بيئة جديدة اكتب اسم فريد. يستخدم قالب 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. أثناء تشغيله، يوفر الأمر رسائل حول عملية التوفير والنشر، بما في ذلك ارتباط إلى النشر في 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: تعمل كحاوية مستهدفة لتطبيقك لشحن سجلاته، حيث يمكنك أيضا الاستعلام عن السجلات.

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

3. التحقق من سلسلة الاتصال

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

  1. في إخراج AZD، ابحث عن إعداد spring.data.mongodb.uriالتطبيق . يتم عرض أسماء الإعدادات فقط. تبدو كما يلي في إخراج AZD:

     App Service app has the following app settings:
             - spring.data.mongodb.uri
             - spring.data.mongodb.database
             - spring.redis.host
             - spring.redis.port
             - spring.redis.password
             - spring.redis.database
             - spring.redis.ssl
             - spring.cloud.azure.keyvault.secret.credential.managed_identity_enabled
             - spring.cloud.azure.keyvault.secret.endpoint
             - azure.keyvault.uri
             - azure.keyvault.scope
     

    spring.data.mongodb.uri يحتوي على اتصال URI بقاعدة بيانات Cosmos DB في Azure. إنه متغير Spring Data قياسي، والذي يستخدمه تطبيقك بالفعل في ملف src/main/resources/application.properties .

  2. في المستكشف، انتقل إلى src/main/resources/application.properties وتأكد من أن تطبيق Spring Boot يستخدم spring.data.mongodb.uri بالفعل المتغير للوصول إلى البيانات.

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

    إذا نظرت إلى قيمة spring.data.mongodb.uri، فيجب أن تكون @Microsoft.KeyVault(...)، ما يعني أنها مرجع مخزن مفاتيح لأن السر تتم إدارته في خزنة المفاتيح.

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

4- الاستعراض وصولاً إلى التطبيق

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

     Deploying services (azd deploy)
    
       (✓) Done: Deploying service web
       - Endpoint: https://<app-name>-<hash>.azurewebsites.net/
     
  2. أضف القليل من المهام إلى القائمة.

    لقطة شاشة لتطبيق Tomcat على الويب مع تشغيل MySQL في Azure يعرض المهام.

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

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

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

يمكن ل Azure App Service التقاط سجلات وحدة التحكم لمساعدتك في تشخيص المشكلات مع التطبيق الخاص بك. للراحة، قام قالب AZD بالفعل بتمكين التسجيل إلى نظام الملفات المحلي ويشحن السجلات إلى مساحة عمل Log Analytics.

يتضمن نموذج التطبيق عبارات تسجيل Log4j القياسية لإثبات هذه الإمكانية، كما هو موضح في القصاصة البرمجية التالية:

private static Logger logger = LoggerFactory.getLogger(TodoListController.class);

@Autowired
private TodoItemRepository todoItemRepository;

public TodoListController() {
}

/**
 * HTTP GET
 */
@GetMapping(path = "/api/todolist/{index}", produces = {MediaType.APPLICATION_JSON_VALUE})
public TodoItem getTodoItem(@PathVariable("index") String index) {
    logger.info("GET request access '/api/todolist/{}' path.", index);
    return todoItemRepository.findById(index).get();
}

في إخراج 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.

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

6. حذف الموارد

لحذف كافة موارد 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.

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

لا يعرض تطبيق العينة المنشور تطبيق قائمة المهام

إذا رأيت Hey, Java developers! صفحة بدلا من تطبيق قائمة المهام، فمن المرجح أن App Service لا تزال تقوم بتحميل الحاوية المحدثة من أحدث نشر للتعليمات البرمجية. انتظر بضع دقائق وقم بتحديث الصفحة.

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

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

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

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

كيف أعمل تشغيل ترحيل قاعدة البيانات باستخدام قاعدة بيانات Cosmos DB خلف الشبكة الظاهرية؟

تحتوي حاوية Java SE في App Service بالفعل على اتصال بالشبكة ب Cosmos DB، ولكنها لا تحتوي على أي أدوات ترحيل أو أدوات MongoDB أخرى. لديك بعض الخيارات:

  • قم بتشغيل عمليات ترحيل قاعدة البيانات تلقائيا عند بدء تشغيل التطبيق، مثل وضع الإسبات أو Flyway.
  • في جلسة عمل SSH للتطبيق، قم بتثبيت أداة ترحيل مثل Flyway CLI، ثم قم بتشغيل البرنامج النصي للترحيل. تذكر أن الأداة المثبتة لن تستمر بعد إعادة تشغيل التطبيق إلا إذا كانت في الدليل /home .
  • دمج Azure cloud shell مع الشبكة الظاهرية وتشغيل عمليات ترحيل قاعدة البيانات من هناك.

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

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

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

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

راجع إعداد نشر إجراءات 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) حتى مكان إجراء التغييرات، ولكن لا يسمح بإجراء التغييرات نيابة عنك. الأمر متروك لك لإضافة التغييرات المقترحة واختبارها.

الخطوات التالية

تعرف على المزيد حول تشغيل تطبيقات Java على App Service في دليل المطور.

تعرف على كيفية تأمين تطبيقك باستخدام مجال وشهادة مخصصين.