For the complete documentation index, see llms.txt. This page is also available as Markdown.

IIS

Hosting in IIS

PowerShell Universal supporta l'hosting in IIS (Internet Information Services (IIS) per Windows® Server). Si noti che sono necessari una serie di prerequisiti dell'host e passaggi di configurazione specifici per consentire l'esecuzione di PowerShell Universal su IIS. Esamini attentamente ogni sezione, poiché IIS richiede molte impostazioni di configurazione specifiche per funzionare con applicazioni .NET Core moderne come PowerShell Universal.

Passaggio 1: preparazione dell'host IIS

I seguenti componenti sono necessari per ospitare PowerShell Universal in IIS.

La figura evidenzia il link di download dell'ASP.NET Core Hosting Bundle

È inoltre necessario abilitare sull'host IIS le seguenti funzionalità IIS di Windows Server:

Nome visualizzato della funzionalità
Requisito
Script di installazione

WebSocket Protocol

Necessario per eseguire PowerShell Universal

Install-WindowsFeature Web-WebSockets

Autenticazione di Windows

Necessario per utilizzare l'autenticazione di Windows

Install-WindowsFeature Web-Windows-Auth

Innanzitutto si assicuri di abilitare la funzionalità IIS in Windows Server e quindi installi l'ASP.NET Core hosting bundle.

NOTA: IIS richiede spesso il riavvio dell'host dopo l'installazione del .NET Core Hosting bundle! Si consiglia vivamente di RIAVVIARE l'host IIS dopo l'installazione del .NET Core Hosting bundle.

Una volta soddisfatti questi prerequisiti, è pronto per iniziare la configurazione di PowerShell Universal in IIS.

Passaggio 2: download di PowerShell Universal

Scarichi la copia più recente di PowerShell Universal. Dovrà scaricare la versione archivio ZIP di PowerShell Universal. Questo archivio è realizzato specificamente per chi desidera configurare PowerShell Universal per IIS o altri server web di terze parti. Estragga il contenuto dello zip nella posizione della cartella dell'host web prevista sul suo host IIS.

Deve assicurarsi che i file dell'applicazione PowerShell Universal siano sbloccati dopo l'estrazione. Può sbloccarli con il cmdlet Unblock-File.

Passaggio 3: configurazione del pool di applicazioni IIS

Ora che l'host è pronto e abbiamo scaricato PowerShell Universal, possiamo iniziare a configurare IIS.

Il primo passaggio del processo di configurazione di IIS consiste nel creare un nuovo pool di applicazioni in IIS. Prima di iniziare la configurazione dovremmo assicurarci di selezionare un'identità valida per il pool di applicazioni IIS.

3.1: scelta di un'identità per il pool di applicazioni

L'identità del pool di applicazioni è fondamentale per PowerShell Universal, poiché sarà l'"utente predefinito" con cui verranno eseguiti i processi e le app (precedentemente note come dashboard). Sarà inoltre l'utente che eseguirà le operazioni di lettura/scrittura sul database di Universal Automation e verrà utilizzato da IIS per leggere la directory dei contenuti web ed eseguire l'applicazione.

Configurazione dell'identità del pool di applicazioni

Si consiglia di utilizzare "LocalSystem" o un account di servizio a sua scelta.

A causa delle limitazioni di IIS, le impostazioni dell'identità del pool di applicazioni hanno conseguenze IMPORTANTI sul comportamento delle opzioni "Run As" quando si utilizza Universal Automation.

Requisiti dell'identità dell'account di servizio

Se lo si desidera, la posizione predefinita del database può essere personalizzata tramite il file appsettings.json di PowerShell Universal.

Una volta selezionata un'identità valida, siamo pronti a creare il pool di applicazioni in IIS.

3.2: creazione del nuovo pool di applicazioni IIS

Ora che abbiamo scelto un'identità per il pool di applicazioni con accesso in lettura/scrittura alle cartelle dell'applicazione e del database di PowerShell Universal, possiamo creare il pool di applicazioni in IIS.

  • In IIS Manager, scelga l'opzione Add Application Pool...

    • Nome: utilizzi il nome che preferisce per il pool di applicazioni

    • Versione .NET CLR: nessun codice gestito

    • Impostazioni di base del pool di applicazioni

    • Faccia clic su OK per creare il pool di applicazioni.

3.3: configurazione delle "Advanced Settings" del pool di applicazioni IIS

Ora che il pool di applicazioni è stato creato, dovremo configurare le Advanced Settings

  • Apra le "Advanced Settings" del pool di applicazioni e applichi le seguenti configurazioni:

    • General / Enable 32-Bit Applications: False

    • Process Model / Identity: utilizzi l'identità selezionata per il pool di applicazioni nella sezione "Scelta di un'identità per il pool di applicazioni" qui sopra.

    • Process Model / Load User Profile: True

