وظائف نظام التشغيل على Azure App Service

توضح هذه المقالة وظيفة نظام التشغيل الأساسية الشائعة المتوفرة لكافة تطبيقات Windows التي تعمل على Azure App Service. تتضمن هذه الوظيفة الوصول إلى الملفات والشبكة والسجل وسجلات وأحداث التشخيص.

ملاحظة

يتم تشغيل تطبيقات Linux في App Service في حاوياتها الخاصة. لديك حق الوصول الجذر إلى الحاوية ولكن لا يسمح بالوصول إلى نظام التشغيل المضيف. وبالمثل ، بالنسبة للتطبيقات التي تعمل في حاويات Windows ، لديك حق الوصول الإداري إلى الحاوية ولكن لا يمكنك الوصول إلى نظام التشغيل المضيف.

طبقات خطة خدمة التطبيق

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

ملاحظة

تعد خطط خدمة App Service Free و Shared (معاينة) طبقات أساسية يتم تشغيلها على نفس أجهزة Azure الظاهرية مثل تطبيقات App Service الأخرى. قد تنتمي بعض التطبيقات إلى عملاء آخرين. هذه المستويات مخصصة للاستخدام فقط لأغراض التطوير والاختبار.

نظرا لأن App Service تدعم تجربة توسيع سلسة بين المستويات المختلفة، يظل تكوين الأمان المفروض على تطبيقات App Service كما هو. وهذا يضمن أن التطبيقات لا تتصرف فجأة بشكل مختلف، وتفشل بطرق غير متوقعة، عندما تتحول خطة خدمة التطبيقات من طبقة إلى أخرى.

أطر التنمية

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

تدعم App Service مجموعة متنوعة من أطر التطوير ، بما في ذلك ASP.NET و ASP الكلاسيكي Node.js و PHP و Python. من أجل تبسيط تكوين الأمان وتطبيعه، تقوم تطبيقات App Service عادة بتشغيل أطر التطوير المختلفة باستخدام إعداداتها الافتراضية. يتم تحديث الأطر ومكونات وقت التشغيل التي توفرها المنصة بانتظام لتلبية متطلبات الأمان والامتثال ، ولهذا السبب لا نضمن إصدارات ثانوية / تصحيحية محددة ونوصي العملاء باستهداف الإصدار الرئيسي حسب الحاجة.

تلخص الأقسام التالية الأنواع العامة لوظائف نظام التشغيل المتوفرة لتطبيقات App Service.

الوصول إلى الملفات

توجد محركات أقراص مختلفة داخل App Service، بما في ذلك محركات الأقراص المحلية ومحركات أقراص الشبكة.

محركات الأقراص المحلية

في جوهرها ، خدمة التطبيقات هي خدمة تعمل فوق البنية التحتية ل Azure PaaS (النظام الأساسي كخدمة). ونتيجة لذلك، فإن محركات الأقراص المحلية التي يتم "إرفاقها" بجهاز ظاهري هي نفس أنواع محركات الأقراص المتوفرة لأي دور عامل يعمل في Azure. هذا يتضمن:

  • محرك أقراص نظام التشغيل (%SystemDrive%) ، الذي يختلف حجمه وفقا لحجم الجهاز الظاهري.
  • محرك أقراص موارد (%ResourceDrive%) تستخدمه App Service داخليا.

من المهم مراقبة استخدام القرص الخاص بك مع نمو التطبيق الخاص بك. إذا تم الوصول إلى حصة القرص ، فقد يكون لها آثار ضارة على التطبيق الخاص بك. على سبيل المثال:

  • قد يلقي التطبيق خطأ يشير إلى عدم وجود مساحة كافية على القرص.
  • قد تشاهد أخطاء في القرص عند الاستعراض إلى وحدة تحكم Kudu.
  • قد يفشل النشر من Azure DevOps أو Visual Studio مع ERROR_NOT_ENOUGH_DISK_SPACE: Web deployment task failed. (Web Deploy detected insufficient space on disk).
  • قد يعاني تطبيقك من بطء الأداء.

محركات أقراص الشبكة (مشاركات UNC)

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

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

