Cobertura especial: Windows Server 2008

Introdução ao IIS 7.0

Isaac Roybal

 

Visão geral:

  • Alterações na arquitetura do IIS 7.0
  • Gerenciando o IIS 7.0
  • Compatibilidade retroativa
  • Solução de problemas do IIS 7.0

Cada departamento de TI é diferente, cada uma tem seu conjunto exclusivo de necessidades e objetivos, especialmente no que diz respeito à hospedagem de sites da Web ou serviços. Os servidores da Web podem precisar de um pouco de cada para atender aos requisitos da organização e ainda há o desafio de

reproduzir essa fórmula em vários servidores e, ao mesmo tempo, gerenciar tudo com eficácia. Algumas das alterações mais importantes no IIS 7.0 têm como objetivo fazer exatamente isso ao criar um servidor Web ou farms da Web.

À medida que analisei a lista de todos os excelentes recursos no IIS 7.0, fiquei muito empolgado em compartilhar com você esses recursos. Quando descobri que não seria possível cobrir todos neste artigo, decidi me concentrar em alguns dos recursos mais significativos e nas alterações mais importantes do IIS 7.0. Para obter mais niformações, acesse o site da Web da comunidade do IIS em IIS.net.

Arquitetura nova

As principais alterações no IIS 7.0 estão relacionadas à arquitetura, ao processamento de solicitações e ao suporte à estrutura de aplicativos PHP e ao armazenamento de configuração. Com o IIS 6.0, os recursos eram propostos na base do tudo ou nada. Você precisava instalar todos os recursos e poderia personalizar somente o IIS usando ISAPI.

O IIS foi desenvolvido com base na premissa de que um administrador da Web deseja iniciar a partir de um conjunto básico de funcionalidades e, então, adicionar somente a funcionalidade adicional necessária desejada em seu ambiente. Você conhece o seu ambiente melhor do que ninguém, portanto o IIS 7.0 lhe oferece blocos de criação para que você crie seu próprio servidor Web personalizado. Ao fazer isso, você reduz a sua sobrecarga administrativa ao diminuir a superfície de ataque do seu servidor e eliminar a necessidade atualizar componentes não utilizados. O segredo para essa nova abordagem é a arquitetura modular do IIS 7.0.

O IIS 7.0 tem um novo design que permite que você escolha a funcionalidade, chamada de módulo, a ser instalada no servidor. Esses módulos conectam-se diretamente no pipeline de solicitação integrado. Esse novo design modular tem várias vantagens, incluindo a redução da superfície de ataque e do seu servidor Web.

O IIS tem atualmente 40 módulos padrão – por exemplo, autenticação básica, anônima e do Windows® agora são módulos individuais que podem ser adicionados independentemente ao pipeline de solicitações. Para um esclarecimento simples, os módulos são agrupados em oito subcategorias (consulte a Figura 1).

Figura 1 Os módulos do IIS 7.0 são classificados em oito áreas funcionais

Figura 1** Os módulos do IIS 7.0 são classificados em oito áreas funcionais **(Clique na imagem para aumentar a exibição)

Isso significa qeu você precisa ter a capacidade de criar um servidor Web personalizado desenvolvido exatamente para o seu ambiente. Mas se você precisar de funcionalidades que os 40 módulos padrão não fornecem, talvez algum tipo de autenticação personalizada ou modificador de conteúdo? Sem problemas. Você pode escrever um módulo no código nativo ou gerenciado para atender a essa necessidade e conectá-lo diretamente no pipeline. Isso também permite que a Microsoft escreva e lance novos módulos individualmente, de modo que você não precise aguardar o próximo service pack ou lançamento de produto importante. O IIS 7.0 também permite que você substitua qualquer um dos 40 módulos padrão por seus próprios módulos personalizados. Para obter mais informações sobre como criar seu próprio módulo, consulte IIS.net.

Pipeline de solicitação integrado

