Deploy files to "Azure App Service"

توضح لك هذه المقالة كيفية نشر كودك كحزمة ZIP أو WAR أو JAR أو EAR إلى "Azure App Service". كما يوضح لك كيفية نشر الملفات الفردية إلى App Service، بشكل منفصل عن حزمة التطبيق.

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

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

إذا لم يكن لديك حساب Azure، أنشئ حسابا مجاني قبل أن تبدأ.

إنشاء حزمة ZIP للمشروع

هام

عند إنشاء حزمة ZIP للنشر، لا تقم بتضمين الدليل الجذر. قم بتضمين الملفات والدلائل فقط في الدليل الجذر. إذا قمت بتحميل مستودع GitHub كملف ZIP، فلا يمكنك نشر ذلك الملف as-is إلى App Service. يضيف GitHub أدلة متداخلة في المستوى الأعلى، وهذا لا يعمل مع App Service.

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

يجب أن يحتوي هذا الدليل على ملف الإدخال إلى تطبيق الويب الخاص بك، مثل index.htmlو index.phpو.app.js يمكن أن يحتوي أيضا على ملفات إدارة الحزم مثل project.jsonوcomposer.jsonpackage.jsonbower.json.requirements.txt

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

أنشئ أرشيف ZIP من كل شيء في المشروع الخاص بك. بالنسبة dotnet للمشاريع، أضف كل شيء في دليل dotnet publish الإخراج للأمر، باستثناء دليل الإخراج نفسه. على سبيل المثال، أدخل الأمر التالي في المحطة الطرفية لإنشاء حزمة ZIP تتضمن محتويات الدليل الحالي:

# Bash
zip -r <file-name>.zip .

# PowerShell
Compress-Archive -Path * -DestinationPath <file-name>.zip

نشر حزمة ZIP

عند نشر حزمة ZIP، تقوم خدمة التطبيقات بفك محتوياتها في المسار الافتراضي لتطبيقك: D:\home\site\wwwroot ل Windows و /home/site/wwwroot للينكس.

يستخدم نشر حزمة ZIP هذه نفس خدمة Kudu التي تعمل على تشغيل عمليات النشر المستمرة المستندة إلى التكامل. يدعم Kudu الوظائف التالية لنشر حزمة ZIP:

  • حذف الملفات المتبقية من عملية نشر سابقة
  • خيار تشغيل عملية الإنشاء الافتراضية، والتي تتضمن استعادة الحزمة
  • تخصيص التوزيع، بما في ذلك تشغيل البرامج النصية للتوزيع
  • سجلات التوزيع
  • حد حجم الحزمة 2048 ميغابايت

ملاحظة

الملفات في حزمة ZIP تنسخ فقط إذا لم تتطابق طوابعها الزمنية مع ما تم نشره بالفعل.

النشر باستخدام واجهة مستخدم نشر ZIP في Kudu

  1. افتح تطبيقك في بوابة Azure واختر Development Tools>Advanced Tools، ثم اختر Go.
  2. في Kudu، حدد Tools>Zip Push Deploy.
  3. قم بتحميل حزمة ZIP التي أنشأتها في إنشاء حزمة ZIP لمشروع. اسحبه إلى منطقة مستكشف الملفات على صفحة الويب.

عندما يكون النشر قيد التقدم، تظهر لك أيقونة في الزاوية العلوية اليسرى النسبة المئوية للتقدم. تعرض الصفحة أيضا رسائل للعملية أسفل منطقة مستكشف الملفات . عند انتهاء النشر، يجب أن تقول الرسالة الأخيرة "Deployment successful".

هذه النقطة النهائية لا تعمل على App Service on Linux في الوقت الحالي. ضع في اعتبارك استخدام FTP أو ZIP deploy API بدلا من ذلك.

نشر بدون واجهة مستخدم نشر ZIP في Kudu

نشر حزمة ZIP إلى تطبيق الويب الخاص بك باستخدام az webapp deploy الأمر . يستخدم أمر CLI Kudu publish API لنشر الملفات ويمكن تخصيصه بالكامل.

يدفع المثال التالي حزمة ZIP إلى موقعك. حدد المسار إلى حزمة ZIP المحلية ل --src-path.

az webapp deploy --resource-group <group-name> --name <app-name> --src-path <zip-package-path>

يعيد هذا الأمر تشغيل التطبيق بعد نشر حزمة ZIP.

تمكين أتمتة البناء لنشر ZIP

بشكل افتراضي، يفترض محرك التوزيع أن حزمة ZIP جاهزة للتشغيل as-is ولا تشغل أي أتمتة للبناء. لتمكين نفس أتمتة البناء المستخدمة في نشر Git، قم بتعيين SCM_DO_BUILD_DURING_DEPLOYMENT إعداد التطبيق. شغل الأمر التالي في Azure Cloud Shell:

az webapp config appsettings set --resource-group <group-name> --name <app-name> --settings SCM_DO_BUILD_DURING_DEPLOYMENT=true

لمزيد من المعلومات، راجع وثائق Kudu.

نشر حزم WAR أو JAR أو EAR

يمكنك نشر حزمة WAR، JAR، أو حزمة EAR إلى خدمة التطبيقات لتشغيل تطبيق الويب Java باستخدام واجهة برمجة التطبيقات Azure CLI أو PowerShell أو Kudu.

تضع عملية النشر الموضحة هنا الحزمة على مشاركة محتوى التطبيق مع اصطلاح التسمية الصحيح وبنية الدليل. لمزيد من المعلومات، راجع مرجع Kudu publish API. نوصي بهذا النهج. إذا قمت بنشر حزم WAR أو JAR أو EAR باستخدام FTP أو Web Deploy بدلا من ذلك، فقد ترى حالات فشل غير معروفة بسبب أخطاء في التسمية أو البنية.