نظرا لكيفية عمل خدمات Azure، سيتغير الجهاز الظاهري المحدد المسؤول عن استضافة مشاركة UNC بمرور الوقت. من المؤكد أن أسهم UNC سيتم تركيبها بواسطة أجهزة افتراضية مختلفة حيث يتم رفعها صعودا وهبوطا أثناء المسار العادي لعمليات Azure. لهذا السبب، يجب ألا تضع التطبيقات أبدا افتراضات مشفرة بشكل ثابت بأن معلومات الجهاز في مسار ملف UNC ستظل مستقرة بمرور الوقت. بدلا من ذلك ، يجب عليهم استخدام المسار %HOME%\site المطلق المزيف المريح الذي توفره خدمة التطبيق. يوفر هذا المسار المطلق المزيف طريقة محمولة وتطبيقية ولاأدرية للمستخدم للإشارة إلى التطبيق الخاص بك. باستخدام %HOME%\site، يمكن للمرء نقل الملفات المشتركة من تطبيق إلى آخر دون الحاجة إلى تكوين مسار مطلق جديد لكل عملية نقل.

أنواع الوصول إلى الملفات الممنوحة لتطبيق

يتم %HOME% تعيين الدليل في تطبيق إلى مشاركة محتوى في Azure Storage مخصص لهذا التطبيق، ويتم تحديد حجمه حسب طبقة التسعير الخاصة بك. قد يتضمن أدلة مثل تلك الخاصة بالمحتوى وسجلات الخطأ والتشخيص والإصدارات السابقة من التطبيق التي تم إنشاؤها بواسطة عنصر تحكم المصدر. تتوفر هذه الدلائل لرمز تطبيق التطبيق في وقت التشغيل للوصول للقراءة والكتابة. نظرا لعدم تخزين الملفات محليا، فهي ثابتة عبر عمليات إعادة تشغيل التطبيق.

على محرك أقراص النظام، تحتفظ %SystemDrive%\local App Service بمساحة التخزين المحلية المؤقتة الخاصة بالتطبيق. التغييرات التي تطرأ على الملفات في هذا الدليل ليست مستمرة عبر عمليات إعادة تشغيل التطبيق. على الرغم من أن التطبيق لديه حق الوصول الكامل للقراءة / الكتابة إلى وحدة التخزين المحلية المؤقتة الخاصة به ، إلا أن هذا التخزين لا يقصد به حقا استخدامه مباشرة بواسطة رمز التطبيق. بدلا من ذلك ، فإن القصد هو توفير تخزين مؤقت للملفات ل IIS وأطر عمل تطبيقات الويب. تحد خدمة التطبيقات أيضا من مقدار مساحة التخزين لكل %SystemDrive%\local تطبيق لمنع التطبيقات الفردية من استهلاك كميات زائدة من مساحة تخزين الملفات المحلية. بالنسبة للطبقات المجانيةوالمشتركةوالاستهلاك (وظائف Azure)، يبلغ الحد الأقصى 500 ميغابايت. راجع الجدول التالي للاطلاع على المستويات الأخرى:

عائلة SKU B1 / S1 / إلخ. B2 / S2 / إلخ. B3 / S3 / إلخ.
أساسي، قياسي، Premium 11 جيجابايت 15 جيجابايت 58 جيجابايت
بريميوم V2، بريميوم V3، معزول 21 جيجابايت 61 جيجابايت 140 جيجابايت

مثالان على كيفية استخدام App Service للتخزين المحلي المؤقت هما دليل ملفات ASP.NET المؤقتة ودليل ملفات IIS المضغوطة. يستخدم %SystemDrive%\local\Temporary ASP.NET Files نظام التحويل البرمجي ASP.NET الدليل كموقع مؤقت لذاكرة التخزين المؤقت للترجمة البرمجية. يستخدم IIS الدليل لتخزين %SystemDrive%\local\IIS Temporary Compressed Files مخرجات الاستجابة المضغوطة. يتم إعادة تعيين كلا النوعين من استخدام الملفات (بالإضافة إلى أنواع أخرى) في App Service إلى وحدة تخزين محلية مؤقتة لكل تطبيق. تضمن إعادة التعيين هذه استمرار الوظائف كما هو متوقع.