Considere o pipeline de solicitação integrado como um conjunto essencial de etapas lineares que devem ocorrer sempre que uma página for veiculada (como visto na Figura 2). Geralmente, algum tipo de autenticação deverá ocorrer, seguida pela autorização para recuperar o conteúdo, determinação e execução do manipulador necessário para esse conteúdo, execução de qualquer registro de log necessário e, finalmente, o envio da resposta. O pipeline de solicitação integrado fornece ao IIS 7.0 a flexibilidade para executar diferentes estruturas de aplicativo ao mesmo tempo. Por exemplo, você pode executar a autenticação por Formulários sobre o conteúdo PHP com um módulo de registro em log personalizado, tudo junto no mesmo pipeline.

Figura 2 Pipeline integrado e módulos do IIS 7.0

Figura 2** Pipeline integrado e módulos do IIS 7.0 **(Clique na imagem para aumentar a exibição)

Cada site da Web no servidor tem um pipeline de solicitação integrado e pode ser executado em um dos dois modos, Integrado e Clássico. O Integrado, por padrão, permite que partes específicas de funcionalidade sejam conectadas ao pipeline, oferecendo a você um controle granular do processo de solicitação. Para compatibilidade, o modo Clássico reproduz a funcionalidade IIS 6.0/ISAPI por meio de um módulo ISAPI no pipeline. Isso é muito útil ao migrar seus aplicativos para o IIS 7.0.

Instalação padrão

Agora, vamos falar sobre a configuração do seu novo servidor Web modular. Se você procura uma instalação padrão do IIS 7.0, observará que somente 10 módulos (se você incluir o Serviço de ativação de processos do Windows) serão incluídos. A instalação do IIS 7.0 fornece a funcionalidade básica do IIS ao instalar a Função de Servidor Web, especificamente os módulos necessários para veicular conteúdo estático, como HTML simples ou ASP clássico. O que for instalado no servidor depois será uma decisão exclusivamente sua. Veja a funcionalidade incluída em uma instalação padrão:

  • Os recursos HTTP comuns, como Conteúdo estático, Documento padrão, Pesquisa no diretório e erros HTTP
  • Recursos de integridade e diagnóstico, como o Log HTTP e monitor de solicitação
  • Recursos de segurança, como Filtro de solicitações
  • Recursos de desempenho, como Compactação de conteúdo estático
  • Ferramentas de gerenciamento, inclusive o Console de gerenciamento do IIS
  • Serviço de Ativação de Processos do Windows

Como se pode ver, esse é um servidor mínimo que não inclui ASP.NET ou outra nova funcionalidade do IIS 7.0, como os recursos de diagnóstico e solução de problemas. É simples habilitar mais funcionalidades no servidor, como a capacidade de fornecer conteúdo dinâmico, como ASP.NET e FastCGI (PHP). Selecione o conjunto de módulos que gostaria de instalar a partir de “Adicionar Serviços de Função” da Função do Servidor Web no gerenciador de servidores no Windows Server® Manager.

Novo armazenamento de configuração

Outra importante alteração no IIS 7.0 que facilitará sua vida é o novo armazenamento de configuração. A metabase, agora um componente instalado opcionalmente para compatibilidade retroativa, foi substituída por um sistema de configuração XML. Já posso ouvir você dizendo "Mas a metabase era XML!". Sim, era. Mas era complicada e não era fácil de ler (pelo menos não por humanos). Ela foi substituída por um sistema XML mais flexível. Como o ASP.NET, o IIS 7.0 usa arquivos .config – claros, simples, portáteis e fáceis de ler.

Migrar para esse formato significa que o sistema de configuração agora é independente da máquina, diferentemente da metabase, que era ligada por chave a uma máquina somente. Como resultado, agora você pode portar o sistema de configuração em outros servidores com uma simples ação de arrastar e soltar ou xcopy e assim por diante.

Esse novo sistema de configuração também funciona para farms da Web utilizando um novo recurso no IIS 7.0 denominado Configuração Compartilhada. Como esse novo sistema de configuração é portátil, você pode compartilhar um arquivo .config mestre entre todos os nós no farm. A configuração compartilhada permite que você exporte a configuração de um bom servidor conhecido de pré-produção e, em seguida, a compartilhe no seu ambiente de produção ou "dinâmico".

