Scripts do PowerShell para Automatizar a Instalação da Ferramenta de Implantação da Web

por Kristina Olson

A versão v2.1 da Implantação da Web instala vários scripts do PowerShell que facilitam a configuração do servidor IIS para que os usuários possam publicar nele usando a Implantação da Web. Esta página mostra como usar esses scripts para criar um site de publicação padrão, habilitar a publicação para um site e usuário novos ou existentes, criar bancos de dados SQL ou MySQL de publicação ou configurar regras de delegação – tudo isso usando o PowerShell.

Os scripts que você usará são:

  • SetupSiteForPublish.ps1
  • CreateSqlDatabase.ps1
  • CreateMySqlDatabase.ps1
  • AddDelegationRules.ps1

Requisitos

  • O servidor deve ter um sistema operacional que venha com o IIS7 – o que significa o Windows Server 2008 ou o Windows Server 2008 R2. Você precisa ser um administrador no computador.

  • Confirme se todas as seguintes condições foram atendidas:

    • O PowerShell2 precisa ser instalado (isso é integrado ao Windows Server 2008 R2; para o Windows Server 2008, você pode obter o PowerShell2 como uma atualização aqui: https://www.catalog.update.microsoft.com/ScopedViewInline.aspx?updateid=0be83604-db27-4b99-976a-136a92bd579b. Pode ser necessário reiniciar.
    • A função de Servidor Web (IIS) deve estar habilitada no Gerenciador do Servidor.
    • O serviço de função do Serviço de Gerenciamento da Web do IIS ("Serviço de Gerenciamento") deve estar habilitado no Gerenciador do Servidor
    • Para usar os scripts de banco de dados do PowerShell, o servidor deve ter acesso a um banco de dados SQL ou MySQL. Os SQL Server Management Objects também precisam estar instalados para SQL.
    • A Implantação da Web precisa estar instalada com o componente de Integração do Serviço de Gerenciamento. (Para que essa opção apareça no instalador da Implantação da Web, o Serviço de Gerenciamento da Web precisa ser habilitado primeiro.)

Instruções gerais do PowerShell

  1. Inicialize a janela de comando do PowerShell.

    Clique no ícone do PowerShell na barra de tarefas ou clique em Iniciar, digite PowerShell e selecione Windows PowerShell.
    Captura de tela da Barra de Tarefas do Windows exibindo o botão Iniciar.
    (O ícone azul)

  2. Verifique se a política de execução permite a execução de scripts.

    1. Digite "Get-ExecutionPolicy". Se for Restrito (o padrão), você precisará redefinir para uma configuração mais permissiva, como digitando "Set-ExecutionPolicy AllSigned". A configuração AllSigned permitirá a execução de scripts assinados, mas fará uma solicitação a você caso eles não sejam confiáveis

    2. Para saber mais sobre as configurações da política de execução, confira Usando o Cmdlet Set-ExecutionPolicy.

  3. Altere para o diretório de scripts da Implantação da Web.

    1. Digite cd '%programfiles%\IIS\Microsoft Web Deploy v2\Scripts' (mas substitua %programfiles% pelo caminho real, como C:\Program Files).

Use o script SetupSiteForPublish para criar um site de publicação padrão (sem bancos de dados)

Execute o script SetupSiteForPublish.ps1 sem argumentos:

Captura de tela de um console do Powershell com saída.

O que isso faz:

O script cria um usuário e um site para publicação não administrativa e salva as informações do perfil de publicação em um arquivo na área de trabalho. Mais especificamente, ele cria um site chamado WDeploySite com a raiz de site física em %systemdrive%\inetpub\WDeploySite. O site terá um pool de aplicativos correspondente, WDeployAppPool, e será atribuído à porta 8080 por padrão (ou à próxima porta disponível se outro site estiver usando 8080). O script também cria um usuário local do Windows não administrador chamado WDeploySiteuser e concede a esse usuário ACLs de Controle Total na pasta WDeploySite e Permissões do Gerenciador do IIS para o site. As informações de configurações são salvas na área de trabalho em um arquivo chamado WDeploy.PublishSettings – esse arquivo pode ser consumido pelo WebMatrix (ou potencialmente pelo Visual Studio) para publicação no site. Esse perfil NÃO contém nenhuma informação de publicação de banco de dados neste momento.

Habilite a Publicação da Implantação da Web para qualquer Site e Usuário usando o script SetupSiteForPublish:

Script: SetupSiteForPublish.ps1

Descrição: para um site e uma conta de usuário especificados, permite que o usuário especificado publique no site especificado. O script cria a conta de usuário, o site e o pool de aplicativos; define as ACLs do diretório e as permissões do Gerenciador do IIS para o site e salva as informações de configuração em um arquivo.

Parâmetros:

Nome Descrição Valor padrão Observações
siteName O nome do site. Se o site não existir, ele será criado. WDeploySite
sitePhysicalPath Local do arquivo físico para o conteúdo do site. Se o diretório não existir, ele será criado. %systemdrive%\inetpub\WDeploySite
siteAppPoolName Nome do pool de aplicativos que será associado ao site. Se o pool de aplicativos não existir, ele será criado. WDeployAppPool Recomenda-se dedicar um pool de aplicativos por site.
sitePort Porta para as associações do site. Primeira porta de 8080 a 8200 que não está em uso por outro site. Uma regra de firewall pode ser necessária para abrir a porta para o tráfego remoto.
deploymentUserName Nome do usuário a receber acesso ao site. Se o usuário não existir, um usuário não administrador será criado. WDeploySiteuser
deploymentUserPassword Senha para o usuário de implantação. Se uma senha não for especificada, uma será gerada e salva automaticamente no arquivo de configurações. [gerado automaticamente]
managedRunTimeVersion Se especificado, tentará definir a versão de tempo de execução especificada para o pool de aplicativos. Se uma versão de tempo de execução correspondente não for encontrada, os padrões do pool de aplicativos serão usados. Padrões do pool de aplicativos Exemplo de formato "v2.0" ou "v4.0"
publishSettingSavePath Um diretório existente onde o arquivo de configurações será salvo. Área de trabalho do usuário atual Precisa ser um diretório existente. Se o diretório especificado não existir, ocorrerá um erro.
publishSettingFileName Nome do arquivo de configurações, incluindo a extensão. WDeploy.PublishSettings Lembre-se de incluir a extensão. Se o arquivo já existir, as informações do site nele serão substituídas.

Exemplos:

Habilite a publicação para um usuário existente em um site existente (a senha não será salva no arquivo de configurações):

.\SetupSiteForPublish.ps1 -siteName ExistingSite -deploymentUserName UserA -publishSettingSavePath C:\profiles -publishSettingFileName UserA.PublishSettings

Captura de tela de um console do Powershell com resultados de scripts.

Habilite a publicação para um novo usuário em um novo site, com um nome e um local personalizados para o arquivo de configurações de publicação:

.\SetupSiteForPublish.ps1 -siteName NewSite -sitePhysicalPath C:\inetpub\NewSiteRoot -siteAppPoolName NewSitePool -sitePort 81 -deploymentUserName NewSiteUser -deploymentUserPassword Passw0rd -publishSettingSavePath C:\profiles -publishSettingFileName NewSite.PublishSettings

Captura de tela de um console do Powershell com script e saída para configurações de publicação.

O arquivo PublishSettings também contém a nova senha de usuário. Observe que os campos da cadeia de conexão estão vazios – eles podem ser preenchidos manualmente ou você pode adicionar isso ao perfil usando os scripts de geração de banco de dados:

<?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>

Criar um banco de dados SQL para uma conta de publicação usando o script CreateSqlDatabase

Script: CreateSqlDatabase.ps1

Descrição: cria um banco de dados, um logon, um usuário de banco de dados que tem as permissões db_owner para o banco de dados e salva as informações de cadeia de conexão correspondentes em um arquivo de configurações.

Parâmetros:

Nome Descrição Valor padrão Observações
databaseName Nome do banco de dados a ser criado. wDeploySqldb
databaseUserName Nome do usuário do banco de dados e logon. wdeploySqlUser Especifique um novo usuário toda vez ou você poderá acabar redefinindo a senha de logon de um usuário e invalidando as credenciais de conexão anteriores do usuário.
databaseUserPassword Senha do nome de usuário e logon do banco de dados. Se nenhuma senha for especificada, uma será gerada automaticamente. [gerado automaticamente] Em alguns casos, a senha gerada automaticamente pode conter caracteres que causam problemas com determinados clientes de publicação. Considere modificar o script se você estiver usando o script para criação automatizada de banco de dados.
databaseAdminUser Nome de usuário do administrador do SQL Server (normalmente, "sa"). OBRIGATÓRIO
databaseAdminPassword Senha da conta de administrador do SQL Server. OBRIGATÓRIO
sqlServerInstanceName Localização do SQL Server. .\SQLExpress

Geral

publishSettingSavePath Um diretório existente onde o arquivo de configurações será salvo. Área de trabalho do usuário atual Precisa ser um diretório existente. Se o diretório especificado não existir, ocorrerá um erro.
publishSettingFileName Nome do arquivo de configurações, incluindo a extensão. WDeploy.PublishSettings Lembre-se de incluir a extensão. Se o arquivo já existir, as informações do site nele serão substituídas.

Exemplos:

Crie um banco de dados com o usuário usando os padrões (banco de dados SQLExpress local):

.\CreateSqlDatabase.ps1

Captura de tela de um console do Powershell com script e saída para criar um banco de dados S Q L.

Crie um banco de dados e adicione as informações da cadeia de conexão ao arquivo de configurações de publicação existente c:\profiles\UserA.PublishSettings:

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

Captura de tela de um console do Powershell com script e saída com conexão ao arquivo de configurações de publicação existente.

Criar um banco de dados MySQL para uma conta de publicação usando o script CreateMySqlDatabase

Script: CreateMySqlDatabase.ps1

Descrição: cria um banco de dados, um usuário de banco de dados com todos os privilégios no banco de dados (no localhost) e salva as informações da cadeia de conexão em um arquivo de configurações

Parâmetros:

Nome Descrição Valor padrão Observações
databaseName Nome do banco de dados a ser criado. WDeployDb
databaseUserName Nome do usuário do banco de dados. WDeployUser
databaseUserPassword Senha do nome de usuário e logon do banco de dados. Se nenhuma senha for especificada, uma será gerada automaticamente. [gerado automaticamente] Em alguns casos, a senha gerada automaticamente pode conter caracteres que causam problemas com determinados clientes de publicação. Considere modificar o script se você estiver usando o script para criação automatizada de banco de dados.
databaseAdminUser Nome do administrador do banco de dados, normalmente "root". OBRIGATÓRIO Esse parâmetro será solicitado se não for fornecido
databaseAdminPassword Senha da conta de administrador do servidor. OBRIGATÓRIO Você será solicitado a fornecer um valor para esse parâmetro se não fornecer um.
serverHostName Localização do servidor MySQL localhost *consulte a observação abaixo da tabela

Geral:

publishSettingSavePath Um diretório existente onde o arquivo de configurações será salvo. Área de trabalho do usuário atual Precisa ser um diretório existente. Se o diretório especificado não existir, ocorrerá um erro.
publishSettingFileName Nome do arquivo de configurações, incluindo a extensão. WDeploy.PublishSettings Lembre-se de incluir a extensão. Se o arquivo já existir, as informações do site nele serão substituídas.

*Se você especificar um valor diferente de localhost para serverHostName e não modificar as permissões para o usuário, talvez o usuário não consiga acessar seu banco de dados. Por padrão, as permissões concedidas nesse script fornecem ao usuário do banco de dados acesso do computador local. Se o servidor de banco de dados não estiver hospedado na mesma máquina, a seção de concessão de permissão do script do PowerShell deverá ser modificada para conceder permissões mais gerais, por exemplo, alterar a seguinte linha de script para permitir o acesso de qualquer computador:

Linha de permissões de script padrão:

$createUserScript = "Grant all privileges on {0}.* to '{1}'@'localhost' identified by '{2}';"

Linha de permissões de script modificada:

$createUserScript = "Grant all privileges on {0}.* to '{1}'@'%' identified by '{2}';"

Exemplos:

Crie um banco de dados com o usuário usando os padrões:

.\CreateMySqlDatabase.ps1

Captura de tela de um console do Powershell com script para criar um banco de dados.

Crie um banco de dados e adicione as informações da cadeia de conexão ao arquivo de configurações de publicação existente c:\profiles\UserA.PublishSettings:

.\CreateMySqlDatabase.ps1 -databaseName UserADb -databaseUsername UserADbUser -databaseUserPassword Passw0rd -databaseAdminUser root -databaseAdminPassword iis6!dfu -publishSettingSavePath C:\profiles -publishSettingFileName UserA.PublishSettings

Captura de tela de um console do Powershell com script e saída de conexão com configurações de publicação existentes.

Configurar regras de delegação para o servidor usando o script AddDelegationRules

Script: AddDelegationRules.ps1

Descrição: este script é executado automaticamente no momento da instalação pelo instalador durante uma instalação completa, mas se você não fez uma instalação completa ou deseja reparar as regras a qualquer momento, pode executar novamente este script AddDelegationRules.

Parâmetros:

Nome Descrição Valor padrão Observações
elevatedUsername Nome da conta de usuário que receberá acesso de gravação ao arquivo applicationHost.config do servidor. Esse usuário será usado como o usuário executar como nas regras appPoolPipeline, appPoolNetFx e createApp. WDeployUser Cria apenas um usuário local do Windows e não funcionará se a configuração compartilhada estiver habilitada. A senha dessa conta de usuário será redefinida se o script for executado uma segunda vez.
elevatedPassword Gerado automaticamente se não for especificado. [gerado automaticamente]
adminUsername Nome de uma conta de usuário Administrador que será usada como usuário executar como na regra recycleApp. WDeployAdmin Cria apenas um usuário local do Windows e não funcionará se a configuração compartilhada estiver habilitada. A senha dessa conta de usuário será redefinida se o script for executado uma segunda vez.
adminPassword Gerado automaticamente se não for especificado [gerado automaticamente]
ignorePasswordResetErrors Comutador. Se elevated/adminUsername fizer referência a uma conta existente, essa opção permitirá que o script redefina a senha da conta. [omitido – redefinir senhas de usuário não é permitido] Redefinir uma senha de usuário pode resultar na perda de acesso aos dados pelo usuário. Essa opção deve ser usada com cuidado. Para obter mais informações, consulte https://windows.microsoft.com/windows-vista/What-are-the-risks-of-resetting-a-password. Observe também que a nova senha de usuário não é armazenada e não pode ser recuperada posteriormente.