كيفية تكوين وتشغيل مهام بدء التشغيل لخدمة Azure Cloud (كلاسيك)
هام
تم الآن إهمال الخدمات السحابية (الكلاسيكية) لجميع العملاء اعتبارا من 1 سبتمبر 2024. سيتم إيقاف أي عمليات نشر قيد التشغيل الحالية وإيقاف تشغيلها بواسطة Microsoft وسيتم فقدان البيانات بشكل دائم بدءا من أكتوبر 2024. ينبغي أن تستخدم عمليات النشر الجديدة نموذج النشر الجديد القائم على Azure Resource Manager Azure Cloud Services (الدعم الموسع).
يمكنك استخدام مهام بدء التشغيل لتنفيذ العمليات قبل بدء تشغيل دور. تتضمن العمليات التي قد ترغب في تنفيذها تثبيت مكون أو تسجيل مكونات نموذج كائن المكون (COM) أو تعيين مفاتيح التسجيل أو بدء عملية طويلة الأمد.
إشعار
مهام بدء التشغيل غير قابلة للتطبيق على الأجهزة الظاهرية، على أدوار العامل وويب خدمة Cloud فقط.
مهام بدء التشغيل الشائعة
مهام بدء التشغيل هي إجراءات يتم اتخاذها قبل بدء أدوارك. يعرف ملف ServiceDefinition.csdef مهام بدء التشغيل باستخدام عنصر المهمة ضمن عنصر بدء التشغيل. غالباً ما تكون مهام بدء التشغيل عبارة عن ملفات دُفعة، ولكنها يمكن أيضاً أن تكون تطبيقات وحدة تحكم، أو ملفات دُفعة تبدأ برامج PowerShell النصية.
تمرّر متغيرات البيئة المعلومات إلى مهمة بدء التشغيل، ويمكن استخدام موقع التخزين المحلي لتمرير المعلومات من مهمة بدء التشغيل. على سبيل المثال، يمكن لمتغير البيئة تحديد المسار إلى برنامج تريد تثبيته، ويمكن كتابة الملفات إلى التخزين المحلي. من هناك، يمكن لأدوارك قراءة الملفات.
يمكن لمهمة بدء التشغيل تسجيل المعلومات والأخطاء إلى الدليل المحدد بواسطة متغير البيئة TEMP. أثناء مهمة بدء التشغيل، يتحول متغير البيئة TEMP إلى الدليل C:\Resources\temp\[guid].[rolename]\RoleTemp عند التشغيل على السحابة.
يمكن أيضاً تنفيذ مهام بدء التشغيل عدة مرات بين عمليات إعادة التشغيل. على سبيل المثال، يتم تشغيل مهمة بدء التشغيل في كل مرة يتم فيها إعادة تدوير الدور، وقد لا تتضمن عمليات إعادة تدوير الأدوار دائما إعادة التشغيل. يجب كتابة مهام بدء التشغيل بطريقة تسمح لها بالعمل عدة مرات دون مشاكل.
يجب أن تنتهي مهام بدء التشغيل بمستوى الخطأ (أو تعليمة برمجية للخروج) من الصفر لإكمال عملية بدء التشغيل. إذا انتهت مهمة بدء التشغيل بخطأ غير صفري، يفشل الدور في البدء.
فشل بدء تشغيل الأمر
يسرد التالي إجراء بدء تشغيل الدور في Azure:
يتم وضع علامة على المثيل كبدء ولا يتلقى نسبة استخدام الشبكة.
يتم تنفيذ جميع مهام بدء التشغيل وفقاً لسمة نوع المهمة.
يتم تنفيذ المهام البسيطة بشكل متزامن، واحدة تلو الأخرى.
يتم بدء تشغيل المهام في الخلفية والواجهة الأمامية بشكل غير متزامن، بالتوازي مع مهمة بدء التشغيل.
تحذير
قد لا يتم تكوين IIS بشكل كامل أثناء مرحلة مهمة بدء التشغيل في عملية بدء التشغيل، لذلك قد لا تتوفر البيانات الخاصة بالدور. يجب أن تستخدم مهام بدء التشغيل التي تتطلب بيانات خاصة بالدور Microsoft.WindowsAzure.ServiceRuntime.RoleEntryPoint.OnStart.
يتم بدء عملية مضيف الدور ويتم إنشاء الموقع في خدمات معلومات الإنترنت (IIS).
يتم استدعاء الأسلوب Microsoft.WindowsAzure.ServiceRuntime.RoleEntryPoint.OnStart.
تم وضع علامة على المثيل على أنه جاهز ويتم توجيه مسار نسبة استخدام الشبكة إلى المثيل.
يتم استدعاء الأسلوب Microsoft.WindowsAzure.ServiceRuntime.RoleEntryPoint.Run.
مثال لمهمة بدء التشغيل
يتم تعريف مهام بدء التشغيل في الملف ServiceDefinition.csdef في عنصر المهمة. تحدد سمة commandLine اسم ومعلمات ملف دفعة بدء التشغيل أو أمر وحدة التحكم، وتحدد السمة executionContext مستوى امتياز مهمة بدء التشغيل، وتحدد سمة taskType كيفية تنفيذ المهمة.
في هذا المثال، يتم إنشاء متغير بيئة، MyVersionNumber، لمهمة بدء التشغيل ويتم ضبطه على القيمة "1.0.0.0".
ServiceDefinition.csdef:
<Startup>
<Task commandLine="Startup.cmd" executionContext="limited" taskType="simple" >
<Environment>
<Variable name="MyVersionNumber" value="1.0.0.0" />
</Environment>
</Task>
</Startup>
في المثال التالي، يكتب الملف الدُفعة Startup.cmd السطر "الإصدار الحالي هو 1.0.0.0" إلى الملف StartupLog.txt في الدليل المحدد بواسطة متغير البيئة TEMP. EXIT /B 0
يضمن السطر أن تنتهي مهمة بدء التشغيل تنتهي بمستوى خطأ صفر.
ECHO The current version is %MyVersionNumber% >> "%TEMP%\StartupLog.txt" 2>&1
EXIT /B 0
إشعار
في Visual Studio، يجب تعيين خاصية النسخ إلى دليل الإخراج لملف دُفعة بدء التشغيل على النسخ دائماً للتأكد من نشر ملف دُفعة بدء التشغيل بشكل صحيح إلى مشروعك على Azure (approot\bin لأدوار الويب، وapproot لأدوار العامل).
وصف سمات المهمة
فيما يلي وصف سمات عنصر المهمة في الملف ServiceDefinition.csdef:
commandLine - تحديد سطر الأوامر لمهمة بدء التشغيل:
- الأمر، مع معلمات سطر الأوامر الاختيارية، الذي يبدأ مهمة بدء التشغيل.
- غالبا ما تكون هذه السمة هي اسم ملف ملف دفعة .cmd أو .bat.
- ترتبط المهمة بالمجلد AppRoot\Bin للنشر. لا يتم توسيع متغيرات البيئة في تحديد مسار المهمة وملفها. إذا كان توسيع البيئة مطلوباً، يمكنك إنشاء برنامج نصي صغير .cmd يستدعي مهمة بدء التشغيل.
- يمكن أن يكون تطبيق وحدة تحكم أو ملف دُفعة يبدأ برنامج PowerShell نصي.
executionContext - تحديد مستوى الامتياز لمهمة بدء التشغيل. يمكن أن يكون مستوى الامتياز محدوداً أو غير مقيداً:
- محدود
تعمل مهمة بدء التشغيل بنفس امتيازات الدور. عندما تكون السمة executionContext للعنصر وقت التشغيل محدودة أيضاً، يتم استخدام امتيازات المستخدم. - غير مقيد
يتم تشغيل مهمة بدء التشغيل بامتيازات المسؤول. تسمح هذه الامتيازات لمهام بدء التشغيل بتثبيت البرامج، وإجراء تغييرات في تكوين IIS، وإجراء تغييرات في السجل، ومهام أخرى على مستوى المسؤول، دون زيادة مستوى امتياز الدور نفسه.
إشعار
لا يلزم أن يكون مستوى الامتياز الخاص بمهمة بدء التشغيل هو نفسه الدور.
taskType - تحديد طريقة تنفيذ مهمة بدء التشغيل.
بسيطة
يتم تنفيذ المهام بشكل متزامن، واحدة تلو الأخرى، بالترتيب المحدد في الملف ServiceDefinition.csdef. عندما تنتهي مهمة بدء تشغيل بسيطة واحدة مع مستوى خطأ صفر، يتم تنفيذ مهمة بدء التشغيل البسيطة التالية. إذا لم تكن هناك مهام بدء تشغيل أكثر بساطة لتنفيذها، فسيبدأ الدور نفسه.إشعار
إذا انتهت المهمة البسيطة بمستوى خطأ غير صفري، سيتم حظر المثيل. لن تبدأ مهام بدء التشغيل البسيطة اللاحقة، والدور نفسه.
للتأكد من أن ملف الدُفعة ينتهي بمستوى خطأ صفر، نفّذ الأمر
EXIT /B 0
في نهاية عملية ملف الدُفعة.الخلفية
يتم تنفيذ المهام بشكل غير متزامن، بالتوازي مع بدء تشغيل الدور.الواجهة الأمامية
يتم تنفيذ المهام بشكل غير متزامن، بالتوازي مع بدء تشغيل الدور. الفرق الرئيسي بين المهمة الأمامية والمهمة الخلفية هو أن المهمة الأمامية تمنع الدور من إعادة التدوير أو إيقاف التشغيل حتى تنتهي المهمة. لا تحتوي مهام الخلفية على هذا التقييد.
متغيرات البيئة
متغيرات البيئة هي طريقة لتمرير المعلومات إلى مهمة بدء التشغيل. على سبيل المثال، يمكنك وضع المسار إلى كائن ثنائي كبير الحجم يحتوي على برنامج لتثبيته، أو أرقام المنافذ التي يستخدمها دورك، أو إعدادات للتحكم في ميزات مهمة بدء التشغيل.
هناك نوعان من متغيرات البيئة لمهام بدء التشغيل؛ متغيرات البيئة الثابتة ومتغيرات البيئة بناءً على أعضاء الفئة RoleEnvironment. كلاهما موجودان في قسم البيئة من الملف ServiceDefinition.csdef، وكلاهما يستخدم العنصر المتغير وسمة الاسم.
تستخدم متغيرات البيئة الثابتة سمة القيمة لعنصر المتغير . ينشئ المثال السابق متغير البيئة MyVersionNumber الذي يحتوي على قيمة ثابتة من "1.0.0.0". مثال آخر هو إنشاء متغير بيئة StagingOrProduction ، والذي يمكنك تعيينه يدويا إلى قيم "التشغيل المرحلي" أو "الإنتاج" لتنفيذ إجراءات بدء تشغيل مختلفة استنادا إلى قيمة متغير البيئة StagingOrProduction .
لا تستخدم متغيرات البيئة المستندة إلى أعضاء فئة RoleEnvironment سمة القيمة لعنصر المتغير . بدلاً من ذلك، يتم استخدام العنصر التابع RoleInstanceValue، مع قيمة السمة المناسبة XPath، لإنشاء متغير بيئة بناءً على عضو معين في الفئة RoleEnvironment. يمكن العثور على قيم السمة XPath للوصول إلى قيم RoleEnvironment المختلفة هنا.
على سبيل المثال، لإنشاء متغير بيئة يكون "صحيحاً" عند تشغيل المثيل في محاكي الحساب، و"خطأ" عند التشغيل في السحابة، استخدم ما يلي عناصر Variable وRoleInstanceValue التالية:
<Startup>
<Task commandLine="Startup.cmd" executionContext="limited" taskType="simple">
<Environment>
<!-- Create the environment variable that informs the startup task whether it is running
in the Compute Emulator or in the cloud. "%ComputeEmulatorRunning%"=="true" when
running in the Compute Emulator, "%ComputeEmulatorRunning%"=="false" when running
in the cloud. -->
<Variable name="ComputeEmulatorRunning">
<RoleInstanceValue xpath="/RoleEnvironment/Deployment/@emulated" />
</Variable>
</Environment>
</Task>
</Startup>
الخطوات التالية
تعرف على كيفية تنفيذ بعض مهام بدء التشغيل الشائعة باستخدام خدمة Cloud.
حزمة خدمة Cloud التابعة لك.