يتم تشغيل كل تطبيق في App Service كهوية عملية عمل فريدة عشوائية منخفضة الامتيازات تسمى "هوية تجمع التطبيقات"، الموضحة بشكل أكبر في وثائق هويات تجمع تطبيقات IIS. يستخدم رمز التطبيق هذه الهوية للوصول الأساسي للقراءة فقط إلى محرك أقراص نظام التشغيل. وهذا يعني أن رمز التطبيق يمكنه سرد هياكل الدليل الشائعة وقراءة الملفات الشائعة على محرك أقراص نظام التشغيل. على الرغم من أن هذا قد يبدو مستوى واسع إلى حد ما من الوصول، إلا أنه يمكن الوصول إلى نفس الدلائل والملفات عند توفير دور عامل في خدمة مستضافة في Azure وقراءة محتويات محرك الأقراص.

الوصول إلى الملفات عبر مثيلات متعددة

يحتوي دليل مشاركة المحتوى (%HOME%) على محتوى التطبيق، ويمكن أن يكتب رمز التطبيق إليه. إذا تم تشغيل تطبيق على مثيلات متعددة، %HOME% تتم مشاركة الدليل بين جميع المثيلات بحيث ترى جميع المثيلات نفس الدليل. لذلك ، على سبيل المثال ، إذا قام أحد التطبيقات بحفظ الملفات التي تم تحميلها في %HOME% الدليل ، فستكون هذه الملفات متاحة على الفور لجميع المثيلات.

لا تتم مشاركة دليل التخزين المحلي المؤقت (%SystemDrive%\local) بين المثيلات، كما لا تتم مشاركته بين التطبيق وتطبيق Kudu الخاص به.

الوصول إلى الشبكة

يمكن أن تستخدم التعليمات البرمجية للتطبيق بروتوكولات تستند إلى TCP/IP وUDP لإجراء اتصالات الشبكة الصادرة بنقاط نهاية يمكن الوصول إليها عبر الإنترنت والتي تعرض الخدمات الخارجية. يمكن للتطبيقات استخدام هذه البروتوكولات نفسها للاتصال بالخدمات داخل Azure، على سبيل المثال، عن طريق إنشاء اتصالات HTTPS بقاعدة بيانات SQL.

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

يتم دعم الأنابيب المسماة أيضا كآلية اتصال بين العمليات (IPC) بين العمليات المختلفة التي تقوم بتشغيل تطبيق بشكل جماعي. على سبيل المثال، تعتمد وحدة IIS FastCGI النمطية على أنابيب مسماة لتنسيق العمليات الفردية التي تقوم بتشغيل صفحات PHP.

تنفيذ التعليمات البرمجية والعمليات والذاكرة

كما ذكرنا سابقا، يتم تشغيل التطبيقات داخل عمليات العمال ذوي الامتيازات المنخفضة باستخدام هوية تجمع تطبيقات عشوائية. يحتوي رمز التطبيق على حق الوصول إلى مساحة الذاكرة المرتبطة بعملية العامل ، بالإضافة إلى أي عمليات فرعية قد يتم إنتاجها بواسطة عمليات CGI أو التطبيقات الأخرى. ومع ذلك، لا يمكن لأحد التطبيقات الوصول إلى ذاكرة أو بيانات تطبيق آخر حتى إذا كان على نفس الجهاز الظاهري.

يمكن للتطبيقات تشغيل البرامج النصية أو الصفحات المكتوبة باستخدام أطر تطوير الويب المدعومة. لا تقوم خدمة التطبيقات بتكوين أي إعدادات إطار عمل ويب إلى أوضاع أكثر تقييدا. على سبيل المثال، ASP.NET التطبيقات التي تعمل على خدمة التطبيقات تعمل بثقة "كاملة" بدلا من وضع الثقة الأكثر تقييدا. يمكن لأطر عمل الويب، بما في ذلك ASP الكلاسيكي و ASP.NET، استدعاء مكونات COM قيد المعالجة (ولكن ليس مكونات COM خارج العملية) مثل ADO (كائنات بيانات ActiveX) التي يتم تسجيلها افتراضيا على نظام التشغيل Windows.

