Compartilhar via


Parametrização de implantação da Web

por Equipe de Implantação de Aplicativos da Web

Introdução à parametrização

O desenvolvimento de aplicativos Web geralmente envolve a implantação de código em ambientes diferentes: desenvolvimento, preparo ou servidores de produção. Cada ambiente pode usar um conjunto diferente de recursos, como informações de conexão de banco de dados, e a Implantação da Web é criada com recursos que ajudam a transformar aplicativos Web à medida que são implantados em ambientes diferentes. Para transformar um aplicativo durante a implantação, diferentes partes dos aplicativos podem ser "parametrizadas" e, no momento da implantação, a Implantação da Web usa a entrada de um usuário para substituir diferentes informações dentro do aplicativo.

Diferentes maneiras de implantar aplicativos: Sincronização dinâmica e Visual Studio

A ferramenta de Implantação da Web pode ser usada para implantar um aplicativo de algumas maneiras diferentes. Um aplicativo Web pode ser sincronizado ao vivo, de um servidor (talvez o servidor de desenvolvimento) para outro servidor (talvez o servidor que hospeda o aplicativo na Web). Os aplicativos Web também podem ser empacotados em um arquivo .zip, para serem baixados e instalados por um público maior e mais geral de desenvolvedores. Esse é um modelo comumente usado por aplicativos semelhantes à "plataforma" (por exemplo, Wordpress). Por fim, o Web Deploy é usado internamente pelo Visual Studio ao desenvolver e implantar projetos de aplicativos de aplicação Web (WAP). Nesse caso, o Visual Studio parametriza automaticamente a maioria das partes necessárias dos aplicativos Web, com a capacidade de criar parâmetros personalizados, se necessário.

Criando e parametrizando um aplicativo a ser implantado

A Microsoft fornece uma maneira fácil de instalar mais de 50 aplicativos Web populares, como Wordpress, Joomla, Drupal e DotNetNuke. Esses aplicativos podem ser instalados de forma relativamente rápida e fácil. Nos bastidores, essas interfaces do usuário usam a ferramenta Web Deploy para instalar o aplicativo a partir de um pacote de .zip. Para criar um pacote de aplicativos para que ele possa ser instalado usando uma dessas ferramentas, é necessário executar várias etapas, incluindo parametrizar partes do aplicativo.

As etapas a seguir são necessárias para transformar um aplicativo em um pacote de .zip que pode ser implantado:

  1. Criar um aplicativo.
  2. Crie um arquivo de "manifesto". Esse arquivo informa à ferramenta de Implantação da Web as diferentes ações necessárias para instalar o aplicativo. Isso inclui itens como copiar arquivos e configurar um banco de dados.
  3. Crie um arquivo de parâmetros. Este é o arquivo de parametrização que o Web Deploy usa para identificar as partes do aplicativo que precisam ser transformadas no momento da instalação com base na entrada dos usuários.
  4. Crie um arquivo .zip que contenha o aplicativo, o arquivo de manifesto e o arquivo de parâmetro.

Este artigo apresenta cada uma dessas etapas em detalhes.

Etapa 1 – Criar um aplicativo

Atualmente, não há uma maneira fácil de criar um aplicativo para experimentar a parametrização de implantação da Web, exceto a clonagem de um aplicativo existente.

Agora você tem um aplicativo pronto para ser empacotado e parametrizado para que outros desenvolvedores possam baixá-lo e instalá-lo. A próxima etapa é configurar um arquivo que indicará ao Web Deploy as etapas necessárias para instalar o aplicativo.

Etapa 2 – Criar um arquivo de "manifesto"

A ferramenta de Implantação da Web pode executar várias funções, incluindo cópia de arquivos, configurações de servidor Web e bancos de dados. Cada uma dessas funções é possibilitada por um "provedor" de implantação da Web. Para instalar o aplicativo que você acabou de criar, você usará o provedor iisApp , que ajuda a copiar arquivos e criar o aplicativo no servidor; o provedor setAcl , que define as permissões de arquivo necessárias; e o provedor dbFullSql , que configura o banco de dados. Para instruir o Web Deploy a usar vários provedores durante a configuração, você precisa criar um arquivo Manifest.xml que declare esses três provedores da seguinte maneira (você pode copiar um exemplo daqui):

A captura de tela mostra o ícone dot x m l do manifesto.

<?xml version="1.0" encoding="utf-8" ?>
<msdeploy.iisApp>
  <iisApp path="Vacation Pictures" />
  <setAcl path="Vacation Pictures/App_Data" setAclAccess="Write, ReadAndExecute" />
  <dbFullSql path="CreateDBAndUser.sql" />
  <dbFullSql path="VacPicDBSchema.sql" />
</msdeploy.iisApp>

Vamos dar uma olhada mais de perto em cada uma dessas entradas.

Provedor IISApp

