سيطرة PowerShell IIS: إنشاء وإدارة مواقع الويب

إذا كنت تدير خوادم Windows ، فمن المحتمل أنك قد تعمل مع خدمة Internet Information Services (IIS). المواقع الإلكترونية هي أحد الميزات الرئيسية لخدمة IIS، وباستخدام PowerShell ، يمكنك بسهولة إدارة IIS وتشغيلها تلقائيًا باستخدام نصوص PowerShell IIS!

في هذه المقالة ، سيتم تقديم طريقة جديدة لإدارة IIS باستخدام PowerShell. باستخدام التقنيات الموجودة في هذه المقالة ، يمكنك بسهولة بناء نصوص PowerShell IIS لإنشاء وإدارة مواقع IIS.

لإدارة IIS باستخدام PowerShell ، يتطلب ذلك أحد وحدتي البرامج PowerShell – WebAdminstration أو IISAdminstration. تغطي هذه المقالة وحدة IISAdministration الأحدث. يوفر الفيديو المرافق لهذه المقالة وحدة WebAdministration الأقدم إذا كنت ترغب في رؤية طريقة بديلة.

معرفة كيفية إدارة موقع ويب بسيط حتى لشركتك أو للعالم بأسره سيميزك عن بقية أقرانك. ستساعدك الأقسام التالية في هذه المقالة في تعلم كيفية إنشاء وإدارة موقع ويب في IIS. ستتعلم أيضًا كيفية إدارة برك تطبيقات الويب باستخدام بعض أوامر PowerShell.

وحدة IISAdministration مقابل WebAdministration

لديك خيارين لإدارة IIS. يمكنك استخدام WebAdministration أو IISAdministration. ولكن أيهما يجب أن تستخدم؟

إذا كنت تستخدم IIS 10.0 أو أحدث ، فإن وحدة IISAdministration الأحدث توفر العديد من التحسينات على وحدة WebAdministration الأقدم.

إليك بعض النقاط البارزة:

  • تقدم أوامر IISAdministration دعمًا أفضل للأنابيب وتتطور بشكل أفضل.
  • بالمقارنة مع أوامر IIS القديمة ، تحتوي IISAdministration على رمز أكثر كفاءة.
  • أوامر IISAdministration أبسط وتوفر وصولًا مباشرًا إلى مدير الخادم.

سيتم التركيز في هذه المقالة على وحدة IISAdministration الحديثة.

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

ستكون هذه المقالة عملية. إذا كنت تنوي متابعة الإرشادات ، تأكد من توفر المتطلبات الأساسية التالية.

The Windows 10 “Turn Windows features on or off” dialogue

من المستحسن أن تكون على دراية بأساسيات HTML. سيكون هناك خطوة تستخدم فيها HTML دورًا في الأمثلة القادمة. ولكن لا تقلق ، ستتمكن من نسخ ولصق الشفرة!

تم إنشاء جميع الأمثلة في هذه المدونة باستخدام IIS 10.0 على نظام التشغيل Windows 10 و PowerShell 7 Preview 6. تعتبر أوامر IISAdministration هي نفسها لـ Windows Server 2016 و 2019 وتعمل مع Windows PowerShell 5.1.

هذا كل شيء بالنسبة للأدوات المستخدمة ، الآن للموارد المطلوبة لمتابعة الإرشادات.

تثبيت وحدة IISAdministration

بمجرد توفر المتطلبات الأساسية ، حان الوقت للقيام ببعض الإعدادات. لحسن الحظ ، ليس هناك الكثير من الإعدادات للقيام بها نظرًا لأنه يمكن الحصول بحرية على الـ وحدة PowerShell التي تحتاج إليها (IISAdministration) في PowerShell Gallery.

قم بفتح نافذة سطر أوامر PowerShell مرتفعة على الخادم الويب الخاص بك وقم بتثبيت الوحدة باستخدام الأمر التالي.

PS> Install-Module -Name 'IISAdministration'

إذا لم يكن لديك وصول إلى الإنترنت ، يمكنك تنزيل الوحدة إلى جهاز آخر ونسخ الوحدة إلى دليل الوحدات الخاص بك. تحقق من وثائق الأمر Save-Module.

