توزيع الملفات إلى 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 والمزيد.