إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
إشعار
Run from package غير مدعوم لتطبيقات Python. عند نشر ملف ZIP لكود Python الخاص بك، تحتاج إلى تعيين علامة لتمكين أتمتة بناء Azure. ستقوم أتمتة البناء بإنشاء بيئة Python الافتراضية لتطبيقك وتثبيت أي متطلبات وحزمة ضرورية. لمزيد من المعلومات، راجع أتمتة البناء.
Run from package أيضا غير مدعوم لتطبيقات Java على "Azure App Service". تتطلب أوقات تشغيل Java المدمجة (Java SE، Tomcat، وJBoss EAP) وصولا كتابيا إلى مجلد التطبيقات عند بدء التشغيل، بينما يقوم برنامج Run from Package بتحميل محتوى التطبيق كنظام ملفات للقراءة فقط.
في نظام "Azure App Service"، يمكنك تشغيل تطبيقاتك مباشرة من ملف حزمة ZIP للنشر. توضح هذه المقالة كيفية تمكين هذه الوظيفة في تطبيق الوظائف الخاص بك.
جميع طرق النشر الأخرى في App Service تشترك في شيء، وهو أن ملفات فك الضغط الخاصة بك تنشر إلى D:\home\site\wwwroot في تطبيقك (أو /home/site/wwwroot لتطبيقات لينكس). نظرا لأن نفس الدليل يستخدم من قبل تطبيقك أثناء التشغيل، فمن الممكن أن يفشل النشر بسبب تعارضات قفل الملفات، وأن يتصرف التطبيق بشكل غير متوقع لأن بعض الملفات لم يتم تحديثها بعد. لتفعيل هذا الإعداد، لا تحتاج إلى تعيين أي قيمة للمتحول WEBSITE_RUN_FROM_PACKAGE ، أو يمكنك إزالته بالكامل.
على النقيض من ذلك، عندما تشغل مباشرة من حزمة ZIP، لا تنسخ الملفات في الحزمة إلى مجلد wwwroot . بدلاً من ذلك، يتم تحميل حزمة ZIP نفسها مباشرة كدليل wwwroot للقراءة فقط. لتمكين هذا الإعداد، قم بتعيين WEBSITE_RUN_FROM_PACKAGE=1 أو قم بتوفير عنوان URL لملف ZIP. هناك العديد من الفوائد للتشغيل من ملف حزمة:
- إزالة تعارضات قفل الملف بين النشر ووقت التشغيل.
- ضمان تشغيل التطبيقات المنشورة بالكامل فقط في أي وقت.
- يمكن توزيعها في تطبيق إنتاج (مع إعادة التشغيل).
- يحسن أداء عمليات نشر Azure Resource Manager.
- قد يقلل من أوقات البدء الباردة، وخاصة بالنسبة إلى وظائف JavaScript مع أشجار حزمة npm كبيرة.
إشعار
حاليًا، يتم دعم ملفات الحزمة ZIP فقط.
إنشاء حزمة 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
WEBSITE_RUN_FROM_PACKAGE يتيح إعداد التطبيق التشغيل من حزمة ZIP. لتعيينه، قم بتشغيل الأمر التالي باستخدام Azure CLI.
az webapp config appsettings set --resource-group <group-name> --name <app-name> --settings WEBSITE_RUN_FROM_PACKAGE="1"
WEBSITE_RUN_FROM_PACKAGE="1" يتيح لك تشغيل تطبيقك من حزمة ZIP المحلية إلى تطبيقك. يمكنك أيضًا التشغيل من حزمة بعيدة.
تشغيل حزمة ZIP
أسهل طريقة لتشغيل حزمة ZIP في خدمة التطبيقات الخاصة بك هي بأمر Azure CLI az webapp deployment source config-zip. على سبيل المثال:
az webapp deploy --resource-group <group-name> --name <app-name> --src-path <filename>.zip
WEBSITE_RUN_FROM_PACKAGE نظرا لتعيين إعداد التطبيق، لا يستخرج هذا الأمر محتوى حزمة ZIP إلى الدليل D:\home\site\wwwroot لتطبيقك. بدلا من ذلك، يرفع ملف ZIP as-is إلى D:\home\data\SitePackages، وينشئ packagename.txt في نفس المجلد يحتوي على اسم حزمة ZIP ليتم تحميله أثناء وقت التشغيل. إذا قمت بتحميل حزمة ZIP بطريقة مختلفة (مثل FTP)، فستحتاج إلى إنشاء الدليل D:\home\data\SitePackages وملف packagename.txt يدويًا.
يقوم الأمر أيضًا بإعادة تشغيل التطبيق. نظرًا إلى تعيينها WEBSITE_RUN_FROM_PACKAGE، تقوم App Service بتحميل الحزمة التي تم تحميلها كدليل wwwroot للقراءة فقط وتشغيل التطبيق مباشرة من هذا الدليل المحمل.
تشغيل من عنوان URL الخارجي بدلاً من ذلك
يمكنك أيضا تشغيل حزمة ZIP من رابط خارجي، مثل مساحة تخزين Azure Blob. يمكنك استخدام Azure Storage Explorer لرفع ملفات حزمة ZIP إلى حساب تخزين Blob الخاص بك. يجب استخدام حاوية تخزين خاصة مع توقيع الوصول المشترك (SAS) أو استخدام هوية مدارة لتمكين وقت تشغيل App Service للوصول إلى حزمة ZIP بشكل آمن.
إشعار
حاليا، لا يمكن ترحيل مورد خدمة التطبيقات الحالي الذي يشغل حزمة ZIP محلية ليعمل من حزمة ZIP بعيدة. سيتعين عليك إنشاء مورد خدمة تطبيقات جديد مهيأ ليعمل من رابط خارجي.
بمجرد تحميل الملف إلى تخزين كائن ثنائي كبير الحجم والحصول على عنوان ويب لتوقيع الوصول المشترك (SAS) للملف، قم بتعيين إعداد التطبيق WEBSITE_RUN_FROM_PACKAGE إلى عنوان URL. تأكد من أن عنوان URL ينتهي ب .zip. المثال التالي يقوم بذلك باستخدام Azure CLI:
az webapp config appsettings set --name <app-name> --resource-group <resource-group-name> --settings WEBSITE_RUN_FROM_PACKAGE="https://myblobstorage.blob.core.windows.net/content/SampleCoreMVCApp.zip?st=2018-02-13T09%3A48%3A00Z&se=2044-06-14T09%3A48%3A00Z&sp=rl&sv=2017-04-17&sr=b&sig=bNrVrEFzRHQB17GFJ7boEanetyJ9DGwBSV8OM3Mdh%2FM%3D"
إذا قمت بنشر حزمة محدثة بنفس الاسم إلى تخزين كائن ثنائي كبير الحجم، فستحتاج إلى إعادة تشغيل التطبيق بحيث يتم تحميل الحزمة المحدثة في App Service.
Access a package in مساحة تخزين Azure Blob using a managed identity
يمكنك تكوين مساحة تخزين Azure Blob لتفويض الطلبات تفويض باستخدام Microsoft Entra ID. يعني هذا التكوين أنه بدلا من إنشاء مفتاح SAS مع انتهاء الصلاحية، يمكنك بدلا من ذلك الاعتماد على الهوية المدارة للتطبيق.
بشكل افتراضي، يتم استخدام الهوية المعينة من قبل النظام للتطبيق. إذا كنت ترغب في تحديد هوية معيّنة من قبل المستخدم، يمكنك ضبط إعداد التطبيق WEBSITE_RUN_FROM_PACKAGE_BLOB_MI_RESOURCE_ID على معرّف المورد لتلك الهوية. يمكن أن يقبل SystemAssigned الإعداد أيضا كقيمة، وهو ما يعادل حذف الإعداد.
لتمكين إحضار الحزمة باستخدام الهوية:
تأكد من تكوين الكائن الثنائي كبير الحجم للوصول الخاص.
امنح الهوية دور قارئ بيانات كائن ثنائي كبير الحجم للتخزين مع نطاق عبر الكائن الثنائي كبير الحجم للحزمة. راجع تعيين دور Azure للوصول إلى بيانات blob للحصول على تفاصيل حول إنشاء تعيين الدور.
قم بتعيين إعداد التطبيق
WEBSITE_RUN_FROM_PACKAGEإلى عنوان URL للكائن الثنائي كبير الحجم للحزمة. عادة ما يكون عنوان URL هذا من النموذجhttps://<storage-account-name>.blob.core.windows.net/<container-name>/<path-to-package>أو ما شابه ذلك.إذا كنت ترغب في تحديد هوية معيّنة من قبل المستخدم، يمكنك ضبط إعداد التطبيق
WEBSITE_RUN_FROM_PACKAGE_BLOB_MI_RESOURCE_IDعلى معرّف المورد لتلك الهوية. يمكن للإعداد أيضا قبول SystemAssigned كقيمة، رغم أن هذا يعادل حذف الإعداد تماما. معرف الموارد هو تمثيل قياسي لمورد في Azure. بالنسبة لهوية مدارة معينة من قبل المستخدم، ستكون/subscriptions/subid/resourcegroups/rg-name/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity-name. يمكن الحصول على معرف مورد الهوية المدارة المعينة من قبل المستخدم في معرفخصائص>الإعدادات>للهوية المدارة المعينة للمستخدم.
نشر ملفات WebJob عند التشغيل من الحزمة
هناك طريقتان لنشر ملفات WebJob عند تمكين تشغيل تطبيق من الحزمة:
-
قم بالنشر في نفس حزمة ZIP التي تجمعها في تطبيقك: قم بتضمينها كما تفعل عادة (
<project-root>\app_data\jobs\...والتي تتوافق مع مسار\site\wwwroot\app_data\jobs\...النشر كما هو محدد في بداية الويب السريعة). -
نشر بشكل منفصل عن حزمة ZIP في تطبيقك: بما أن مسار
\site\wwwroot\app_data\jobs\...النشر المعتاد أصبح الآن للقراءة فقط، لا يمكنك نشر ملفات WebJob هناك. بدلا من ذلك، قم بنشر ملفات WebJob على\site\jobs\...، وهو ليس للقراءة فقط. WebJobs التي تم نشرها إلى\site\wwwroot\app_data\jobs\...وكلاهما\site\jobs\...يعمل.
إشعار
عندما \site\wwwroot تصبح للقراءة فقط، ستفشل عمليات مثل إنشاء disable.job .
استكشاف الأخطاء وإصلاحها
- التشغيل مباشرة من حزمة يجعل
wwwrootللقراءة فقط. سيتلقى تطبيقك خطأ إذا حاول كتابة الملفات إلى هذا الدليل. - تنسيقات TAR وGZIP غير مدعومة.
- يمكن أن يكون ملف ZIP بسعة 1 جيجابايت كحد أقصى.
- هذه الميزة غير متوافقة مع ذاكرة التخزين المؤقت المحلية.
- لأداء التشغيل البارد المحسن، استخدم خيار Zip المحلي (
WEBSITE_RUN_FROM_PACKAGE=1).