Ao exportar o arquivo .config, você deve fornecê-lo com uma senha de chave de criptografia. Isso protege o arquivo .config de um servidor Web não autorizado que tente imitar o .config do seu servidor sem autorização.

É simples habilitar a configuração compartilhada. No nó do servidor do Gerenciador do IIS, selecione Configuração Compartilhada, que está localizada na seção Gerenciamento do painel de tarefas. Basta marcar “Habilitar configuração compartilhada”, fornecer o caminho físico da configuração que você irá compartilhar (geralmente será um compartilhamento UNC), inserir as credenciais necessárias para acessar o caminho físico e clicar em Aplicar. Quando o arquivo .config for localizado, será solicitada sua senha de criptografia. Assim que esse processo for concluído, reinicie o Gerenciador do IIS de modo que ele selecione o novo .config.

A estrutura do novo sistema de configuração é diferente da que você costumava usar; portanto, vejamos as noções básicas. Como mostra a Figura 3, a configuração do IIS 7.0 foi dividida em duas categorias: configurações abrangendo o servidor e configurações específicas do site. Todas as configurações abrangendo o servidor são armazenadas no applicationhost.config, que está localizado no %systemroot%\windows\system32\inetsrv\config. Isso inclui todos os módulos instalados, sites no servidor e assim por diante. As configurações específicas do site são armazenadas em arquivos web.config individuais.

Figura 3 Há um arquivo .config para as configurações abrangendo o servidor e um individual separado para cada site da Web nesse servidor

Figura 3** Há um arquivo .config para as configurações abrangendo o servidor e um individual separado para cada site da Web nesse servidor **(Clique na imagem para aumentar a exibição)

Se você já usou o ASP.NET, provavelmente está familiarizado com arquivos web.config. O IIS 7.0 utiliza arquivos web.config para armazenar configurações específicas de sites da Web individuais, como configurações de aplicativo e documento padrão do site, bem como configurações ASP.NET. Isso significa que você terá um arquivo web.config para cada site no seu servidor.

O arquivo web.config de um site da web está localizado no caminho físico do site, como %systemroot%\inetpub\wwwroot, por exemplo. Esse projeto aproveita as mesmas vantagens de portabilidade salientadas anteriormente, mas no nível do site. Você pode desenvolver facilmente um site em um servidor de teste, por exemplo, e então simplesmente arrastar e saltar, ou xcopy, os arquivos web.config e do aplicativo do site em um servidor de produção.

Sempre que você portar ou compartilhar arquivos .config, verifique as informações específicas da máquina, como endereços IP e letras de unidades. O IIS 7.0 fornece uma solução para essa supervisão com suporte a variáveis de ambiente de SO (como %systemroot%). Além disso, certifique-se de que o mesmo conjunto de módulos esteja instalado nos servidores de teste e produção. Isso ajudará a evitar erros de aplicativos não esperados. Também podem ocorrer erros se o web.config fizer referência a um módulo que não está instalado ou se um módulo padrão entrar em conflito com um módulo personalizado.

Gerenciando o seu servidor web

Então, agora que você tem esse servidor Web excelente, novo, personalizável, flexível e portátil. Como você fará para gerenciá-lo? O gerenciamento tomou grande parte do planejamento e da criação do IIS 7.0 e há várias formas para gerenciar tarefas administrativas.

As preferências de gerenciamento geralmente se encaixam em, pelo menos, uma de três categorias: administração pela interface do usuário com o recurso de apontar e clicar, inserção de comandos na linha de comando e escrita de scripts para automatizar o máximo possível. Vamos iniciar com a interface do usuário.

No IIS 6.0, o snap-in do MMC Microsoft® (Console de Gerenciamento Microsoft) tinha duas exibições básicas e conhecidas: o modo de exibição de árvore e em guias. Para examinar uma configuração, clique com o botão direito do mouse, selecione Propriedades e, em seguida, você verá várias guias, sem mencionar os botões de opções e caixas de seleção.

