أفضل ممارسات النشر

إشعار

بدءا من 1 يونيو 2024، سيكون لجميع تطبيقات App Service التي تم إنشاؤها حديثا خيار إنشاء اسم مضيف افتراضي فريد باستخدام اصطلاح <app-name>-<random-hash>.<region>.azurewebsites.netالتسمية . ستظل أسماء التطبيقات الحالية دون تغيير.

مثال: myapp-ds27dh7271aah175.westus-01.azurewebsites.net

لمزيد من التفاصيل، راجع اسم المضيف الافتراضي الفريد لمورد App Service.

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

مكونات النشر

مصدر النشر

مصدر النشر هو موقع التعليمات البرمجية للتطبيق الخاص بك. بالنسبة لتطبيقات الإنتاج، يكون مصدر النشر عادة مستودعاً مستضافاً بواسطة برنامج التحكم في الإصدار مثل GitHub أو BitBucket أو Azure Repos. بالنسبة لسيناريوهات التطوير والاختبار، قد يكون مصدر النشر مشروعاً على جهازك المحلي.

إنشاء مسار

بمجرد اتخاذ قرار بشأن مصدر نشر، فإن خطوتك التالية هي اختيار البنية الأساسية لبرنامج ربط العمليات التجارية للبناء. تقرأ البنية الأساسية لبرنامج ربط العمليات التجارية للبناء التعليمات البرمجية المصدر من مصدر التوزيع وتنفذ سلسلة من الخطوات (مثل التحويل البرمجي للتعليمات البرمجية، وتصغير HTML وJavaScript، وتشغيل الاختبارات، ومكونات التعبئة والتغليف) للحصول على التطبيق في حالة قابلة للتشغيل. تعتمد الأوامر المحددة التي يتم تنفيذها بواسطة البنية الأساسية لبرنامج ربط العمليات التجارية للبناء على مكدس اللغة الخاص بك. يمكن تنفيذ هذه العمليات على خادم بناء مثل Azure Pipelines، أو تنفيذها محلياً.

آلية النشر

آلية النشر هي الإجراء المستخدم لوضع التطبيق المضمن في الدليل /home/site/wwwroot لتطبيق الويب الخاص بك. الدليل /wwwroot هو موقع تخزين مثبت مشترك من قِبَل جميع مثيلات تطبيق الويب الخاص بك. عندما تضع آلية النشر التطبيق الخاص بك في هذا الدليل، تتلقى مثيلاتك إعلاماً لمزامنة الملفات الجديدة. تدعم App Service آليات النشر التالية:

  • نقاط نهاية Kudu: Kudu هي أداة إنتاجية المطور مفتوحة المصدر التي تعمل كعملية منفصلة في خدمة تطبيقات Windows، وكحاوية ثانية في خدمة تطبيقات Linux. يعالج Kudu عمليات التوزيع المستمر ويوفر نقاط نهاية HTTP للتوزيع، مثل zipdeploy/.
  • FTP وWebDeploy: باستخدام بيانات اعتماد الموقع أو المستخدم، يمكنك تحميل الملفات عبر FTP أو WebDeploy. هذه الآليات لا تمر عبر Kudu.

تستخدم أدوات النشر مثل Azure Pipelines وJenkins والمكونات الإضافية للمحرر إحدى آليات النشر هذه.

استخدام فتحات التوزيع

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

نشر التعليمات البرمجية باستمرار

إذا كان مشروعك يحتوي على فروع مخصصة للاختبار وQA والتقسيم المرحلي، فيجب نشر كل فرع من هذه الفروع بشكلٍ مستمر في فتحة التقسيم المرحلي. (يُعرف هذا بتصميم Gitflow.) يسمح هذا لأصحاب المصلحة بتقييم الفرع المنشور واختباره بسهولة.

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

الرسم التخطيطي الذي يظهر التدفق بين الفروع Dev وStaging وMain والفتحات التي يتم نشرها إليها.

نشر الحاويات باستمرار

بالنسبة للحاويات المخصصة من Docker أو سجلات الحاويات الأخرى، انشر الصورة في فتحة التقسيم المرحلي وقم بالتبديل إلى الإنتاج لمنع وقت التعطل. التشغيل التلقائي أكثر تعقيداً من نشر التعليمات البرمجية لأنه يجب دفع الصورة إلى سجل حاوية وتحديث علامة الصورة على تطبيق الويب.

لكل فرع تريد نشره في فتحة، قم بإعداد التنفيذ التلقائي للقيام بما يلي على كل تثبيت بالفرع.

  1. إنشاء صورة ووضع علامة عليها. كجزءٍ من البنية الأساسية لبرنامج ربط العمليات التجارية للبناء، ضع علامة على الصورة بمعرف تثبيت git أو الطابع الزمني أو معلومات تعريف أخرى. من الأفضل عدم استخدام العلامة الافتراضية "الأحدث". وإلا، فمن الصعب تتبع التعليمات البرمجية التي يتم نشرها حالياً، ما يجعل تصحيح الأخطاء أكثر صعوبة.
  2. ادفع الصورة ذات العلامات. بمجرد إنشاء الصورة ووضع علامة عليها، يدفع المسار الصورة إلى سجل الحاوية الخاص بنا. في الخطوة التالية، ستسحب فتحة النشر الصورة ذات العلامات من سجل الحاوية.
  3. تحديث فتحة النشر باستخدام علامة الصورة الجديدة. عند تحديث هذه الخاصية، ستتم إعادة تشغيل الموقع تلقائياً وسحب صورة الحاوية الجديدة.

