Compartilhar via


Parametrização de Implantação da Web

por Equipe de Implantação da Web

Introdução à parametrização

O desenvolvimento do Aplicativo Web geralmente envolve a implantação de código em diferentes ambientes: servidores de desenvolvimento, preparação ou 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 recebe a entrada de um usuário para substituir diferentes partes de informações dentro do aplicativo.

Diferentes maneiras de implantar aplicativos: sincronização ao vivo e Visual Studio

A ferramenta 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 compactados em um arquivo .zip, para serem baixados e instalados por um público mais amplo e geral de desenvolvedores. Este é um modelo comumente usado por aplicativos do tipo "plataforma" (por exemplo, Wordpress). Finalmente, a Implantação da Web é usada nos bastidores pelo Visual Studio ao desenvolver e implantar projetos de aplicativo 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 Implantação da Web para instalar o aplicativo em um pacote .zip. Para criar um pacote de aplicativo para que ele possa ser instalado usando uma dessas ferramentas, várias etapas devem ser executadas, incluindo a parametrização de partes do aplicativo.

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

  1. Criar um aplicativo.
  2. Crie um arquivo de “manifesto”. Esse arquivo informa à ferramenta Implantação da Web as diferentes ações necessárias para instalar o aplicativo. Isso inclui ações como copiar arquivos e configurar um banco de dados.
  3. Crie um arquivo de parâmetros. Esse é o arquivo de “parametrização” que a Implantação da Web usa para identificar as partes do aplicativo que precisam ser transformadas no momento da instalação com base na entrada do usuário.
  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 que está pronto para ser empacotado e parametrizado para que outros desenvolvedores possam baixá-lo e instalá-lo. A próxima etapa é configurar um arquivo que informará a Implantação da Web as etapas necessárias para instalar o aplicativo.

Etapa 2 – Criar um arquivo de “manifesto”

A ferramenta Implantação da Web pode executar várias funções, incluindo copiar arquivos, definições de configuração do 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 dizer à Implantação da Web para usar vários provedores durante a instalação, você precisa criar um arquivo de Manifest.xml que declare esses três provedores da seguinte maneira (você pode copiar um exemplo daqui):

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

<?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 analisar com atenção cada uma dessas entradas.

Provedor IISApp

A entrada iisApp aponta para a pasta onde 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 diz à Implantação da Web para conceder permissões de leitura, gravação e execução para o 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 é bastante simples que pode ser copiado daqui:

A captura de tela mostra o ícone Criar D B e ponto do usuário s q l.

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 Implantação da Web. Na linha de comando, navegue até onde a Implantação da Web está instalada (normalmente %programfiles%\IIS\Microsoft Web Deploy <LatestVersion>) e digite o seguinte comando:

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

Certifique-se de substituir <AdminPassword> pela senha de administrador 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 peças básicas que seriam úteis para transformação são:

  • O nome do aplicativo: se o usuário final que está instalando o aplicativo quiser alterar o nome dele, 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 do banco de dados.

A Implantação da Web lê informações de parametrização de um arquivo XML. Nesse caso, você chamará o arquivo Parameters.xml. Para esta demonstração, o arquivo de parâmetros pode ser copiado daqui e tem a seguinte aparência (no site, esse arquivo XML pode ser expandido em uma caixa de código como o que está nesta página):

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

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

Parametrização do nome do aplicativo

A parametrização da Implantação da Web pode ser usada para transformar diferentes tipos de entrada. Normalmente, isso envolve procurar 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 manipuladas por um provedor de Implantação da Web. Assim, para parametrizar o nome do aplicativo, você realmente terá que parametrizar o provedor que você declarou anteriormente no arquivo Manifest.xml.

O provedor no arquivo de manifesto pode ser considerado como o provedor de Origem, que lerá as informações do pacote de aplicativo 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 acima, 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 fornece à Implantação da Web algumas informações: primeira, você está parametrizando um provedor no manifesto (kind="ProviderPath"); segunda, você está parametrizando um provedor iisApp (scope="iisapp"); por fim, você só quer substituir entradas no arquivo de manifesto que têm o valor “Vacation Pictures”.

A segunda entrada no arquivo de parâmetros ('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, o 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.

Parametrização do nome do banco de dados

O restante das entradas no arquivo Parameters.xml lidam com a parametrização das informações de conexão do 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 para o 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 do Banco de Dados”) e da senha (“Senha do Administrador do 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 configuram 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={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={Database Administrator Password};" 
  tags="Hidden,SQLConnectionString,Validate">
  <parameterEntry type="ProviderPath" scope="dbfullsql" match="VacPicDBSchema.sql" />
</parameter>

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

Nosso aplicativo “Vacation Pictures” também mantém o controle da conexão do banco de dados no arquivo Web.config. Essa parametrização é tratada pela entrada final em Parameters.xml.

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, portanto, agora você pode 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 Matriz da Web realçando 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 a partir desta 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 para a pasta recém-criada:

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

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

A captura de tela mostra os arquivos selecionados à direita, destacando as opções de pasta Enviar para e Compactada.

Este arquivo compactado pode ser nomeado qualquer coisa, mas para funcionar melhor com a demonstração, nomeie-o “VacationPicsWPIInstaller.zip”.

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