اكتشاف الأوامر المتاحة

كما هو الحال مع أي وحدة PowerShell قد لا تكون ذات خبرة فيها ، يجب عليك استخدام أحد الأوامر الأولى لاكتشاف مجموعة الأوامر في الوحدة وهو Get-Command. باستخدام الأمر Get-Command -Module 'IISAdministration' كما هو موضح أدناه ، ستتمكن من رؤية ما هو ممكن مع هذه الوحدة.

على الرغم من أنك ستتعلم بعض الإجراءات الشائعة لاتخاذها على المواقع ، إلا أن هذه الأوامر ستعطيك فكرة عن كل ما يمكنك القيام به.

Get-Command -Module ‘IISAdministration’ results

الآن لديك قائمة بالأوامر المتاحة. حان الوقت لبدء إنشاء موقع.

إنشاء أول موقع ويب الخاص بك

لكي تحصل على موقع على الإنترنت يمكن العمل عليه، لنقم أولاً بإنشاء موقع الويب. للقيام بذلك، يجب أن نقوم بخطوة أولى وهي إنشاء دليل لحفظ محتوى الويب. بالإضافة إلى ذلك، ستحتاج إلى ملف HTML في هذا الدليل ليتم عرضه بواسطة IIS. سيكون هذا الدليل هو الدليل الذي سيستخدم في الأمثلة اللاحقة.

إنشاء مجلد الويب والصفحة

أولاً، قم بإنشاء دليل. يمكنك استخدام cmdlet “New-Item” للقيام بذلك. ستقوم الشفرة أدناه بإنشاء دليل في المسار C:\MyWebsite.

PS> New-Item -ItemType Directory -Name 'MyWebsite' -Path 'C:\'

يمكنك اختيار أي مسار تريده باستخدام الشفرة أعلاه. لتبسيط الأمور، ستستخدم مسارات عامة.

بمجرد إنشاء الدليل، حان الوقت لإنشاء ملف HTML سيكون الصفحة الرئيسية لموقع الويب الجديد الخاص بك.

قم الآن بإنشاء ملف يسمى index.html في المسار C:\Mywebsite كما هو موضح أدناه.

PS> New-Item -ItemType File -Name 'index.html' -Path 'C:\MyWebsite\'

بمجرد إنشاء الملف، قم بفتحه في محرر النصوص المفضل لديك وانسخ والصق الشفرة التالية في ذلك الوثيقة. هذا الكود HTML هو صفحة بسيطة ستستخدم للتأكد من تكوين IIS بشكل صحيح عند الانتهاء.

<!DOCTYPE html>
<html>
    <head>
         <title>IIS Administration With PowerShell Demo</title>
    </head>
    <body>
        <h1>IIS Administration with PowerShell Demo</h1>
        <p>Thank you for reading this post on how to administer IIS with PowerShell!</p>

        <p>This page was created using the newer IISAdministration PowerShell module.</p>
        <h2>First Steps</h2>
        <p>Keep calm and learn PowerShell.</p>
    </body>
</html>

إنشاء موقع IIS

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

بشكل افتراضي ، يقوم IIS بإنشاء مجلد افتراضي تحت C: \ inetpub \ wwwroot. يحتوي المجلد على جميع محتويات صفحة الويب الافتراضية والموارد لـ IIS. يمكنك أيضًا استخدام المجلد الافتراضي C: \ inetpub \ wwwroot لتخزين الملفات الخاصة بك ، ولكن في هذه الأمثلة ، لن يتم استخدامه للحفاظ على مسارات قصيرة قدر الإمكان. لهذا السبب ، ستستخدم C: \ MyWebsite بدلاً من ذلك.

لإنشاء مجلد افتراضي جديد (موقع) ، استخدم الأمر New-IISSite . يسمح لك هذا الأمر بإنشاء موقع ويب IIS.

لهذه المقالة ، قم بإنشاء موقع ويب يسمى Mywebsite يشير إلى المجلد C: \ MyWebsite الذي يستمع على المنفذ 8088. في مقتطف الشفرة أدناه ، يمكنك رؤية كيفية القيام بذلك باستخدام أمر New-IISSite.