Una volta applicate le Advanced Settings, il nostro pool di applicazioni è pronto; il passaggio successivo sarà configurare il sito web IIS che utilizzerà questo pool di applicazioni.

Passaggio 4: configurazione del sito web IIS

4.1: preparazione del web.config per il nostro sito web

Ora che abbiamo un pool di applicazioni valido, dobbiamo creare un sito web IIS per esporre l'applicazione. Prima di farlo, esamineremo il file web.config di PowerShell Universal per il nostro sito web. All'interno della cartella dell'applicazione PowerShell Universal estratta troveremo un file web.config. Questo file di configurazione è stato progettato specificamente per IIS e contiene una serie di configurazioni che dobbiamo esaminare prima di creare il sito web IIS.

Soprattutto, dovremo aggiornare il valore dell'argomento "processPath" di questo file di configurazione. Questo valore fornirà a IIS il percorso esatto del file binario dell'applicazione, in modo che possa avviarla correttamente.

  • Apra il file web.config nella cartella dell'applicazione PowerShell Universal

    • Individui la sezione <aspNetCore processPath del file di configurazione

    • Modifichi l'argomento processPath da ".\Universal.Server.exe" alla posizione esatta del percorso di Universal.Server.exe (vedere la figura seguente per un esempio)

    • Salvi il file per applicare la configurazione

In questo file sono presenti diverse configurazioni aggiuntive. Le esamineremo in modo più dettagliato nella sezione "Configurazione avanzata", ma può fare riferimento a "Configurazioni aggiuntive di web.config" in questa pagina per maggiori dettagli

4.2: creazione del sito web IIS per IIS

Ora che è stato creato un pool di applicazioni per PowerShell Universal con un'identità valida e abbiamo configurato il file web.config, siamo finalmente pronti a creare il sito web IIS. Il componente Website di IIS carica gli artefatti dell'applicazione e la espone sull'endpoint web configurato.

  1. In IIS Manager: faccia clic su "Add Website.."

  2. Configuri le opzioni del nuovo sito web:

    • Site Name: utilizzi il nome che preferisce, ad es.: PowerShell Universal.

    • Application Pool: NON utilizzi il DefaultAppPool - selezioni il pool di applicazioni creato nel passaggio precedente.

    • Physical Path: deve essere il percorso fisico del contenuto di PowerShell Universal estratto dal file .zip scaricato. NOTA: l'identità dell'AppPool deve avere accesso a questa posizione.

    • Binding Settings: si noti che per la configurazione iniziale si consiglia di utilizzare i valori predefiniti di base; li aggiorneremo in seguito nella configurazione avanzata

      • Tipo http - per la configurazione iniziale

      • Indirizzo IP: All Unassigned

      • Porta: 80

      • Nome host: nome dell'host

Passaggio 5: avvio del sito web

A questo punto tutte le configurazioni necessarie dovrebbero essere presenti e il sito web IIS che ospita PowerShell Universal dovrebbe essere attivo e funzionante. Con un browser web, si colleghi alla posizione del sito web configurato per verificare che PowerShell Universal sia stato avviato. Da qui può seguire la guida "Guida introduttiva" per convalidare le funzionalità di base. Una volta certo che l'applicazione funzioni correttamente con una configurazione IIS di base, può procedere alla "Configurazione avanzata" per proteggere e finalizzare la configurazione IIS desiderata.

Se riscontra ancora problemi con la configurazione IIS di base, provi a controllare il percorso "Logs" specificato nel web.config per individuare i problemi comuni. Se i problemi persistono, si rivolga ai forum o al supporto per assistenza.

Applicazioni IIS annidate

È possibile annidare più istanze di PowerShell Universal in un unico pool di applicazioni e sito web, ma sono necessarie alcune configurazioni aggiuntive.

Dovrà disporre di due cartelle per i file dell'applicazione: una per ciascuna applicazione. Dovrà inoltre configurare due cartelle di dati: una per ciascuna applicazione.

Radice del sito web
File dell'applicazione
File di dati

Una volta configurata la struttura delle cartelle, dovrà creare due file appsettings.json e aggiornare i file web.config per ciascuna applicazione.

All'interno dei file appsettings.json dovrà impostare i percorsi corretti dei file di dati per ciascuna istanza. Dovrà inoltre configurare l'URL di base corretto per il sito annidato.

Successivamente dovrà aggiornare i file web.config di ciascun sito per utilizzare il file appsettings.json corretto e l'hosting OutOfProcess.

Ora, all'interno di IIS Manager, faccia clic con il pulsante destro del mouse sulle cartelle psu1 e psu2 per convertirle in applicazioni.

Ora dovrebbe essere in grado di accedere alla console di amministrazione di PowerShell Universal a entrambi i seguenti URL.

Configurazione per i processi

