Script di PowerShell per l'automazione dell'installazione della distribuzione Web
La versione 2.1 di Distribuzione Web installa diversi script di PowerShell che semplificano la configurazione del server IIS in modo che gli utenti possano pubblicarlo usando Distribuzione Web. Questa pagina illustra come usare questi script per creare un sito di pubblicazione predefinito, abilitare la pubblicazione per un sito e un utente nuovo o esistente, creare database SQL o MySQL o configurare le regole di delega, tutto usando PowerShell.
Gli script che verranno usati sono:
- SetupSiteForPublish.ps1
- CreateSqlDatabase.ps1
- CreateMySqlDatabase.ps1
- AddDelegationRules.ps1
Requisiti
Il server deve avere un sistema operativo fornito con IIS7, ovvero Windows Server 2008 o Windows Server 2008 R2. È necessario essere un amministratore nel computer.
Assicurarsi che vengano soddisfatte le condizioni seguenti:
- PowerShell2 deve essere installato (è integrato in Windows Server 2008 R2; per Windows Server 2008, è possibile ottenere PowerShell2 come aggiornamento da qui: https://www.catalog.update.microsoft.com/ScopedViewInline.aspx?updateid=0be83604-db27-4b99-976a-136a92bd579b. Potrebbe essere necessario un riavvio.
- Il ruolo Server Web (IIS) deve essere abilitato in Server Manager.
- Il servizio ruolo Servizio gestione Web di IIS ("Servizio di gestione") deve essere abilitato in Server Manager
- Per usare gli script di database di PowerShell, il server deve avere accesso a un database SQL o MySQL. Sql Server Management Objects deve essere installato anche per SQL.
- Distribuzione Web deve essere installata con il componente Management Service Integration. Per visualizzare questa opzione nel programma di installazione distribuzione Web, è necessario abilitare prima il servizio di gestione Web.
Istruzioni generali di PowerShell
Avviare una finestra di comando di PowerShell.
Fare clic sull'icona di PowerShell nella barra delle applicazioni oppure fare clic su Start, digitare PowerShell e selezionare Windows PowerShell.
(Icona blu)Assicurarsi che i criteri di esecuzione consentano l'esecuzione di script.
Digitare "Get-ExecutionPolicy". Se è limitato (impostazione predefinita) è necessario reimpostare un'impostazione più permissiva, ad esempio digitando "Set-ExecutionPolicy AllSigned". L'impostazione AllSigned consentirà l'esecuzione di script firmati, ma richiederà se non sono attendibili
Per altre informazioni sulle impostazioni dei criteri di esecuzione, vedere Uso del cmdlet Set-ExecutionPolicy.
Passare alla directory Degli script di distribuzione Web.
- Digitare
cd '%programfiles%\IIS\Microsoft Web Deploy v2\Scripts'
(ma sostituire%programfiles%
con il percorso effettivo, ad esempioC:\Program Files
).
- Digitare
Usare lo script SetupSiteForPublish per creare un sito Web di pubblicazione predefinito (senza database)
Eseguire lo script SetupSiteForPublish.ps1 senza argomenti:
Operazioni seguenti:
Lo script crea un utente e un sito per la pubblicazione non amministratore e salva le informazioni sul profilo di pubblicazione in un file sul desktop. In particolare, crea un sito denominato WDeploySite con la radice del sito fisico in %systemdrive%\inetpub\WDeploySite
. Il sito avrà un pool di applicazioni corrispondente, WDeployAppPool e verrà assegnato alla porta 8080 per impostazione predefinita (o alla porta successiva disponibile se un altro sito usa 8080). Lo script crea anche un utente windows locale non amministratore denominato WDeploySiteuser e concede l'ACL controllo completo dell'utente nella cartella WDeploySite e autorizzazioni di Gestione IIS al sito. Le informazioni sulle impostazioni vengono salvate sul desktop in un file denominato WDeploy.Publish Impostazioni. Questo file può essere utilizzato da WebMatrix (o potenzialmente Visual Studio) per la pubblicazione nel sito. Questo profilo non contiene informazioni sulla pubblicazione del database a questo punto.
Abilitare la pubblicazione di distribuzione Web per qualsiasi sito e utente usando lo script SetupSiteForPublish:
Script: SetupSiteForPublish.ps1
Descrizione: per un sito e un account utente specificati, consente all'utente specificato di pubblicare nel sito specificato. Lo script crea l'account utente, il sito e il pool di applicazioni; imposta gli ACL di directory e le autorizzazioni di Gestione IIS per il sito; e salva le informazioni sull'impostazione in un file.
Parametri:
Nome | Descrizione | Valore predefinito | Note |
---|---|---|---|
siteName | Nome del sito. Se il sito non esiste, verrà creato. | WDeploySite | |
sitePhysicalPath | Percorso file fisico per il contenuto del sito. Se la directory non esiste, verrà creata. | %systemdrive%\inetpub\WDeploySite |
|
siteAppPoolName | Nome del pool di applicazioni che verrà associato al sito. Se il pool di applicazioni non esiste, verrà creato. | WDeployAppPool | È consigliabile dedicare un pool di applicazioni per sito. |
sitePort | Porta per le associazioni del sito. | Prima porta da 8080-8200 che non è in uso da un altro sito. | Potrebbe essere necessaria una regola del firewall per aprire la porta per il traffico remoto. |
deploymentUserName | Nome dell'utente a cui assegnare l'accesso al sito. Se l'utente non esiste, verrà creato un utente non amministratore. | WDeploySiteuser | |
deploymentUserPassword | Password per l'utente di distribuzione. Se non si specifica una password, ne verrà generata e salvata automaticamente nel file di impostazioni. | [generato automaticamente] | |
managedRunTimeVersion | Se specificato, tenterà di impostare la versione di runtime specificata per il pool di applicazioni. Se non viene trovata una versione di runtime corrispondente, verranno usate le impostazioni predefinite del pool di applicazioni. | Impostazioni predefinite del pool di applicazioni | Formato di esempio "v2.0" o "v4.0" |
publishSettingSavePath | Directory esistente in cui verrà salvato il file delle impostazioni. | Desktop dell'utente corrente | Deve essere una directory esistente. Se la directory specificata non esiste, verrà generato un errore. |
publishSettingFileName | Nome del file di impostazioni, inclusa l'estensione. | WDeploy.Publish Impostazioni | Ricordarsi di includere l'estensione. Se il file esiste già, le informazioni sul sito verranno sovrascritte. |
Esempi:
Abilitare la pubblicazione per un utente esistente in un sito esistente (la password non verrà salvata nel file delle impostazioni):
.\SetupSiteForPublish.ps1 -siteName ExistingSite -deploymentUserName UserA -publishSettingSavePath C:\profiles -publishSettingFileName UserA.PublishSettings
Abilitare la pubblicazione per un nuovo utente in un nuovo sito, con un nome personalizzato e un percorso per il file delle impostazioni di pubblicazione:
.\SetupSiteForPublish.ps1 -siteName NewSite -sitePhysicalPath C:\inetpub\NewSiteRoot -siteAppPoolName NewSitePool -sitePort 81 -deploymentUserName NewSiteUser -deploymentUserPassword Passw0rd -publishSettingSavePath C:\profiles -publishSettingFileName NewSite.PublishSettings
Il file Publish Impostazioni contiene anche la nuova password utente. Si noti che i campi stringa di connessione sono vuoti. Possono essere compilati a mano oppure è possibile aggiungerli al profilo usando gli script di generazione del database:
<?xml version="1.0" encoding="utf-8"?>
<publishData>
<publishProfile publishUrl="RWS-2008R2" msdeploySite="NewSite" destinationAppUrl="http://RWS-2008R2:81" mySQLDBConnectionString="" SQLServerDBConnectionString="" profileName="Default Settings" publishMethod="MSDeploy" userName="NewSiteUser" userPWD="Passw0rd" savePWD="True" />
</publishData>
Creare un database SQL per un account di pubblicazione usando lo script CreateSqlDatabase
Script: CreateSqlDatabase.ps1
Descrizione: crea un database, un account di accesso, un utente del database con autorizzazioni db_owner per il database e salva le informazioni stringa di connessione corrispondenti in un file di impostazioni.
Parametri:
Nome | Descrizione | Valore predefinito | Note |
---|---|---|---|
databaseName | Nome del database da creare. | wDeploySqldb | |
databaseUserName | Nome dell'utente e dell'account di accesso del database. | wdeploySqlUser | Specificare un nuovo utente ogni volta oppure reimpostare la password di accesso di un utente e invalidare le credenziali di connessione precedenti dell'utente. |
databaseUserPassword | Password per l'utente e l'account di accesso del database. Se non viene specificata alcuna password, ne verrà generata automaticamente una. | [generato automaticamente] | In alcuni casi la password generata automaticamente può contenere caratteri che causano problemi con determinati client di pubblicazione. Valutare la possibilità di modificare lo script se si usa lo script per la creazione automatica del database. |
database Amministrazione User | Nome utente amministratore di SQL Server (in genere "sa"). | REQUIRED | |
database Amministrazione Password | Password per l'account amministratore di SQL Server. | REQUIRED | |
sqlServerInstanceName | Posizione del server SQL. | .\Sqlexpress |
Generali
publishSettingSavePath | Directory esistente in cui verrà salvato il file delle impostazioni. | Desktop dell'utente corrente | Deve essere una directory esistente. Se la directory specificata non esiste, verrà generato un errore. |
---|---|---|---|
publishSettingFileName | Nome del file di impostazioni, inclusa l'estensione. | WDeploy.Publish Impostazioni | Ricordarsi di includere l'estensione. Se il file esiste già, le informazioni sul sito verranno sovrascritte. |
Esempi:
Creare un database con l'utente usando le impostazioni predefinite (database SQLExpress locale):
.\CreateSqlDatabase.ps1
Creare un nuovo database e aggiungere le informazioni stringa di connessione al file c:\profiles\UserA.PublishSettings
delle impostazioni di pubblicazione esistente:
PS C:\Program Files\IIS\Microsoft Web Deploy V2\Scripts> .\CreateSqlDatabase.ps1 -databaseName UserADb -databaseUserName UserADbUser -databaseUserPassword Passw0rdA -databaseAdminUser sa -databaseAdminPassword Passw0rd -sqlServerInstanceName .\SQLExpress -publishSettingSavePath C:\profiles -publishSettingFileName UserA.PublishSettings
Creare un database MySQL per un account di pubblicazione usando lo script CreateMySqlDatabase
Script: CreateMySqlDatabase.ps1
Descrizione: crea un database, un utente del database con tutti i privilegi nel database (in localhost) e salva le informazioni stringa di connessione in un file di impostazioni
Parametri:
Nome | Descrizione | Valore predefinito | Note |
---|---|---|---|
databaseName | Nome del database da creare. | WDeployDb | |
databaseUserName | Nome dell'utente del database. | WDeployUser | |
databaseUserPassword | Password per l'utente e l'account di accesso del database. Se non viene specificata alcuna password, ne verrà generata automaticamente una. | [generato automaticamente] | In alcuni casi la password generata automaticamente può contenere caratteri che causano problemi con determinati client di pubblicazione. Valutare la possibilità di modificare lo script se si usa lo script per la creazione automatica del database. |
database Amministrazione User | Nome per l'amministratore del database, in genere "root". | REQUIRED | Se non viene specificato, verrà richiesto di specificare questo parametro |
database Amministrazione Password | Password per l'account amministratore del server. | REQUIRED | Se non ne viene specificato uno, verrà richiesto un valore per questo parametro. |
serverHostName | Percorso del server MySQL | localhost | *Vedere la nota seguente tabella |
General (Generale):
publishSettingSavePath | Directory esistente in cui verrà salvato il file delle impostazioni. | Desktop dell'utente corrente | Deve essere una directory esistente. Se la directory specificata non esiste, verrà generato un errore. |
---|---|---|---|
publishSettingFileName | Nome del file di impostazioni, inclusa l'estensione. | WDeploy.Publish Impostazioni | Ricordarsi di includere l'estensione. Se il file esiste già, le informazioni sul sito verranno sovrascritte. |
*Se si specifica un valore non localhost per serverHostName e non si modificano le autorizzazioni per l'utente, l'utente potrebbe non essere in grado di accedere al proprio database. Per impostazione predefinita, le autorizzazioni concesse in questo script forniscono all'utente del database l'accesso dal computer locale. Se il server di database non è ospitato nello stesso computer, la sezione relativa alla concessione delle autorizzazioni dello script di PowerShell deve essere modificata per concedere autorizzazioni più generali, ad esempio modificando la riga di script seguente per consentire l'accesso da qualsiasi computer:
Riga di autorizzazioni script predefinita:
$createUserScript = "Grant all privileges on {0}.* to '{1}'@'localhost' identified by '{2}';"
Riga autorizzazioni script modificata:
$createUserScript = "Grant all privileges on {0}.* to '{1}'@'%' identified by '{2}';"
Esempi:
Creare un database con l'utente usando le impostazioni predefinite:
.\CreateMySqlDatabase.ps1
Creare un nuovo database e aggiungere le informazioni stringa di connessione al file c:\profiles\UserA.PublishSettings
delle impostazioni di pubblicazione esistente:
.\CreateMySqlDatabase.ps1 -databaseName UserADb -databaseUsername UserADbUser -databaseUserPassword Passw0rd -databaseAdminUser root -databaseAdminPassword iis6!dfu -publishSettingSavePath C:\profiles -publishSettingFileName UserA.PublishSettings
Configurare le regole di delega per il server usando lo script AddDelegationRules
Script: AddDelegationRules.ps1
Descrizione: questo script viene eseguito automaticamente in fase di installazione dal programma di installazione durante un'installazione completa, ma se non è stata eseguita un'installazione completa o si vuole ripristinare le regole in qualsiasi momento, è possibile eseguire nuovamente questo script AddDelegationRules.
Parametri:
Nome | Descrizione | Valore predefinito | Note |
---|---|---|---|
elevatedUsername | Nome dell'account utente a cui verrà concesso l'accesso in scrittura al file applicationHost.config del server. Questo utente verrà usato come utente run-as in appPoolPipeline, appPoolNetFx e createApp rules. | WDeployUser | Crea solo un utente windows locale e non funzionerà se la configurazione condivisa è abilitata. La password per questo account utente verrà reimpostata se lo script viene eseguito una seconda volta. |
elevatedPassword | Generato automaticamente se non specificato. | [generato automaticamente] | |
adminUsername | Nome di un account utente Amministrazione istrator che verrà usato come utente run-as nella regola recycleApp. | WDeploy Amministrazione | Crea solo un utente windows locale e non funzionerà se la configurazione condivisa è abilitata. La password per questo account utente verrà reimpostata se lo script viene eseguito una seconda volta. |
adminPassword | Generato automaticamente se non specificato | [generato automaticamente] | |
ignorePasswordResetErrors | Commutatore. Se con privilegi elevati/adminUsername fa riferimento a un account esistente, questa opzione consente allo script di reimpostare la password per l'account. | [omesso - reimpostazione delle password utente non consentite] | La reimpostazione di una password utente può comportare la perdita dell'accesso ai dati da parte dell'utente. Questa opzione deve essere usata con cautela. Per ulteriori informazioni, vedere https://windows.microsoft.com/windows-vista/What-are-the-risks-of-resetting-a-password. Si noti anche che la nuova password utente non è archiviata e non può essere recuperata in un secondo momento. |