يمكن للتطبيقات أن تفرخ وتشغل تعليمات برمجية تعسفية. يسمح للتطبيق بالقيام بأشياء مثل إنتاج غلاف أمر أو تشغيل برنامج نصي PowerShell. ومع ذلك ، على الرغم من أنه يمكن إنشاء تعليمات برمجية وعمليات تعسفية من تطبيق ، إلا أن البرامج والبرامج النصية القابلة للتنفيذ لا تزال مقيدة بالامتيازات الممنوحة لتجمع التطبيقات الأصل. على سبيل المثال، يمكن أن ينتج أحد التطبيقات ملفا تنفيذيا يقوم بإجراء مكالمة HTTP صادرة، ولكن لا يمكن أن يحاول نفس الملف القابل للتنفيذ إلغاء ربط عنوان IP الخاص بجهاز ظاهري من بطاقة واجهة الشبكة (NIC) الخاصة به. يسمح بإجراء مكالمة شبكة صادرة إلى تعليمات برمجية منخفضة الامتياز، ولكن محاولة إعادة تكوين إعدادات الشبكة على جهاز ظاهري تتطلب امتيازات إدارية.

سجلات التشخيص والأحداث

معلومات السجل هي مجموعة أخرى من البيانات التي تحاول بعض التطبيقات الوصول إليها. تتضمن أنواع معلومات السجل المتوفرة للتعليمات البرمجية قيد التشغيل في App Service معلومات التشخيص والسجل التي تم إنشاؤها بواسطة تطبيق يمكن الوصول إليه بسهولة أيضا بواسطة التطبيق.

على سبيل المثال، تتوفر سجلات W3C HTTP التي تم إنشاؤها بواسطة تطبيق نشط إما على دليل سجل في موقع مشاركة الشبكة الذي تم إنشاؤه للتطبيق، أو متوفرة في مساحة تخزين blob إذا قام أحد العملاء بإعداد تسجيل W3C إلى التخزين. يتيح الخيار الأخير تجميع كميات كبيرة من السجلات دون التعرض لخطر تجاوز حدود تخزين الملفات المرتبطة بمشاركة الشبكة.

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

يتم Windows مناطق تسجيل وتتبع التشخيصات غير المتوفرة للتطبيقات أحداث ETW وسجلات أحداث Windows الشائعة (على سبيل المثال، سجلات أحداث النظام والتطبيق والأمان). نظرا لأن معلومات تتبع ETW يمكن أن تكون قابلة للعرض على مستوى الجهاز (مع قوائم التحكم في الوصول الصحيحة) ، يتم حظر الوصول للقراءة والكتابة إلى أحداث ETW. قد يلاحظ المطورون أن استدعاءات واجهة برمجة التطبيقات لقراءة وكتابة أحداث ETW وسجلات أحداث Windows الشائعة تبدو وكأنها تعمل ، ولكن ذلك لأن App Service "تزييف" المكالمات بحيث يبدو أنها تنجح. في الواقع ، لا يمكن لرمز التطبيق الوصول إلى بيانات الحدث هذه.

الوصول إلى السجل

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

يتم حظر الوصول إلى الكتابة إلى السجل، بما في ذلك الوصول إلى أي مفاتيح تسجيل لكل مستخدم. من وجهة نظر التطبيق، لا ينبغي أبدا الاعتماد على الوصول إلى السجل في بيئة Azure حيث يمكن (ويفعل) ترحيل التطبيقات عبر أجهزة افتراضية مختلفة. التخزين الوحيد المستمر القابل للكتابة الذي يمكن الاعتماد عليه بواسطة التطبيق هو بنية دليل المحتوى لكل تطبيق المخزنة على مشاركات App Service UNC.

الوصول إلى سطح المكتب البعيد

لا توفر خدمة التطبيقات الوصول إلى سطح المكتب البعيد إلى مثيلات الأجهزة الظاهرية.

مزيد من المعلومات

وضع الحماية لخدمة تطبيقات Azure - أحدث المعلومات حول بيئة تنفيذ خدمة التطبيقات. يتم الاحتفاظ بهذه الصفحة مباشرة من قبل فريق تطوير خدمة التطبيقات.