Se intende eseguire processi pianificati all'interno della sua istanza di PowerShell Universal ospitata in IIS, deve assicurarsi di configurare IIS in modo appropriato. Ci sono diverse impostazioni da verificare durante la configurazione del pool di applicazioni.

Application Initialization

Installi la funzionalità Application Initialization del ruolo Web Server.

Impostazioni del pool di applicazioni

Dovrà configurare le seguenti impostazioni:

  • General: versione .NET CLR = No Managed Code.

  • General: Start Mode = AlwaysRunning

  • Process Model: impostazione Idle Time-out = 0 (disabilitata)

  • Recycling: Regular Time Interval = 0.

Impostazioni del sito web

All'interno del sito IIS che ospita Universal, dovrà assicurarsi che Preload sia abilitato.

Variabili di ambiente

Sebbene cerchiamo di rilevare se PSU è in esecuzione all'interno di IIS, potrebbe riscontrare problemi con l'handler di autenticazione negotiate abilitato quando non è supportato in IIS. Per essere certo che questo non costituisca un problema, può disabilitarlo completamente creando la variabile di ambiente indicata di seguito sulla macchina IIS.

Debug dei problemi con IIS e i processi

Se riscontra ancora problemi con IIS e i processi, dovrebbe considerare di attivare il logging del riciclo di IIS per verificare che IIS mantenga il sito in esecuzione.

A partire da PowerShell Universal 3.3, può ottenere (tramite l'uptime del sistema nella home page della console di amministrazione) un buon indicatore dell'ultima volta in cui il servizio è stato avviato.

Prima della versione 3.3, può visualizzare l'uptime del server visitando la dashboard di Hangfire e facendo clic sulla scheda Servers.

Autenticazione

PowerShell Universal può utilizzare l'autenticazione anonima e l'autenticazione di Windows in IIS.

Autenticazione di Windows

Per abilitare l'autenticazione di Windows, dovrà prima abilitarla per il Web Server e quindi per il sito web. Può trovare le impostazioni di autenticazione nella sezione Authentication di IIS Manager.

Per il sito web, imposti le stesse impostazioni.

Una volta abilitata l'autenticazione in IIS, dovrà assicurarsi che l'autenticazione di Windows sia abilitata per PowerShell Universal.

Innanzitutto, modifichi il file web.config per inoltrare il token di autenticazione di Windows.

Successivamente, abiliti l'autenticazione di Windows nel file appsettings.json per PowerShell Universal.

Riavvii il pool di applicazioni e ora dovrebbe essere in grado di accedere con le credenziali di Windows.

Autenticazione anonima

L'autenticazione anonima può essere abilitata per consentire la trasmissione di app tokens e altre richieste attraverso il proxy IIS. Dovrà abilitare l'autenticazione anonima sia a livello di Server sia a livello di sito Web. Non è necessaria alcuna configurazione aggiuntiva all'interno di PowerShell Universal.

Configurazioni aggiuntive di web.config

Le impostazioni all'interno del file web.config di Universal possono essere modificate come ritiene opportuno. Di seguito troverà una descrizione di ciascuna impostazione.

ForwardWindowsAuthToken

Questa impostazione viene utilizzata per l'autenticazione di Windows. Se desidera utilizzare l'autenticazione di Windows con IIS, si assicuri di disabilitare l'autenticazione anonima e di abilitare l'autenticazione di Windows all'interno del suo sito IIS, quindi imposti questa impostazione su true.

StdoutLogEnabled e StdoutLogFile

Questa impostazione viene utilizzata per il debug dei problemi di avvio della sua configurazione di Universal. Si consiglia di abilitarla durante la prima configurazione dell'integrazione con IIS. Può disabilitarla una volta che tutto è configurato. Deve assicurarsi che l'identità del suo AppPool disponga dell'accesso in scrittura alla posizione di StdOutLogFile.

HostingModel

Il modello di hosting imposta la modalità di esecuzione del server Universal. Se impostato su InProcess, il server Universal verrà eseguito all'interno dell'agente IIS. Ciò offre prestazioni migliori rispetto all'hosting OutOfProcess. L'hosting InProcess non funziona con StdOutLogEnabled. Si consiglia di utilizzare l'hosting OutOfProcess solo durante la configurazione di Universal e InProcess al termine delle fasi di configurazione.

Aggiornamento

Durante l'aggiornamento, si assicuri di non copiare (sovrascrivere) i file sopra l'installazione esistente. Al contrario, (ad eccezione dei file web.config e *.json) elimini tutti i file dell'applicazione corrente e copi quelli nuovi nella directory. La copia sopra i file dell'applicazione può comportare la presenza nella directory di installazione di file binari non previsti e può causare problemi con PowerShell Universal.

la figura mostra un messaggio che non dovrebbe vedere durante l'aggiornamento del suo PSU su IIS

Ultimo aggiornamento

È stato utile?