iis, yuck!
23/Jun/2008 @ 19:28 Software

Como já escrevi aqui, nos últimos tempos tenho andado com um pé no Linux (como sempre), mas também pela primeira vez num grande projecto, em tecnologias Microsoft (o  que quer que isso queira dizer).
Os gajos têm coisas boas, mas a maior parte é simplesmente, yuck!, como o IIS.
No IIS podemos ter sites diferentes a correr em diferentes portas, até aqui nada de mais. Um desses sites e que vem logo instalado por omissão, é o “Default Web Site“. Sinceramente, não consigo compreender a razão da existência deste site em particular, se ainda definisse o que corre por omissão na porta 80, mas não. Podemos pôr a porta 80 noutro site e podemos mesmo remover o Default Web Site que não acontece nada. Pode haver uma razão profunda para sua existência, mas confesso que a existir, e tal como está implementada, não faz grande sentido para mim. E por isso, apaguei-o há tempos.

Adiante… hoje, comecei a instalar uma aplicação que a páginas tantas, me disse que tinha que ser o Default Web Site e que este não existia. Bem, pensei, isto deve ser ir ao IIS Manager, clicar com o botão direito por cima de um novo site e defini-lo como Default Web Site. Não podia estar mais enganado, não existe em lado nenhum na interface de gestão do IIS algo para criar o dito  cujo. Ala para o Google.
Ok, abrir uma janela de DOS, e em \Inetpub\AdminScripts, correr:

cscript adsutil.vbs enum w3svc/1

Veio um “path not found” só a confirmar que o Default Web Site não existia.

cscript adsutil.vbs enum w3svc

Este comando devolve uma carrada de lixo em scroll e no final aparecem os sites que estão a correr, mas identificados por um número enorme, tipo w3svc/84538735 gerado aleatoriamente, excepto o Default Web Site que tem o número 1. Ou seja, com esta informação, não conseguia saber qual dos meus sites a correr no IIS era aquele que eu queria que fosse o Default.

Bem, com um bocadinho de código, consegue-se saber a que site corresponde cada número:

Function ProcessWebSite(ServiceType, SiteNumber)
Set IISWebSite = getObject("IIS://localhost/" & ServiceType & "/" & SiteNumber)
Set IISWebSiteRoot = getObject("IIS://localhost/" & ServiceType & "/"
& SiteNumber & "/root")
ProcessWebSite = IISWebSite.ServerComment
Set IISWebSiteRoot = nothing
Set IISWebSite = Nothing
end function

Function ShowSites(ServiceType, ClassName, Title)
Wscript.echo "Web Sites Description"
Wscript.echo "============================================"
Set IISOBJ = getObject("IIS://localhost/" & ServiceType)
for each Web in IISOBJ
if (Web.Class = ClassName) then
wscript.echo Ucase(ServiceType) & "/" & Web.Name & _
Space(17-(len(Ucase(ServiceType))+1+len(Web.Name))) & " " & _
ProcessWebSite(ServiceType, Web.name)
end if
next
Set IISOBj=Nothing
WScript.Echo ""
End function

Call ShowSites("w3svc", "IIsWebServer", "Web")

Chamemos servers.vbs ao ficheiro com o código e corremos com:

cscript server.vbs

No meu portátil, por exemplo, dá:

C:\inetpub\ADMINS~1>cscript sites.vbs
Microsoft (R) Windows Script Host Version 5.7
Copyright (C) Microsoft Corporation. All rights reserved.

Web Sites Description
===============================================================
W3SVC/1           Default Web Site

Mas no trabalho não tinha isto, mas uma série deles com os tais números enormes. Mas agora já conseguia identificar qual era o site que eu queria que fosse o tal. Suponhamos que o seu número era o 1234567.
Chegou a hora. Começar por criar o Default Web Site:

cscript adsutil.vbs create_vserv W3SVC/1

Faze-lo a partir do site que queremos:

cscript adsutil.vbs copy W3SVC/1234567 W3SVC/1

Defini-lo:

cscript adsutil.vbs set w3svc/1/ServerComment "Default Web Site"

E pronto, está. Ainda dizem que o UNIX é difícil e trabalhoso, fénix.

-MG
rss 2 pás de carvão
  1. Francisco Costa
    24/Jun/2008 | 09:26

    Uma coisa é certa em Unix ou Linux, normalmente um gajo sabe que para configurar algum servidor tem que usar a linha de comandos ou mexer nalgum ficheiro de configuração. A lógica dos *nix é essa, linha de comandos ou alterar “à la mano” os ficheiros de configuração, mas isso qualquer pessoa que use Linux sabe que é assim e normalmente está tudo documentado. Nos sistemas MS o modo como se fazem algumas coisas depende, ora os paineis de administração fazem tudo ou trazem tudo pré-definido por defeito e com defeito… e depois tens que fussar muito se quiseres ter as coisas à tua maneira…


    A usar Mozilla Firefox Mozilla Firefox 2.0.0.14 em Windows Windows XP
  2. 16/Jan/2009 | 16:52

    Francisco,

    A verdade é que mesmo em Windows tens de fazer certas coisas à’lá pate…

    ie:
    configurar parametros especiais num cluster HPC2008 (cluscfg)
    adicionar suporte .NET ao IIS (aspnet_regiis.exe -i)


    A usar Mozilla Firefox Mozilla Firefox 3.0.5 em Windows Windows Server 2003
atira-lhe uma pá de carvão

Nota: Todos os comentários são moderados.