نشر حزمة WAR إلى Tomcat أو JBoss EAP باستخدام az webapp deploy الأمر . حدد المسار إلى حزمة Java المحلية الخاصة بك ل --src-path.

az webapp deploy --resource-group <group-name> --name <app-name> --src-path ./<package-name>.war

يستخدم أمر CLI Kudu publish API لنشر الحزمة ويمكن تخصيصه بالكامل.

نشر ملفات فردية

نشر برنامج نصي لبدء التشغيل ومكتبة وملف ثابت إلى تطبيق الويب الخاص بك باستخدام az webapp deploy الأمر مع المعلمة --type .

إذا قمت بنشر برنامج نصي لبدء التشغيل بهذه الطريقة، فإن App Service تستخدم البرنامج النصي تلقائيا لبدء تشغيل التطبيق.

يستخدم أمر CLI Kudu publish API لنشر الملفات. يمكن تخصيص الأمر بالكامل.

نشر برنامج نصي لبدء التشغيل

az webapp deploy --resource-group <group-name> --name <app-name> --src-path scripts/startup.sh --type=startup

نشر ملف مكتبة

az webapp deploy --resource-group <group-name> --name <app-name> --src-path driver.jar --type=lib

نشر ملف ثابت

az webapp deploy --resource-group <group-name> --name <app-name> --src-path config.json --type=static

النشر إلى التطبيقات المؤمنة بالشبكة

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

يمكن أن يكون عنوان URL البعيد أي موقع يمكن الوصول إليه بشكل عام، ولكن من الأفضل استخدام حاوية تخزين كائن ثنائي كبير الحجم مع مفتاح توقيع وصول مشترك (SAS) لحمايتها.

az webapp deploy استخدم الأمر كما تفعل في الأقسام الأخرى، ولكن استخدم --src-url بدلا من --src-path. المثال التالي يستخدم معامل --src-url لتحديد عنوان URL لملف ZIP المستضاف في حساب تخزين Azure.

az webapp deploy --resource-group <group-name> --name <app-name> --src-url "https://storagesample.blob.core.windows.net/sample-container/myapp.zip?sv=2021-10-01&sb&sig=slk22f3UrS823n4kSh8Skjpa7Naj4CG3 --type zip

مرجع Kudu publish API

publish تسمح لك Kudu API بتحديد نفس المعلمات من أمر CLI كمعلمات استعلام URL. للمصادقة باستخدام Kudu REST API، نوصي بمصادقة الرمز المميز، ولكن يمكنك أيضا استخدام المصادقة الأساسية مع بيانات اعتماد نشر التطبيق.

يعرض الجدول التالي معلمات الاستعلام المتوفرة وقيمها المسموح بها والأوصاف.

المفتاح القيم المسموح بها ‏‏الوصف‬ مطلوب نوع
type war|jar|ear|lib|startup|static|zip هذا هو نوع البيانات الاصطناعية التي يتم نشرها. يقوم بتعيين المسار الهدف الافتراضي وإعلام تطبيق الويب بكيفية التعامل مع التوزيع.

type=zip: انشر حزمة ZIP عن طريق فك ضغط المحتوى إلى /home/site/wwwroot. path المعلمة اختيارية.

type=war: نشر حزمة WAR. بشكل افتراضي، يتم نشر حزمة WAR إلى /home/site/wwwroot/app.war. يمكن تحديد المسار الهدف باستخدام path.

type=jar: انشر حزمة JAR إلى /home/site/wwwroot/app.jar. path يتم تجاهل المعلمة.

type=ear: انشر حزمة EAR إلى /home/site/wwwroot/app.ear. path يتم تجاهل المعلمة.

type=lib: نشر ملف مكتبة JAR. بشكل افتراضي، يتم نشر الملف إلى /home/site/libs. يمكن تحديد المسار الهدف باستخدام path.

type=static: نشر ملف ثابت، مثل برنامج نصي. بشكل افتراضي، يتم نشر الملف إلى /home/site/wwwroot.

type=startup: نشر برنامج نصي تستخدمه App Service تلقائيا كبرنامج نصي لبدء التشغيل لتطبيقك. افتراضيا، يتم نشر السكريبت إلى D:\home\site\scripts\<name-of-source> ل Windows وhome/site/wwwroot/startup.sh للينكس. يمكن تحديد المسار الهدف باستخدام path.
‏‏نعم‬ السلسلة‬
restart true|false بشكل افتراضي، تعيد واجهة برمجة التطبيقات تشغيل التطبيق بعد عملية التوزيع (restart=true). عند نشر بيانات اصطناعية متعددة، يمكنك منع إعادة التشغيل على الكل ما عدا التوزيع النهائي عن طريق تعيين restart=false. لا قيمة منطقية
clean true|false تحديد ما إذا كنت تريد تنظيف (حذف) التوزيع الهدف قبل نشر البيانات الاصطناعية هناك. لا قيمة منطقية
ignorestack true|false تستخدم WEBSITE_STACK واجهة برمجة تطبيقات النشر متغير البيئة لاختيار الإعدادات الافتراضية الآمنة اعتمادا على مكدس لغة موقعك. يؤدي تعيين هذه المعلمة إلى false تعطيل أي إعدادات افتراضية خاصة باللغة. لا قيمة منطقية
path مسار مطلق المسار المطلق لنشر البيانات الاصطناعية إليه. على سبيل المثال، /home/site/deployments/tools/driver.jar أو /home/site/scripts/helper.sh. لا السلسلة‬

لسيناريوهات النشر المتقدمة، جرب deploying to Azure باستخدام Git. يتيح النشر القائم على Git على Azure التحكم في الإصدارات، واستعادة الحزم، وMSBuild، والمزيد.