A entrada do iisApp aponta para a pasta em que o conteúdo do aplicativo está localizado. Por exemplo:

<iisApp path="Vacation Pictures" />

O valor do caminho seria diferente se o aplicativo tivesse um nome diferente.

Provedor SetAcl

A entrada setAcl instrui o Web Deploy a conceder permissões de leitura, gravação e execução ao diretório "App_Data" quando o aplicativo é instalado. Por exemplo:

<setAcl path="Vacation Pictures/App_Data" setAclAccess="Write, ReadAndExecute" />

Aplicativos diferentes podem exigir permissões especiais em outras pastas. Nesse caso, você criaria uma entrada setAcl diferente para cada configuração de permissão necessária.

Provedor DbFullSQL

As entradas do provedor dbFullSQL apontam para scripts SQL diferentes que são usados para criar um banco de dados e um usuário ("CreateDBAndUser.sql") e para configurar as tabelas de banco de dados ("VacPicDBSchema.sql") no momento da instalação.

O script CreateDBAndUser.sql é um script bastante simples que pode ser copiado daqui:

A captura de tela mostra o ícone Criar DB e Usuário.sql.

O VacPicDBSchema.sql é o script que cria todas as tabelas no banco de dados que o aplicativo usa. Esse arquivo pode ser criado usando a ferramenta de linha de comando Web Deploy. Na Linha de Comando, navegue para o local onde o Web Deploy está instalado (normalmente %programfiles%\IIS\Microsoft Web Deploy <LatestVersion>) e insira o seguinte comando:

msdeploy -verb:sync -source:dbfullsql="data source=.\SQLExpress;initial catalog=PhotoGallery;user id=sa;password=*" -dest:dbfullsql="c:\VacPicDBSchema.sql"

Substitua o asterisco (*) pela senha de administrador do SQL apropriada.

Em um nível básico, o comando acima usa o provedor dbFullSql para copiar dados de um banco de dados usando uma cadeia de conexão de banco de dados ("-source:dbfullsql=...") e copia-os para um arquivo de script de banco de dados ("-dest:dbfullsql=...")

Etapa 3 – Criar um arquivo de parâmetro

Depois de criar o arquivo de manifesto que informa à Implantação da Web como instalar o aplicativo, você precisa criar um arquivo de parâmetro que informa à Implantação da Web como transformar determinadas configurações para que o aplicativo possa ser personalizado para funcionar no ambiente de implantação de um usuário específico.

As partes básicas que seriam úteis para transformar são:

  • O nome do aplicativo: se o usuário final que está instalando seu aplicativo quiser alterar o nome do aplicativo, você precisará parametrizar o nome do aplicativo.
  • O nome do banco de dados: um usuário pode precisar configurar seu aplicativo para ser executado em um banco de dados que usa um nome diferente. Nesse caso, você precisará parametrizar as informações de conexão de banco de dados.

O Web Deploy lê as informações de parametrização de um arquivo XML. Nesse caso, você chamará o arquivo Parameters.xml. Para essa demonstração, o arquivo de parâmetros pode ser copiado daqui e tem esta aparência (no site, esse arquivo XML pode ser expandido para uma caixa de código como é usada nesta página):

A captura de tela mostra o ícone de parâmetros dot x m l.

Em seguida, você aprenderá agora a parametrizar o nome do aplicativo e o nome do banco de dados.

Parametrizando o nome do aplicativo

A parametrização de implantação da Web pode ser usada para transformar diferentes tipos de entrada. Normalmente, isso envolve pesquisar texto em um arquivo XML ou arquivo de texto e substituí-lo por texto diferente. No caso do nome do aplicativo, a cópia do arquivo e a criação do site no computador de destino são tratadas por um provedor de Implantação da Web. Portanto, para parametrizar o nome do aplicativo, você precisará, na verdade, parametrizar o provedor declarado anteriormente no arquivo Manifest.xml.

O provedor no arquivo de manifesto pode ser considerado como o provedor de origem, que lerá informações do pacote de aplicação que um usuário baixa. Por sua vez, quando o aplicativo é instalado, um provedor de destino é usado nos bastidores para copiar o conteúdo e criar um site no computador do usuário. O arquivo Manifest.xml contém as informações do provedor de origem , portanto, para permitir que um usuário altere o nome do aplicativo; você precisa parametrizar o provedor que foi definido no arquivo Manifest.xml.

No arquivo Parameters.xml vinculado a ele, essa parametrização é realizada com a primeira entrada XML:

<parameter 
  name="Application Path" 
  description="Full site path where you would like to install your application (i.e., Default Web Site/PhotoGallery)" 
  tags="iisapp">
  <parameterValidation kind="AllowEmpty" />
  <parameterEntry kind="ProviderPath" scope="iisapp" match="Vacation Pictures" />
</parameter>