الجزء الوحيد الذي قد يكون مربكًا هو معلمة BindingInformation. تسمح هذه المعلمة فقط بـ بناء الجملة الاستعارية. في هذا المقتطف ، سيقوم New-IISSite بإنشاء موقع ويب مرتبط بعنوان IP (العلامة * هي نفس 127.0.0.1) ، منفذ TCP للاستماع ثم أي عناوين HTTP.

يمكن شرح بناء الجملة الاستعارية على أنه بروتوكول ، تليه المصدر: المنفذ: الوجهة. في هذا المثال ، قمت بتكوين IIS للاستماع إلى طلبات HTTP من أي عنوان IP () على المنفذ 8088 والوجهة هي localhost.*

PS> New-IISSite -Name 'MyWebsite' -PhysicalPath 'C:\MyWebsite\' -BindingInformation "*:8088:"

بمجرد إنشاء الموقع ، يمكنك تشغيل Get-IISSite لتفحص مظهره كما هو موضح أدناه.

Creating a New Website in IIS

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

MyWebSite IIS site in a web browser

تهانينا! لقد قمت للتو بإعداد أول موقع ويب على IIS باستخدام PowerShell!

الآن بمجرد أن يكون لديك موقع ويب يعمل ، حان الوقت لتعلم كيفية إدارة موقع الويب الخاص بك وخادم IIS الذي يستضيفه.

إدارة موقع IIS

بمجرد أن يكون الموقع الإلكتروني قيد التشغيل ، فمن المؤكد أنك ستحتاج إلى أداء إجراءات شائعة مثل إيقاف وبدء الموقع. على سبيل المثال ، إذا كان هناك تحديثات تحتاج إلى إجرائها على الموقع ، فيبدو أنه يجب إعادة تشغيل الموقع أحيانًا.

لإدارة الموقع في PowerShell ، لديك اثنين من أوامر الأدوات للعمل معها – Start-IISSite و Stop-IISSite. تعمل هاتان الأمرين بشكل مشابه لكيفية عمل أوامر الخدمة Stop-Service و Start-Service.

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

التوقف عن موقع واحد

لإيقاف موقع IIS، يتم استخدام أمر الـ Stop-IISSite. بشكل افتراضي، يجب أن يكون الموقع الذي قمت بإنشائه سابقًا في حالة “تشغيل”. إذا قمت بإيقاف الموقع وبالتالي منع الوصول إلى MyWebsite، قم بتشغيل الأمر Stop-IISSite مع توفير الاسم كما هو موضح أدناه. يتوقف هذا الكود عن تقديم موقع MyWebsite عن طريق خادم IIS. بعد إيقاف الموقع، لن تتمكن من الوصول إليه.

PS> Stop-IISSite -Name "MyWebsite"

يتم عرض مثال على تفقد حالة الموقع كـ “تشغيل”، وإيقافه ثم التحقق من الحالة مرة أخرى كما هو موضح أدناه. في هذا المثال، أنت:

  1. تحصل على حالة موقع MyWebsite باستخدام Get-IISSite.
  2. تنفيذ أمر Stop-IISSite ضد موقع MyWebsite. هذا الأمر يغلق الوصول إلى الموقع. نظرًا لأن هذا الإجراء يجري تغييرات تشغيلية، سيتم طلب تأكيد منك.
  3. تشغيل Get-IISSite مرة أخرى للتحقق من أن موقع MyWebsite قد توقف عن العمل من خلال ملاحظة الحالة “توقف”.
Getting, stopping, and confirming MyWebsite state

إيقاف جميع المواقع

أعلاه، قمت بإيقاف موقع واحد لكن يمكنك أيضًا إيقاف جميع المواقع بسهولة. من خلال استخدام الأنبوبة وتمرير نتيجة الأمر Get-IISSite إلى Stop-IISSite، ستقوم PowerShell بتعداد جميع المواقع وإيقافها جميعًا. في مثال الكود أدناه، يتم استخدام مفتاح التبديل الاختياري Verbose لعرض مزيد من المعلومات.

Get-IISSite | Stop-IISSite -Verbose
Stopping all IIS sites with PowerShell