Felizmente, a interface do usuário no IIS 7.0 foi totalmente renovada. Essa interface do usuário, nomeada Gerenciador do IIS, foi desenvolvida para permitir uma abordagem orientada por tarefas, como mostra a Figura 4. Há também um Gerenciador remoto para clientes de nível inferior, como o Windows XP e o Windows Server 2003. Você pode baixá-lo do site IIS.net/downloads.

Figura 4 Nova interface do usuário no IIS 7.0

Figura 4** Nova interface do usuário no IIS 7.0 **(Clique na imagem para aumentar a exibição)

A nova interface do usuário consiste no painel Conexões, à esquerda, no painel Ações, à direita, e no painel de tarefas ou espaço de trabalho no centro. A árvore do gerenciador de conexão, à esquerda, é semelhante ao modo de exibição de árvore do IIS 6.0 com nós pai e filho. A novidade no modo de exibição em árvore é como criar novas conexões, salvar as atuais ou excluir as existentes. O painel de tarefas é a maior melhoria na interface do usuário, com dois modos de exibição para trabalhar. O modo de exibição de recursos elimina todas as propriedades configuráveis do IIS do antigo modo de exibição de "guias" e as agrupa por área administrativa, como IIS, gerenciamento e segurança.

As propriedades do ASP.NET também foram integradas ao Gerenciador do IIS, eliminando a necessidade de usar um snap-in do MMC adicional. Cada propriedade configurável tem seu próprio ícone, facilitando sua localização. E, como o Gerenciador do IIS foi desenvolvido como um aplicativo do Windows Forms, você pode adicionar facilmente ícones de plug-in para quaisquer módulos personalizados ou funcionalidades que escrever.

O segundo modo de exibição do painel de tarefas é o modo de exibição de conteúdo, que é muito semelhante ao IIS 6.0, pois o que você vê está em um diretório de conteúdo do site e é possível realizar ações em relação a esse conteúdo. O que há de novo aqui é a capacidade de selecionar uma parte específica do conteúdo, digamos, uma página da Web específica e, então, alternar para o modo de exibição de recursos, a fim de chamar determinadas configurações no conteúdo selecionado, que lhe fornece controle granular no nível de página.

Outras formas de gerenciar

Para os que preferem a linha de comando, há uma nova ferramenta poderosa denominada APPCMD.exe, que permite que você realize tarefas simples como interromper um site ou fazer backup do arquivo .config atual, bem como tarefas mais complexas, como pesquisa do esquema de configurações. A sintaxe é muito simples:

APPCMD (command) (object-type) <identifier> </parameter1:value1 ...>. 

TolistallobjectsavailabletoAPPCMD,type:

APPCMD /? 

Ou, se você quiser ver os comandos disponíveis para um determinado tipo de objeto, digite:

APPCMD (object-type) /?

Para todos os codificadores existentes, uma API de código gerenciado denominada Microsoft.Web.Administration e um novo provedor de WMI foram adicionados ao IIS 7.0. Esses dois métodos abrem várias opções para ferramentas de script, automação e escrita para o gerenciamento do IIS 7.0. Ambos podem ser usados com o Windows PowerShell® e o provedor de WMI também pode ser usado com VBScript e JScript®. Para obter mais informações, consulte blogs.msdn.com/carlosag/archive/2006/04/17/MicrosoftWebAdministration.aspx.

Gerenciamento remoto e administração delegada

O IIS 7.0 oferece novas formas de gerenciar remotamente seu servidor, sites, aplicativos Web e direitos de administração delegada com segurança para não administradores. Primeiro, vamos falar sobre os novos recursos de gerenciamento remoto e como eles podem facilitar a sua vida.

Anteriormente, havia dois modos de gerenciar remotamente um servidor IIS: usando o site da Web de gerenciamento remoto ou usando os serviços de terminal/desktop para acessar a interface do usuário. Mas se você estiver fora do seu firewall ou não estiver no local, essas opções não são muito úteis. O IIS 7.0 soluciona isso ao criar recursos de gerenciamento remoto diretamente na interface do usuário que funcionam por meio de HTTPS amigáveis a firewall.