فتحة استخدام بصرية

ثمة أمثلة أدناه لأطر عمل التنفيذ التلقائي الشائعة.

استخدام Azure DevOps

تحتوي App Service على تسليم مستمر مضمن للحاويات من خلال مركز النشر. انتقل إلى تطبيقك في مدخل Microsoft Azure وحدد Deployment Center ضمن Deployment. اتبع الإرشادات لتحديد المستودع والفرع. سيؤدي هذا إلى تكوين البنية الأساسية لبرنامج ربط العمليات التجارية لـ DevOps وإصدارها لإنشاء الحاوية ووضع علامة عليها ونشرها تلقائياً عند دفع عمليات التثبيت الجديدة إلى الفرع المحدد.

استخدم إجراءات GitHub

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

on:
  push:
    branches:
    - <your-branch-name>

name: Linux_Container_Node_Workflow

jobs:
  build-and-deploy:
    runs-on: ubuntu-latest
    steps:
    # checkout the repo
    - name: 'Checkout GitHub Action'
      uses: actions/checkout@main

    - uses: azure/docker-login@v1
      with:
        login-server: contoso.azurecr.io
        username: ${{ secrets.REGISTRY_USERNAME }}
        password: ${{ secrets.REGISTRY_PASSWORD }}

    - run: |
        docker build . -t contoso.azurecr.io/nodejssampleapp:${{ github.sha }}
        docker push contoso.azurecr.io/nodejssampleapp:${{ github.sha }} 

    - uses: azure/webapps-deploy@v2
      with:
        app-name: 'node-rnc'
        publish-profile: ${{ secrets.azureWebAppPublishProfile }}
        images: 'contoso.azurecr.io/nodejssampleapp:${{ github.sha }}'

استخدم موفري أتمتة آخرين

تنطبق الخطوات المذكورة سابقاً على الأدوات المساعدة الأخرى للأتمتة مثل CircleCI أو Travis CI. ومع ذلك، يتعين عليك استخدام Azure CLI لتحديث فتحات النشر بعلامات صور جديدة في الخطوة الأخيرة. لاستخدام Azure CLI في البرنامج النصي للأتمتة، قم بإنشاء كيان الخدمة باستخدام الأمر التالي.

az ad sp create-for-rbac --name "myServicePrincipal" --role contributor \
   --scopes /subscriptions/{subscription}/resourceGroups/{resource-group} \
   --sdk-auth

في البرنامج النصي الخاص بك، قم بتسجيل الدخول باستخدام az login --service-principal، مع توفير معلومات الأساسي. يمكنك بعد ذلك استخدام az webapp config container set لتعيين اسم الحاوية والعلامة وعنوان URL للتسجيل وكلمة مرور السجل. فيما يلي بعض الارتباطات المفيدة لإنشاء عملية CI للحاوية الخاصة بك.

اعتبارات خاصة باللغة

Java

استخدم Kudu zipdeploy/ API لنشر تطبيقات JAR وwardeploy/ لتطبيقات WAR. إذا كنت تستخدم Jenkins، يمكنك استخدام واجهات برمجة التطبيقات هذه مباشرة في مرحلة التوزيع الخاصة بك. لمزيد من المعلومات، راجع هذا المقال

العقدة

بشكلٍ افتراضي، ينفذ Kudu خطوات الإنشاء لتطبيق العقدة (npm install). إذا كنت تستخدم خدمة بناء مثل Azure DevOps، فإن بنية Kudu غير ضرورية. لتعطيل إصدار Kudu، أنشئ إعداد تطبيق، SCM_DO_BUILD_DURING_DEPLOYMENT، بقيمة false.

.NET

بشكلٍ افتراضي، ينفذ Kudu خطوات الإنشاء لتطبيق .NET الخاص بك (dotnet build). إذا كنت تستخدم خدمة بناء مثل Azure DevOps، فإن بنية Kudu غير ضرورية. لتعطيل إصدار Kudu، أنشئ إعداد تطبيق، SCM_DO_BUILD_DURING_DEPLOYMENT، بقيمة false.

اعتبارات النشر الأخرى

ذاكرة التخزين المؤقت المحلية

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

استخدم دائماً ذاكرة التخزين المؤقت المحلية بالاقتران مع فتحات النشر لمنع وقت التعطل. راجع هذا القسم للحصول على معلومات حول استخدام هذه الميزات معاً.

وحدة المعالجة المركزية أو الذاكرة العالية

إذا كانت خطة خدمة التطبيقات تستخدم أكثر من 90٪ من وحدة المعالجة المركزية أو الذاكرة المتوفرة، فقد يواجه الجهاز الظاهري الأساسي مشكلة في معالجة عملية النشر. عند حدوث ذلك، قم بزيادة عدد المثيلات مؤقتاً لتنفيذ النشر. بمجرد انتهاء النشر، يمكنك إرجاع عدد المثيلات إلى قيمته السابقة.

للحصول على مزيدٍ من المعلومات بشأن أفضل الممارسات، تفضل بزيارة App Service Diagnostics لمعرفة أفضل الممارسات القابلة للتنفيذ الخاصة بالموارد الخاصة بك.

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

يمكنك أيضاً استخدام هذا الارتباط لفتح App Service Diagnostics مباشرةً لموردك: https://portal.azure.com/?websitesextension_ext=asd.featurePath%3Ddetectors%2FParentAvailabilityAndPerformance#@microsoft.onmicrosoft.com/resource/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}/troubleshoot.

المزيد من الموارد

متغيرات البيئة ومرجع إعدادات التطبيق