• Como mover o Inetpub de drive no IIS 7.0 ?

    Tendo seu conteudo em uma partição diferente que seu sistema operacional, é uma boa pratica de segurança. Nas versões antigas do IIS era possivel fazer isto durante o tempo de setup no arquivo de instalação unattend. Devido as mudanças no Vista e Windows 2008 isto se tornou impossivel de se fazer no tempo de setup. Após o setup do IIS 7 o diretorio inetpub ficara sempre na mesma partição do Windows, então caso queira, você pode mover o diretorio após o setup acabar. Abaixo uma tabela dos diretorios padrões que ficam dentro do diretorio Inetpub. Também um link com um arquivo bat para mover o inetpub para outra unidade/drive que desejar: MOVEIISROOT.zip .

     

    Diretorio Onde esta a configuração ? Exemplo de como mover para outra unidade
    LOGS\FREBLOGS

    Failed Request Event Buffering (FREB) é um novo recurso do IIS7.0 . O caminho padrão que o IIS7.0 usa para gravar os logs do FREB é      %systemdrive%\inetpub\logs\FailedReqLogfiles %windir%\system32\inetsrv\appcmd set config
    -section:system.applicationHost/sites -sit

    eDefaults.traceFailedRequestsLogging.directory:"
    F:\inetpub\logs\FailedReqLogFiles"

    LOGS\LOGFILES

    O caminho padrão para os arquivos de log de acesso é %systemdrive%\inetpub\logs\logfiles.

    %windir%\system32\inetsrv\appcmd set config -section:system.applicationHost/sites -siteDefaults.logfile.directory:"F:\inetpub\logs\logfiles"

    %windir%\system32\inetsrv\appcmd set config -section:system.applicationHost/log -centralBinaryLogFile.directory:"F:\inetpub\logs\logfiles"

    %windir%\system32\inetsrv\appcmd set config -section:system.applicationHost/log -centralW3CLogFile.directory:"F:\inetpub\logs\logfiles"

    TEMP\APPPOOLS

    Isolação de ApplicationPool é um novo recurso do IIS 7.0. O caminho padrão dos arquivos de configuração fica em:  %systemdrive%\inetpub\temp\appPools

     

    reg add HKLM\System\CurrentControlSet\Services\WAS\Parameters /v ConfigIsolationPath /t REG_SZ /d f:\inetpub\temp\appPools

     

    HISTORY

    Historico de configurações/modificações O caminho padrão para a pasta de Historico é :   %systemdrive%\inetpub\history

    %windir%\system32\inetsrv\appcmd set config -section:system.applicationhost/configHistory -path:f:\inetpub\history

    TEMP\ASP COMPILED TEMPLATES

    O IIS7 compila as paginas ASP em memoria, se mais de 250 templates estiver em memoria o IIS7 passa a armazenar os templates compilados em : "%systemdrive%\inetpub\temp\ASP Compiled Templates"

    %windir%\system32\inetsrv\appcmd set config -section:system.webServer/asp -cache.disktemplateCacheDirectory:"f:\inetpub\temp\ASP Compiled Templates"

    TEMP\IIS TEMPORARY COMPRESSED FILES

    O IIS7 irá comprimir as respostas do cache em disco se necessario. O caminho padrão onde ele irá usar é : "%systemdrive%\inetpub\temp\IIS Temporary Compressed Files"

    %windir%\system32\inetsrv\appcmd set config -section:system.webServer/httpCompression -directory:"f:\inetpub\temp\IIS Temporary Compressed Files"

    WWWROOT

    IIS7 vem com o Default Web Site apontando para %systemdrive%\inetpub\wwwroot.

    %windir%\system32\inetsrv\appcmd set vdir "Default Web Site/" -physicalPath:f:\inetpub\wwwroot

    CUSTERR IIS7 armazena as paginas de erros customizadas em  %systemdrive%\inetpub\custerr

    %windir%\system32\inetsrv\appcmd set config -section:httpErrors /[statusCode='401'].prefixLanguageFilePath:f:\inetpub\custerr

    %windir%\system32\inetsrv\appcmd set config -section:httpErrors /[statusCode='403'].prefixLanguageFilePath:f:\inetpub\custerr

    %windir%\system32\inetsrv\appcmd set config -section:httpErrors /[statusCode='404'].prefixLanguageFilePath:f:\inetpub\custerr

    %windir%\system32\inetsrv\appcmd set config -section:httpErrors /[statusCode='405'].prefixLanguageFilePath:f:\inetpub\custerr

    %windir%\system32\inetsrv\appcmd set config -section:httpErrors /[statusCode='406'].prefixLanguageFilePath:f:\inetpub\custerr

    %windir%\system32\inetsrv\appcmd set config -section:httpErrors /[statusCode='412'].prefixLanguageFilePath:f:\inetpub\custerr

    %windir%\system32\inetsrv\appcmd set config -section:httpErrors /[statusCode='500'].prefixLanguageFilePath:f:\inetpub\custerr

    %windir%\system32\inetsrv\appcmd set config -section:httpErrors /[statusCode='501'].prefixLanguageFilePath:f:\inetpub\custerr

    %windir%\system32\inetsrv\appcmd set config -section:httpErrors /[statusCode='502'].prefixLanguageFilePath:f:\inetpub\custerr

     

    Após realizar o alteração usando o comando APPCMD, faça a copia do conteudo incluindo ACL e diretorios sem conteudo, por exemplo usando o comando abaixo:

       xcopy C:\inetpub E:\inetpub /E /O /I
     

    /E Copia diretorio atual e sub-diretorios, mesmo que sem conteudo
    /O copia permissões dos diretorios (ACL's)
    /I Assume que destino é um diretorio

  • Ferramenta de troubleshooting de requisições para IIS 7.5 e 8.0

    Criei uma ferramenta para listar as conexões em uso no IIS 7.5 e 8.0 para sistemas x64. A ideia inicial era apenas listagem das paginas em execução, mas foram tantos recursos adicionados que virou uma ferramenta de troubleshooting web.

    Vejam abaixo os recursos disponíveis:

    * Listar conexões web atuais

    * Reciclagem de  Application Pool

    * Tirar dump de processos W3WP.exe que não respondem (clicar com o botão direito sobre o nome do processo W3WP.exe)

    * Filtrar apenas conexões mais lentas que (5,10,20,30,40,50,60) segundos

    * Auto refresh a cada 3 segundos (opcional)

    * Salvar conexões em execução para arquivo CSV

    * Coleta de dados de performance (10 segundos de intervalo/ 1 minuto de intervalo)

    * Coleta de Network Monitor (dados de rede)

    * netstat  /  netstat com filtro por IP

    * netsh http (Comandos todos em tela visual)

    * Coleta de dados de diagnósticos avançado (Event trace for Windows  - ETW)

    * APPCMD via modo visual

    * Criar e listar backups do IIS

    * Ferramenta do Performance Monitor com principais contadores do IIS

    * Atalhos para console do IIS, Services e CMD

    Tela principal:

  • Erros de script ASP nao são exibidos no Browser – IIS 7

    O primeiro comentario para quem esta migrando do Windows XP para o Windows Vista ou Windows 2008 é que o ASP não é instalado por padrão, sendo assim você pode receber uma mensagem 404.3 no caso de tentar acessar uma pagina sem o modulo ASP instalado:

    HTTP Error 404.3 - Not Found

    Description: The page you are requesting cannot be served because of the Multipurpose Internet Mail Extensions (MIME) map policy that is configured on the Web server. The page you requested has a file name extension that is not recognized, and is not allowed.

     

    Quando as paginas ASP apresentam algum erro, o compilador ASP envia ao browser uma mesagem com a descrição do erro e o codigo do erro para facilitar a correção. Este comportamento pode ser alterado atrave’s de uma chave do metabase do IIS.

    Abaixo por exemplo um erro  ASP que era apresentado por padrão no IIS 5 / IIS 6 :

    Microsoft JET Database Engine error '80004005'
    Unspecified error

    A mesma pagina que produzia este erro, quando acessado pleo IIS7 apresentaria a seguinte mensagem:

    An error occurred on the server when processing the URL. Please contact the system administrator

    Com a segurança aumenta, pois o usuario final nao recebe codigos de erro. Para ambientes de desenvolvimento entretando, a primeira visto este recurso pode parecer ruim. Para alterar o comportamento para funcionamento como no IIS6 é posssivel executar o comando abaixo:

    %windir%\system32\inetsrv\appcmd set config -section:asp -scriptErrorSentToBrowser:true

    Ou através da interface grafica do IIS 7.0 de acordo com a figura abaixo:

    aspscripterrors

  • IIS 7 / 7.5 mostrando paginas de erro HTTP em branco

    Com a chegada do IIS 7.0 / 7.5 é possivel customizar quais são os modulos carregados pelo IIS. Isto traz um grande poder de configuração aumentando a segurança e diminuindo a utilização recursos. Mas também pode causar problemas com uma configuração não adequada ou não conhecida.

    A mais comum é a remoção manual dos modulos no applicationHost.config ou ainda a não instalação de modulos comuns. Quando o modulo CustomErrorModule não é instalado, ou removido manualmente, ao acessar paginas que produzam erros HTTP será exibido uma pagina em branco. Isto pode dificultar a resolução do problema. Portanto atenção para erros de pagina em branco para o modulo CustomErrorModule.

  • Usando o Microsoft Web Deploy para sincronizar a configuração do IIS

    A versão final do Microsoft Web Deploy esta pronta e disponivel para download no site: http://www.iis.net/extensions/WebDeploymentTool

    Com o Web Deploy é possivel sincronizar a conifguração do IIS entre servidores, incluindo os arquivos do site se necessário.

    Após realizar o download no site, instale, é necessario que o servidor tenha no minimo o Framework 2.0 com SP1 para instalação e seja um IIS 6, IIS 7 ou IIS 7.5 para que ele funcione.

    Comando para sincronizar configuração do IIS entre dois servidores IIS 6 e não sincronizar arquivos:

    msdeploy -debug -verb:sync -source:metakey=lm/w3svc,computername=ServidorOrigem -dest:metakey=lm/w3svc,computername=ServidorDestino -disableLink:contentExtension

    O parametro –disableLink:contentExtension serve para não replicar arquivos, removendo ele ira replicar inclusive os arquivos do site.

    O paramêtro –debug irá mostrar os erros detalhados, caso ocorram.

    O paramêtro –verb:sync irá sincronizar a configuração entre os servidores Origem e Destino.

    Pode ser usado um parâmetro –whatif no caso de desejar saber qual ação o MSDeploy iria fazer, mas na pratica ele ira apenas mostrar na tela, sem alterar nada no servidor destino, este comando é muito interessante quando se deseja comparar os servidores, mas não efetivamente deixa-los iguais.

    Outro parâmetro que pode ser utilizado no caso de desejar evitar que algum campo do metabase do IIS seja replicado é o: -skip:attributes.name=NomeDaPropriedade do IIS, exemplo: –skip:attributes.name=ServerBindings, com este recurso é possivel por exemplo replicar dois servidores entre si, e ele não levar as propriedades de IP dos sites.

    Também é possível criar pacotes para migrar sites ou publicar de ambiente de desenvolvimento para produção, e ele ir[a migrar:
    - Configuração do site, incluindo banco de dados.
    - Permissões NTFS, pacotes COM, Componentes no GAC e chaves de registro.
    - Realiza a migração através de comando (no mesmo momento), ou exporta para arquivo.
    - Migração de certificados SSL entre servidores.