O gerenciamento remoto no IIS 7.0 facilita a vida de várias formas. Primeiro, você obtém a mesma experiência de interface caso estivesse conectado localmente. Segundo, não há necessidade de abrir portas no seu firewall, pois a comunicação ocorre via HTTPS. Por fim, agora você pode gerenciar vários servidores de uma única interface do usuário. Não há necessidade de ter várias janelas de site da Web remoto ou Desktop remoto abertas ao mesmo tempo.

O serviço de gerenciamento remoto real no IIS 7.0 é essencialmente um aplicativo Web pequeno, que é executado como um serviço separado, em uma conta de serviço local Windows NT® nomeada NT Service\WMSVC. Esse design mantém a funcionalidade de gerenciamento remoto mesmo se o servidor IIS por si só não responder.

Como a maioria dos recursos no IIS 7.0, para fins de segurança, o gerenciamento remoto não é instalado por padrão. Para instalar os recursos de gerenciamento remoto, adicione serviços de função à função do Servidor Web no Windows Server 2008 Server Manager, que pode ser encontrado em Ferramentas de gerenciamento. Assim que esse recurso estiver instalado, você então poderá habilitar as conexões remotas e iniciar o serviço WMSVC, pois ele é interrompido por padrão.

A configuração de inicialização padrão do serviço WMSVC é manual. Se você quiser que o serviço inicie automaticamente depois de uma reinicialização, precisará alterar a configuração para automática. Você também pode fazer isso através da linha de comando ao digitar:

sc config WMSVC start=auto

Ao habilitar conexões remotas por meio do serviço de gerenciamento, você verá uma lista de configurações, como Credenciais de identidade, Conexões e Restrições de endereço IPV4. A única decisão fundamental nesse momento é determinar a qual conjunto de credenciais de identidade conceder permissão para conexão com o IIS 7.0: somente credenciais do Windows ou credenciais do Windows e do Gerenciador do IIS.

A primeira opção é bastante óbvia, indicando que você pode permitir somente contas de usuário do Windows, sejam locais ou de domínio. A segunda opção envolve usuários do Windows e um tipo de conta que é completamente novo no IIS 7.0 e não está associado a contas de usuários do Windows: Usuários de Gerenciador IIS. Com Usuários do Gerenciador do IIS, os administradores podem criar contas de usuário conhecidas somente no contexto do IIS 7.0 e não ter acesso ao SO. Por fim, por padrão, o IIS fornece um certificado auto-assinado para iniciar, mas recomenda-se que você adicione um certificado SSL assinado válido. Agora, basta aplicar a sua configuração e iniciar o serviço.

Para obter controle e segurança adicionais, os administradores de TI têm a capacidade de delegar com segurança tarefas de administração de sites individuais ou aplicativos Web a não administradores.

A Administração delegada é essencialmente administração remota, mas ela limita o escopo do acesso a sites individuais ou aplicativos Web. O recurso Usuários do Gerenciador do IIS é especialmente útil aqui. Você pode criar usuários do IIS para esses proprietários isolados e delegar permissão para administração de seu próprio site ou aplicativo. Eles não têm acesso a configurações amplas de servidor e são limitados a configurações somente para seu site específico ou aplicativo Web.

Você também pode especificar quais recursos e configurações os usuários podem alterar e até mesmo quais aparecem na interface do usuário. Por exemplo, se você não quiser que alguém altere o tipo de autenticação usado para o site, poderá definir esse recurso como somente leitura ou não herdado. Quando um recurso for somente leitura, os usuários ainda poderão acessar o recurso e determinar a configuração, mas não poderão fazer alterações; e com essa configuração não herdada, o ícone de recurso não será exibido no modo de exibição do Gerenciador do IIS do usuário delegado. Esse tipo de delegação de recurso permite que você forneça acesso extremamente controlado aos outros sem fornecer controle administrativo no servidor Web.

Avançando para o IIS 7.0

