IIS
Hébergement dans IIS
PowerShell Universal prend en charge l'hébergement dans IIS (Internet Information Services (IIS) pour Windows® Server). Veuillez noter qu'une série de prérequis pour l'hôte et des étapes de configuration spécifiques sont nécessaires pour permettre l'exécution de PowerShell Universal sur IIS. Veuillez examiner chaque section attentivement, car IIS exige de nombreux paramètres de configuration spécifiques pour fonctionner avec les applications .NET Core modernes telles que PowerShell Universal.
Étape 1 : Préparation de l'hôte IIS
Les composants suivants sont requis pour héberger PowerShell Universal sur IIS.
Y compris : protocole WebSocket
Les fonctionnalités IIS de Windows Server suivantes doivent également être activées sur l'hôte IIS :
Protocole WebSocket
Requis pour exécuter PowerShell Universal
Install-WindowsFeature Web-WebSockets
Authentification Windows
Requis pour utiliser l'authentification Windows
Install-WindowsFeature Web-Windows-Auth
Assurez-vous d'abord d'activer la fonctionnalité IIS sur Windows Server, puis installez le bundle d'hébergement ASP.NET Core.
NOTE : IIS nécessite souvent un redémarrage de l'hôte après l'installation du bundle d'hébergement .NET Core! Il est fortement recommandé de REDÉMARRER l'hôte IIS après l'installation du bundle d'hébergement .NET Core.
Une fois ces prérequis remplis, vous êtes prêt à commencer la configuration de PowerShell Universal sur IIS.
L'activation de la fonctionnalité de publication WebDav d'IIS causera des problèmes avec Universal. La publication WebDav filtre les requêtes HTTP et empêche par défaut les verbes PUT et DELETE. Si la publication WebDav est activée, veuillez vous assurer qu'elle est configurée correctement pour autoriser ces verbes.
Étape 2 : Télécharger PowerShell Universal
Téléchargez la dernière copie de PowerShell Universal. Vous devrez télécharger la version archive ZIP de PowerShell Universal. Cette archive est spécialement conçue pour ceux qui souhaitent configurer PowerShell Universal pour IIS ou d'autres serveurs Web tiers. Extrayez le contenu du fichier Zip à l'emplacement du dossier de l'hôte Web prévu sur votre hôte IIS.
Vous devez vous assurer que les fichiers de l'application PowerShell Universal sont débloqués après leur extraction. Vous pouvez les débloquer avec l'applet de commande Unblock-File.
Cet emplacement est très important et sera référencé tout au long de ce document. Plus important encore, cet emplacement doit être accessible par l'identité utilisée par le pool d'applications IIS.
Étape 3 : Configuration du pool d'applications IIS
Maintenant que notre hôte est prêt et que nous avons téléchargé PowerShell Universal, nous pouvons commencer à configurer IIS.
La première étape du processus de configuration d'IIS consiste à créer un nouveau pool d'applications dans IIS. Avant de commencer la configuration, nous devrions nous assurer de sélectionner une identité valide pour le pool d'applications IIS.
3.1 : Choisir une identité de pool d'applications
L'identité du pool d'applications est cruciale pour PowerShell Universal, car il s'agira de l'« utilisateur par défaut » sous lequel les tâches et les applis (anciennement appelées tableaux de bord) s'exécuteront. Ce sera également l'utilisateur qui effectuera les opérations de lecture/écriture dans la base de données Universal Automation et qui sera utilisé par IIS pour lire le répertoire de contenu Web et exécuter l'application.
Il est suggéré d'utiliser « LocalSystem » ou un compte de service de votre choix.
En raison des limitations d'IIS, les paramètres d'identité du pool d'applications ont des conséquences MAJEURES sur le comportement des options « Run As » lors de l'utilisation d'Universal Automation.
Limitations d'IIS avec Universal Automation
Service d'application configuré comme Local System - Les scripts s'exécuteront par défaut avec le compte System et un compte « Run as » PEUT être spécifié lors de l'exécution d'un script dans Universal Automation
Service d'application configuré comme compte de service - Les scripts peuvent SEULEMENT être exécutés avec le compte de service et un **compte « Run as » _**_NE PEUT PAS** être spécifié lors de l'exécution des scripts.
Exigences relatives à l'identité du compte de service
Une fois que nous avons sélectionné une identité valide, nous sommes prêts à créer le pool d'applications dans IIS.
3.2 : Création du nouveau pool d'applications IIS
Maintenant que nous avons choisi une identité de pool d'applications ayant un accès en lecture/écriture aux dossiers de l'application et de la base de données PowerShell Universal, nous pouvons créer le pool d'applications dans IIS.
Dans le gestionnaire IIS, choisissez l'option Ajouter un pool d'applications...
Nom : Utilisez le nom de votre choix pour le pool d'applications
Version .NET CLR : Code non managé
Cliquez sur OK pour créer le pool d'applications.
3.3 : Configurer les « Paramètres avancés » du pool d'applications IIS
Maintenant que le pool d'applications a été créé, nous devrons configurer les Paramètres avancés
Ouvrez les « Paramètres avancés » du pool d'applications et appliquez les configurations suivantes :
Général / Activer les applications 32 bits : False
Modèle de processus / Identité : Utilisez l'identité que nous avons sélectionnée pour notre pool d'applications dans la section « Choisir une identité de pool d'applications » ci-dessus.
Modèle de processus / Charger le profil utilisateur : True
Une fois les paramètres avancés appliqués, notre pool d'applications est prêt; notre prochaine étape sera de configurer le site Web IIS qui utilisera ce pool d'applications.
Étape 4 : Configuration du site Web IIS
4.1 : Préparation du web.config pour notre site Web
Maintenant que nous avons un pool d'applications valide, nous devons créer un site Web IIS pour exposer l'application. Avant de le faire, nous voudrons examiner le fichier web.config de PowerShell Universal pour notre site Web. Dans le dossier extrait de l'application PowerShell Universal, nous trouverons un fichier web.config. Ce fichier de configuration a été spécialement conçu pour IIS et comporte un certain nombre de configurations que nous devons examiner avant de créer le site Web IIS.
Plus important encore, nous devrons mettre à jour la valeur de l'argument « processPath » de ce fichier de configuration. Cette valeur fournira à IIS le chemin exact du binaire de l'application afin qu'il puisse lancer correctement l'application.
Ouvrez le fichier web.config dans le dossier de l'application PowerShell Universal
Repérez la section <aspNetCore processPath du fichier de configuration
Remplacez l'argument processPath « .\Universal.Server.exe » par l'emplacement exact du chemin de Universal.Server.exe (voir la figure ci-dessous pour un exemple)
Enregistrez le fichier pour appliquer la configuration
4.2 : Création du site Web IIS pour IIS
Maintenant qu'un pool d'applications a été créé pour PowerShell Universal avec une identité valide et que nous avons configuré le fichier web.config, nous sommes enfin prêts à créer le site Web IIS. Le composant Site Web d'IIS charge les artéfacts de l'application et expose l'application sur le terminal Web configuré.
Dans le gestionnaire IIS : cliquez sur « Ajouter un site Web.. »
Configurez les options du nouveau site Web :
Nom du site : Utilisez le nom de votre choix, ex. :
PowerShell Universal.Pool d'applications : N'UTILISEZ PAS le DefaultAppPool - Sélectionnez le pool d'applications que nous avons créé à l'étape précédente.
Chemin d'accès physique : Il doit s'agir du chemin physique vers le contenu PowerShell Universal que nous avons extrait de notre fichier .zip téléchargé. NOTE : L'identité du pool d'applications doit avoir accès à cet emplacement.
Paramètres de liaison : Notez que pour la configuration initiale, il est suggéré d'utiliser les valeurs par défaut de base; nous les mettrons à jour plus tard dans notre configuration avancée
Type http - Pour la configuration initiale
Adresse IP : Toutes non attribuées
Port : 80
Nom d'hôte : Nom de l'hôte
Étape 5 : Démarrage du site Web
À ce stade, toutes les configurations requises devraient être en place et le site Web IIS hébergeant PowerShell Universal devrait être opérationnel. Avec un navigateur Web, accédez à l'emplacement du site Web configuré pour valider que PowerShell Universal a démarré. À partir de là, vous pouvez suivre le guide « Prise en main » pour valider les fonctionnalités de base. Une fois que vous êtes certain que l'application fonctionne correctement avec une configuration IIS de base, vous pouvez passer à la « Configuration avancée » pour sécuriser et finaliser la configuration IIS souhaitée.
Applications IIS imbriquées
Il est possible d'imbriquer plusieurs instances de PowerShell Universal sous un seul pool d'applications et un seul site Web, mais cela nécessite une configuration supplémentaire.
Vous aurez besoin de deux dossiers pour les fichiers de votre application : un pour chaque application. Vous devrez également configurer deux dossiers de données : un pour chaque application.
Une fois la structure de vos dossiers configurée, vous devrez créer deux fichiers appsettings.json et mettre à jour vos fichiers web.config pour chaque application.
Dans les fichiers appsettings.json, vous devrez définir les chemins appropriés vers les fichiers de données de chaque instance. Vous devrez également configurer l'URL de base correcte pour le site imbriqué.
Ensuite, vous devrez mettre à jour les fichiers web.config de chaque site pour utiliser le bon fichier appsettings.json et utiliser l'hébergement OutOfProcess.
Maintenant, dans le gestionnaire IIS, faites un clic droit sur les dossiers psu1 et psu2 pour les convertir en applications.
Vous devriez maintenant pouvoir accéder à la console d'administration de PowerShell Universal aux deux URL suivantes.
Configuration pour les tâches
Des paramètres de pool d'applications mal configurés peuvent empêcher l'exécution des tâches. La cause principale est le recyclage du pool d'applications ou un échec du démarrage de l'application Web au démarrage du serveur. Ce n'est pas un problème pour des fonctionnalités comme les API ou les applis (anciennement appelées tableaux de bord), mais en raison du traitement en arrière-plan des tâches, vous devrez vous assurer que le serveur démarre le site Web et le garde en cours d'exécution. Vous pouvez en apprendre davantage ici.
Si vous prévoyez exécuter des tâches planifiées dans votre instance PowerShell Universal hébergée dans IIS, vous devez vous assurer de configurer IIS de façon appropriée. Il y a plusieurs paramètres à valider lors de la configuration de votre pool d'applications.
Initialisation de l'application
Installez la fonctionnalité Initialisation de l'application du rôle de serveur Web.
Paramètres du pool d'applications
Vous voudrez configurer les paramètres suivants :
Général : version .NET CLR = Code non managé.
Général : Mode de démarrage = AlwaysRunning
Modèle de processus : paramètre Délai d'inactivité = 0 (désactivé)
Recyclage : Intervalle de temps régulier = 0.
Paramètres du site Web
Dans le site IIS qui héberge Universal, vous devrez vous assurer que Preload est activé.
Variables d'environnement
Bien que nous tentions de détecter que PSU s'exécute dans IIS, vous pourriez rencontrer des problèmes avec l'activation du gestionnaire d'authentification negotiate lorsqu'il n'est pas pris en charge dans IIS. Pour vous assurer que ce ne soit pas un problème, vous pouvez le désactiver complètement en créant la variable d'environnement ci-dessous sur votre machine IIS.
Débogage des problèmes avec IIS et les tâches
Si vous avez encore des problèmes avec IIS et les tâches, vous devriez envisager d'activer la journalisation du recyclage IIS pour vous assurer qu'IIS garde votre site en cours d'exécution.
Depuis PowerShell Universal 3.3, vous pouvez (via la durée de fonctionnement du système sur la page d'accueil de la console d'administration) obtenir un bon indicateur du dernier démarrage du service.
Avant la version 3.3, vous pouvez consulter la durée de fonctionnement du serveur en visitant le tableau de bord Hangfire et en cliquant sur l'onglet Serveurs.
Authentification
PowerShell Universal peut utiliser l'authentification anonyme et l'authentification Windows dans IIS.
Authentification Windows
Pour activer l'authentification Windows, vous devrez d'abord l'activer pour votre serveur Web, puis pour votre site Web. Vous trouverez les paramètres d'authentification sous la section Authentification dans le gestionnaire IIS.
Pour le site Web, définissez les mêmes paramètres.
Une fois l'authentification activée dans IIS, vous devrez vous assurer que l'authentification Windows est activée pour PowerShell Universal.
D'abord, ajustez le fichier web.config pour transférer le jeton d'authentification Windows.
Ensuite, activez l'authentification Windows dans le fichier appsettings.json de PowerShell Universal.
Redémarrez votre pool d'applications et vous devriez maintenant pouvoir vous connecter avec des identifiants Windows.
Lorsque vous activez l'authentification Windows mais pas l'authentification anonyme, vous ne pourrez plus utiliser les AppTokens de PowerShell Universal. Vous devrez activer les deux méthodes d'authentification pour prendre en charge à la fois les identifiants Windows et les jetons d'application.
Authentification anonyme
L'authentification anonyme peut être activée pour permettre la transmission des jetons d'application et d'autres requêtes à travers le proxy IIS. Vous devrez activer l'authentification anonyme aux niveaux du serveur et du site Web. Il n'y a aucune configuration supplémentaire à faire dans PowerShell Universal.
Configurations web.config supplémentaires
Les paramètres du web.config de Universal peuvent être ajustés selon vos besoins. Vous trouverez ci-dessous une description de chaque paramètre.
ForwardWindowsAuthToken
Ce paramètre est utilisé pour l'authentification Windows. Si vous souhaitez utiliser l'authentification Windows avec IIS, assurez-vous de désactiver l'authentification anonyme et d'activer l'authentification Windows dans votre site IIS, puis définissez ce paramètre à true.
StdoutLogEnabled et StdoutLogFile
Ce paramètre est utilisé pour déboguer les problèmes de démarrage de votre installation de Universal. Il est recommandé de l'activer lors de la configuration initiale de l'intégration IIS. Vous pouvez le désactiver une fois que tout est configuré. Vous devez vous assurer que l'identité de votre AppPool a un accès en écriture à l'emplacement de StdOutLogFile.
HostingModel
Le modèle d'hébergement détermine la façon dont le serveur Universal fonctionnera. Lorsqu'il est défini à InProcess, le serveur Universal s'exécutera à partir de l'agent IIS. Cela offre une meilleure performance que l'hébergement OutOfProcess. L'hébergement InProcess ne fonctionne pas avec StdOutLogEnabled. Il est recommandé d'utiliser l'hébergement OutOfProcess seulement pendant la configuration de Universal, et InProcess lorsque vos étapes de configuration sont terminées.
Mise à niveau
Lors d'une mise à niveau, assurez-vous de ne pas copier (écraser) des fichiers par-dessus votre installation existante. Au lieu de cela, (à l'exception des fichiers web.config et *.json) supprimez tous les fichiers d'application actuels et copiez les nouveaux dans le répertoire. Copier par-dessus les fichiers d'application peut faire en sorte que des binaires inattendus soient présents dans le répertoire d'installation, ce qui peut causer des problèmes avec PowerShell Universal.
Mis à jour
Ce contenu vous a-t-il été utile ?