A marca XML importante a ser observada é parameterEntry. Isso informa ao Web Deploy algumas coisas: primeiro, que você está parametrizando um provedor no manifesto (kind="ProviderPath"); dois, que você está parametrizando um provedor iisApp (scope="iisapp"); por fim, que você só deseja substituir entradas no arquivo de manifesto que têm o valor "Fotos de Férias."

A segunda entrada no arquivo de parâmetro ('name="SetAclParameter1"') apenas garante que o provedor setAcl em nosso arquivo Manifest.xml use o mesmo nome inserido pelo usuário para o provedor iisApp , que é realizado com a linha 'defaultValue="{Application Path}/App_Data"'. O valor entre colchetes, {Application Path}, faz referência ao nome do primeiro parâmetro.

Parametrizando o nome do banco de dados

O restante das entradas no arquivo Parameters.xml lida com a parametrização das informações de conexão de banco de dados. As entradas 2 a 6 no arquivo de parâmetros coletam informações da interface do usuário quando um usuário está instalando o aplicativo. Essas entradas solicitam ao usuário o servidor de banco de dados que hospedará o banco de dados do aplicativo ("Servidor de Banco de Dados"), o nome do banco de dados a ser criado ("Nome do Banco de Dados"), o usuário do banco de dados a ser associado ao banco de dados ("Nome de usuário do banco de dados" e a senha desse usuário ("Senha do Banco de Dados"). Para criar o banco de dados e o usuário, a Implantação da Web também precisa do usuário administrador do banco de dados ("Administrador de Banco de Dados") e da senha ("Senha do Administrador de Banco de Dados").

Por fim, todas as informações inseridas pelo usuário são usadas pela Implantação da Web para realmente executar os scripts que criam o banco de dados (CreateDBAndUser.sql) e configurar as tabelas (VacPicDBSchema.sql). Estas são as 7ª e 8ª entradas em Parameters.xml:

<parameter 
  name="Create DB and DB User Connection String" 
  description="Automatically sets the connection string for the connection request."
  defaultValue="Server={Database Server};Database={Database Name};uid={Database Administrator};Pwd=*;" <!-- replace Pwd=* with Pwd={Database Administrator Password} -->
  tags="Hidden,SQLConnectionString,Validate">
  <parameterEntry type="ProviderPath" scope="dbfullsql" match="CreateDBAndUser.sql" />
</parameter>
<parameter 
  name="Populate DB Connection String" 
  description="Automatically sets the connection string for the connection request." 
  defaultValue="Server={Database Server};Database={Database Name};uid={Database Administrator};Pwd=*;" <!-- replace Pwd=* with Pwd={Database Administrator Password} -->
  tags="Hidden,SQLConnectionString,Validate">
  <parameterEntry type="ProviderPath" scope="dbfullsql" match="VacPicDBSchema.sql" />
</parameter>

Novamente, como o Web Deploy usa um provedor para sincronizar informações de banco de dados (conforme declarado no arquivo Manifest.xml), essas duas entradas de parâmetro são 'type="ProviderPath"'.

Nosso aplicativo "Fotos de Férias" também gerencia a conexão com o banco de dados no arquivo Web.config. A entrada final em Parameters.xmltrata dessa parametrização.

Etapa 4 – Criar um arquivo zip que contenha o aplicativo, o arquivo de manifesto e o arquivo de parâmetro

Agora você tem os blocos de construção básicos necessários para implantar o aplicativo, para que agora você possa empacotar o aplicativo no formato de pacote apropriado. O pacote só precisa conter o arquivo Parameters.xml, o arquivo Manifest.xml e os scripts de instalação do banco de dados no nível superior (raiz) do pacote zip e o conteúdo do aplicativo em uma subpasta.

No canto inferior esquerdo do WebMatrix, clique na guia Site para navegar até o conteúdo do site.

A captura de tela mostra a caixa de diálogo do Web Matrix destacando a guia Site.

A página do site tem um link para onde o conteúdo do aplicativo reside:

A captura de tela mostra a URL e o caminho do conteúdo do aplicativo.

Clique no link para navegar até o conteúdo do aplicativo. Navegue até outro nível dessa pasta e crie uma nova pasta chamada "VacationPicsWPIInstaller". Copie a pasta de conteúdo do aplicativo, os arquivos Manifest.xml e Parameters.xml e os scripts de instalação do banco de dados na pasta recém-criada:

A captura de tela mostra a pasta de conteúdo do aplicativo com arquivos e scripts de instalação de banco de dados.

Com todos os arquivos selecionados, clique com o botão direito do mouse->Enviar para->Pasta compactada (zipada):

A captura de tela mostra os arquivos selecionados com o botão direito do mouse, realçando as opções: Enviar para e pasta compactada.

Esse arquivo compactado pode ser nomeado qualquer coisa, mas para funcionar melhor com a demonstração, nomeie-o como "VacationPicsWPIInstaller.zip".

Este pacote agora contém tudo o que é necessário para implantá-lo.