يمكنك أيضًا إيقاف جميع المواقع في IIS عن طريق إيقاف W3SVC أو خدمة النشر العالمية على الويب. إيقاف خدمة Windows يؤدي إلى إيقاف IIS ومنع تقديم جميع المواقع. ومع ذلك ، قد تظهر المواقع لا تزال في حالة بدء التشغيل إذا قمت بذلك.

بدء تشغيل موقع واحد

لنفترض أنك قمت ببعض التغييرات على موقع MyWebsite وتحتاج إلى إعادة تشغيله مرة أخرى. حان الوقت لاستخدام أمر Start-IISSite. للقيام بذلك ، قم بتحديد الاسم بنفس الطريقة التي استخدمتها في استخدام أمر Stop-IISSite.

PS> Start-IISSite -Name 'MyWebsite'

عند تنفيذه ، يمكنك ثم فحص الحالة مرة أخرى باستخدام Get-IISSite. عند القيام بذلك ، يجب أن ترى إخراجًا مشابهًا للتقاط الشاشة أدناه.

Checking the status of MyWebsite using Get-IISSite and starting the site with Start-IISSite

والآن يجب أن يكون الموقع متاحًا مرة أخرى على http://localhost:8088 إذا قمت بتحديث المتصفح الخاص بك.

بدء تشغيل جميع المواقع

بشكل مماثل لكيفية إيقاف نشر جميع المواقع ، يمكنك استخدام الأنابيب لبدء جميع مواقع الويب على مضيف IIS الخاص بك أيضًا.

PS> Get-IISSite | Start-IISSite

مرة أخرى ، تحصل على جميع مواقع IIS التي تتم تقديمها واستخدام الأنبوب لبدء كل واحدة. يجب أن يكون إخراجك مشابهًا للتقاط الشاشة أدناه.

Using the pipeline to start all sites on host

إدارة ربطات الويب

حان الوقت الآن للقيام ببعض المهام الإدارية الشائعة على موقع MyWebsite. إحدى المهام الشائعة هي تغيير ربطات الويب.

عند إنشاء موقع MyWebsite ، استخدمت بناء الجملة المرتبطة بـ *: 8088: . تمثل هذه البناء الجملة الاستماع على عنوان IP 127.0.0.1 ، في المنفذ 80 بدون رؤوس HTTP. لنفترض الآن أنك قررت أن ترغب في أن يستمع الموقع بدلاً من ذلك على المنفذ 9000. للقيام بذلك ، ستحتاج إلى تعديل ربط الموقع.

فحص الربط الحالي

قبل أن تتمكن من تغيير ربط الموقع ، يجب أن تفحص التكوين الحالي أولاً. أحد الطرق للقيام بذلك هو فحص خاصية الربط المُرجَعة بـBinding التي تُرجعها Get-IISSite. لاحظ في مقتطف الشفرة التالي كيفية القيام بذلك. في المقتطف ، يتم استعلام Get-IISSite عن الموقع MyWebSite وإعادة الخاصية Bindings فقط.

PS> (Get-IISSite -Name 'MyWebsite').Bindings

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

Example 1: Finding binding information

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

Example 2: Finding binding information

إزالة الربط

إذا كنت ترغب في تغيير المنفذ الذي يستمع عليه الموقع ، يجب عليك أولاً إزالة الربط الحالي الذي يربطه بتلك المنفذ. لإزالة الربط ، يجب عليك أولاً إيقاف التشغيل للموقع.

PS> Stop-IISSite -Name 'MyWebsite'

بمجرد توقف الموقع ، يمكنك الآن إزالة الربط الحالي الذي يربط الموقع MyWebsite بالمنفذ 8088. للقيام بذلك ، يمكنك استخدام أمر Remove-IISSiteBinding.

لإزالة الربط بـ MyWebsite كما تم تعريفه سابقًا، يمكنك رؤية مثال استخدام Remove-IISSiteBinding في الأسفل للقيام بذلك. في الأسفل، تقوم بتوفير اسم الموقع وتحديد بناء الربط الذي تم اكتشافه سابقًا.

PS> Remove-IISSiteBinding -Name 'MyWebsite' -BindingInformation "*:8088:"

عند تنفيذ الكود، ستتلقى استفسارًا لتأكيد قرارك لأنك تقوم بشيء مدمر كما هو موضح في الأسفل.

