إرشادات حول نشر تطبيقات الويب باستخدام قوالب Azure Resource Manager

تقدم هذه المقالة توصيات لإنشاء قوالب Azure Resource Manager لنشر حلول Azure App Service. يمكن أن تساعدك هذه التوصيات على تجنب المشاكل الشائعة.

تعريف التبعيات

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

تحذير

إذا قمت بتضمين ملحق موقع MSDeploy في القالب الخاص بك، يجب تعيين أي موارد تكوين على أنها تعتمد على مورد MSDeploy. تؤدي تغييرات التكوين إلى إعادة تشغيل الموقع بشكل غير متزامن. من خلال جعل موارد التكوين تعتمد على MSDeploy، يمكنك التأكد من انتهاء MSDeploy قبل إعادة تشغيل الموقع. بدون هذه التبعيات، قد تتم إعادة تشغيل الموقع أثناء عملية نشر MSDeploy. للحصول على مثال على القالب، راجع قالب WordPress مع تبعية نشر الويب.

توضح الصورة التالية ترتيب التبعية لموارد App Service المختلفة:

Web app dependencies

يمكنك نشر الموارد بالترتيب التالي:

المستوى 1

  • خطة خدمة التطبيق.
  • أي موارد أخرى ذات صلة، مثل قواعد البيانات أو حسابات التخزين.

المستوى 2

  • تطبيق الويب - يعتمد على خطة خدمة التطبيق.
  • تطبيق Azure Insights مثيل يستهدف مزرعة الخوادم - يعتمد على خطة خدمة التطبيق.

المستوى 3

  • التحكم في المصدر - يعتمد على تطبيق الويب.
  • ملحق موقع MSDeploy - يعتمد على تطبيق الويب.
  • تطبيق Azure Insights مثيل يستهدف تطبيق الويب - يعتمد على تطبيق الويب.

المستوى 4

  • شهادة خدمة التطبيق--يعتمد على التحكم في المصدر أو MSDeploy إذا كان أي منهما موجودا. خلاف ذلك ، يعتمد ذلك على تطبيق الويب.
  • إعدادات التكوين (سلاسل الاتصال وقيم web.config وإعدادات التطبيق) - تعتمد على التحكم في المصدر أو MSDeploy إذا كان أي منهما موجودا. خلاف ذلك ، يعتمد ذلك على تطبيق الويب.

المستوى 5

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

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

يوضح المثال التالي جزءا من قالب. تعتمد قيمة تكوين سلسلة الاتصال على ملحق MSDeploy. يعتمد ملحق MSDeploy على تطبيق الويب وقاعدة البيانات.

{
    "name": "[parameters('appName')]",
    "type": "Microsoft.Web/Sites",
    ...
    "resources": [
      {
          "name": "MSDeploy",
          "type": "Extensions",
          "dependsOn": [
            "[concat('Microsoft.Web/Sites/', parameters('appName'))]",
            "[concat('Microsoft.Sql/servers/', parameters('dbServerName'), '/databases/', parameters('dbName'))]",
          ],
          ...
      },
      {
          "name": "connectionstrings",
          "type": "config",
          "dependsOn": [
            "[concat('Microsoft.Web/Sites/', parameters('appName'), '/Extensions/MSDeploy')]"
          ],
          ...
      }
    ]
}

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

البحث عن معلومات حول أخطاء MSDeploy

إذا كان قالب Resource Manager الخاص بك يستخدم MSDeploy، فقد يكون من الصعب فهم رسائل خطأ النشر. للحصول على مزيد من المعلومات بعد فشل النشر، جرب الخطوات التالية:

  1. انتقل إلى وحدة تحكم Kudu الخاصة بالموقع.
  2. استعرض للوصول إلى المجلد في D:\home\LogFiles\SiteExtensions\MSDeploy.
  3. ابحث عن ملفات appManagerStatus.xml والملفات appManagerLog.xml. يسجل الملف الأول الحالة. يسجل الملف الثاني معلومات حول الخطأ. إذا لم يكن الخطأ واضحا لك، فيمكنك تضمينه عندما تطلب المساعدة في المنتدى.

اختيار اسم تطبيق ويب فريد

يجب أن يكون اسم تطبيق الويب فريدا عالميا. يمكنك استخدام اصطلاح تسمية من المحتمل أن يكون فريدا، أو يمكنك استخدام الدالة uniqueString للمساعدة في إنشاء اسم فريد.

{
  "apiVersion": "2016-08-01",
  "name": "[concat(parameters('siteNamePrefix'), uniqueString(resourceGroup().id))]",
  "type": "Microsoft.Web/sites",
  ...
}

نشر شهادة تطبيق ويب من Key Vault

ملاحظة

تستخدم هذه المقالة الوحدة النمطية Azure Az PowerShell، وهي الوحدة النمطية PowerShell الموصى بها للتفاعل مع Azure. لبدء استخدام الوحدة النمطية Az PowerShell، راجع تثبيت Azure PowerShell. لمعرفة كيفية الترحيل إلى الوحدة النمطية Az PowerShell، راجع ترحيل Azure PowerShell من AzureRM إلى Az.

إذا كان القالب الخاص بك يتضمن مورد Microsoft.Web/certificates لربط TLS/SSL، وتم تخزين الشهادة في Key Vault، فيجب عليك التأكد من أن هوية خدمة التطبيق يمكنها الوصول إلى الشهادة.

في Azure العالمي، يحتوي مدير خدمة التطبيقات على معرف abfa0a7c-a6b6-4736-8310-5855508787cd. لمنح حق الوصول إلى Key Vault لمبدأ خدمة التطبيقات، استخدم:

Set-AzKeyVaultAccessPolicy `
  -VaultName KEY_VAULT_NAME `
  -ServicePrincipalName abfa0a7c-a6b6-4736-8310-5855508787cd `
  -PermissionsToSecrets get `
  -PermissionsToCertificates get

في Azure Government، يحتوي مدير خدمة التطبيقات على معرف 6a02c803-dafd-4136-b4c3-5a6f318b4714. استخدم هذا المعرف في المثال السابق.

في Key Vault، حدد الشهاداتوإنشاء/استيراد لتحميل الشهادة.

Import certificate

في القالب الخاص بك، أدخل اسم الشهادة ل keyVaultSecretName.

للحصول على مثال على القالب، راجع نشر شهادة تطبيق ويب من Key Vault سر واستخدامها لإنشاء ربط SSL.

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