توزيع الملفات إلى App Service

إشعار

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

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

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

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

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

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

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

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

هام

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

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

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

إذا لم تريد أن تشغل خدمة التطبيقات أتمتة النشر لك، فقم بتشغيل كافة مهام البنية (على سبيل المثال، npm وbower وgulp وcomposer وpip) وتأكد من أن لديك كل الملفات التي تحتاجها لتشغيل التطبيق. هذه الخطوة مطلوبة إذا كنت تريد تشغيل حزمتك مباشرة.

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

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

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

توزيع حزمة ZIP

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

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

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

إشعار

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

باستخدام واجهة مستخدم توزيع zip في Kudu

في المستعرض، انتقل إلى https://<app_name>.scm.azurewebsites.net/ZipDeployUI (راجع الملاحظة في الأعلى).

حمّل حزمة ZIP التي أنشأتها في إنشاء حزمة ZIP لمشروع عن طريق سحبها إلى منطقة مستكشف الملفات على صفحة الويب.

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

لا تعمل نقطة النهاية أعلاه لخدمات تطبيقات Linux في هذا الوقت. فكر في استخدام FTP أو API لتوزيع ZIP بدلاً من ذلك.

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

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

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

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

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

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

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

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

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

التوزيع لحزم WAR/JAR/EAR

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

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

قم بتوزيع حزمة 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 لتوزيع الملفات ويمكن تخصيصها بالكامل.

توزيع الملفات الفردية

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

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

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

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

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 Storage.

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

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

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

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

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

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

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