Removing site binding using Verbose parameter

لا يوجد حد لعدد الروابط التي يمكن أن تمتلكها. يمكنك بسهولة الاحتفاظ بالربط الأصلي وإضافة منفذ TCP 9000 كربط جديد.

الآن يمكنك تشغيل Get-IISSite -Name 'MyWebsite' مرة أخرى. سترى الآن أن معلومات الربط قد تمت إزالتها كما هو موضح بالقيمة الفارغة تحت Bindings.

Confirming the old bindings were removed

على الرغم من أن الموقع منشور، إلا أن IIS ليس لديه طريقة لمعرفة كيفية توجيه حركة المرور إلى موقعك.

من المهم أن يكون لديك على الأقل ربط واحد معين لموقعك. لإظهار أهمية ذلك، حاول التنقل إلى http://localhost:8088/index.html مرة أخرى. إذا كنت تستخدم متصفح الويب Mozilla Firefox، قد ترى هذه الرسالة أدناه.

Can’t establish a connection

إنشاء روابط جديدة

في القسم السابق، قمت بإزالة الربط الوحيد الذي كان لـ MyWebsite. وبالرغم من أن هذا قد أفسد الموقع، إلا أنه مشكلة مؤقتة فقط. حان الوقت لتصحيح هذه المشكلة عن طريق إنشاء ربط جديد.

لإنشاء ربط جديد، استخدم cmdlet New-IISSiteBinding. حيث تحتاج إلى ربط منفذ 9000 بموقع MyWebsite الآن، حدد بناء الربط الصحيح كما هو موضح أدناه.

PS> New-IISSiteBinding -Name 'MyWebsite' -BindingInformation "*:9000:"

بمجرد إنشاء الربط الجديد، قم بتشغيل الموقع مرة أخرى باستخدام Start-IISSite. تذكر أنه لإنشاء الربط الجديد، يتطلب منك IIS أن يتم إيقاف تشغيل الموقع.

عندما يبدأ الموقع مرة أخرى، يجب أن تتمكن الآن من الوصول إليه على المنفذ 9000. للتحقق من ذلك، افتح متصفح الويب الذي تفضله وانتقل إلى http://localhost:9000. يجب أن ترى الآن أن الصفحة الويب تعمل مرة أخرى على المنفذ 9000.

Same page, different TCP port

إزالة موقع الويب

إذا كنت قد اجتزت للتو برنامج تعليمي ولا تنوي الاحتفاظ بموقع MyWebsite إلى الأبد، فمن الوقت الآن لتنظيفه. لإزالة موقع، استخدم تعليمة البرمجة  Remove-IISSite.

إزالة موقع IIS يمكن أن تكون عملية خطرة خاصة إذا كنت تقوم بإزالة موقع على IIS يستضيف مواقع إنتاج أخرى. للتحقق من أنك تقوم بإزالة الموقع الصحيح، يُوصى باستخدام المعلمة الشائعة WhatIf في PowerShell. تسمح لك هذه المعلمة بفحص ما سيكون سيحدث إذا تم تنفيذ الأمر.

يمكنك رؤية مثال على إزالة موقع MyWebsite باستخدام معلمة WhatIf أدناه.

Remove-IISSite -Name 'MyWebSite' -WhatIf
Being careful with destructive cmdlets by using -WhatIf !

إذا كان كل شيء يبدو جيدًا، اترك الشريط الأمان وأعد تشغيل الكود، هذه المرة بدون معلمة -WhatIf.

عند استخدام تعليمة البرمجة Remove-IISSite، لا يتم حذف الموقع. يتم إزالته من تكوين IIS. تظل الملفات التابعة للموقع سليمة.

ملخص

في هذه المقالة، تعلمت كيفية إنشاء موقع ويب باستخدام وحدة إدارة IIS. لقد رأيت كيفية أداء العمليات الإدارية اللازمة للحفاظ على موقع ويب. الآن تعرف بما فيه الكفاية من الأساسيات للعمل مع أي مضيف IIS حديث باستخدام PowerShell!

قراءة إضافية

Source:
https://adamtheautomator.com/powershell-iis/