Ao desenvolver o IIS 7.0, a equipe quis garantir que a transição fosse o mais tranqüila possível ao permitir o uso de alguns dos seus investimentos existentes em ferramentas de gerenciamento e scripts para o IIS 6.0. A compatibilidade retroativa do IIS 7.0 foi muito bem pensada, de modo que funcionaria com os seus scripts do IIS 6.0. Há um conjunto completo de ferramentas – desde a compatibilidade de metabase do IIS 6.0 ao real console de gerenciamento do IIS 6.0 – que você pode instalar no nó de compatibilidade de gerenciamento do IIS 6.0 na configuração.

A infra-estrutura de compatibilidade de metabase do IIS 6.0 utiliza um componente denominado ADOMapper. Ele permite que você execute os seus scripts metabase ADSI ou ABO do IIS 6.0 em relação ao novo sistema de configuração, limitando-o somente ao que o IIS 6.0 poderia fazer. Assim, não é possível ler nem gravar novas propriedades do IIS 7.0, acessar novos dados do tempo de execução nem ler ou gravar propriedades ou arquivos web.config do ASP.NET.

Diagnóstico e solução de problemas

O diagnóstico e a solução de problemas sempre foram questões que exigiram tempo. Analisar logs e tentar reproduzir um problema em um grande farm da Web ou até mesmo em um único servidor pode ser difícil. O IIS 7.0 tem uma ferramenta denominada Failed Request Tracing (Rastreamento de Solicitação Falha), a fim de ajudar você a economizar tempo e dores de cabeça. Ela pode ser útil em muitas situações, como quando uma solicitação é retida e produz erros ou para investigar problemas de autenticação e autorização.

A Failed Request Tracing usa as regras de rastreamento como um critério para a pesquisa de erros. As regras de rastreamento podem ser criadas para verificar tipos de comportamento ou erros ao especificar o tipo de conteúdo que você deseja rastrear (como todo o conteúdo no servidor, somente conteúdo ASP.NET ou conteúdo personalizado como PHP) e em quais condições o rastreamento deve ser iniciado (como em determinado código de status retornado, tempo para veicular a página, gravidade do evento ou uma combinação).

Suponha, por exemplo, que usuários relatem que um site está demorando muito para carregar. Esse é um cenário complicado para reproduzir em qualquer caso, mas especialmente se você tiver centenas de hits por hora. Com a Failed Request Tracing, você simplesmente adiciona uma regra de rastreamento para iniciar o log quando uma página demorar mais do que a quantidade de tempo desejada para carregar – nesse caso, diria dois segundos – e aguardar para que o servidor reproduza o problema por si só (consulte a Figura 5).

Figura 5 Usanso a Failed Request Tracing para a solução de problemas

Figura 5** Usanso a Failed Request Tracing para a solução de problemas **(Clique na imagem para aumentar a exibição)

A diferença entre Failed Request Tracing e log tradicional é que o primeiro somente inicia o log quando um critério de solicitação com falha específico for detectado. O arquivo de log por si só é um XML com uma folha de estilos XML que o torna claro e de fácil leitura. Como a maioria dos outros recursos do IIS 7.0, ele não é instalado por padrão e pode ser localizado na seção de diagnóstico e integridade da configuração. Você também deve habilitá-lo no Gerenciador do servidor do IIS.

O IIS 7.0 é um excelente avanço para todos os administradores. Sua nova arquitetura e recursos fornecem a agilidade e a flexibilidade necessárias para adaptação ao seu ambiente em constantes alterações. Com os recursos de gerenciamento, ferramentas de compatibilidade retroativa e recursos de solução de problemas, já está pronto para ser implantado hoje e funcionar com o seu ambiente existente.

Isaac Roybal é gerente de produtos do Windows Server na Microsoft. Suas responsabilidades cobrem tudo relacionado à Web com o Windows Server. Isaac trabalha com o Windows Server desde o Windows NT 3.51 e o IIS 4.0. Antes disso, ele foi gerente do programa de operações do grupo de operações e plataforma de Internet do Office. Ele possui certificação MCSE do Windows NT 4.0, Windows 2000 e Windows Server 2003.

© 2008 Microsoft Corporation e CMP Media, LLC. Todos os direitos reservados. A reprodução parcial ou completa sem autorização é proibida..