Introduzione ad IIS7 Piergiorgio Malusardi IT Pro Evangelist [email protected] http://blogs.technet.com/pgmalusardi Agenda • • • • • | Miglioramenti in IIS 7 Introduzione all’estensibilità in IIS 7 Usare il sistema di configurazione di IIS 7 Gestione di IIS 7 Troubleshooting in IIS 7 [email protected] | Revisione dei pilastri di IIS 6 Sicurezza Disponibilità | Sicuro per default Sicuro per design Sicuro nel deployment Architettura fault tolerant Controllo dello stato di salute Accodamento intelligente Scalabilità Scale up/scale out Cache in kernel-mode Piattaforma applicativa integrata Gestione Configurazione basata su XML Amministrazione via command line Amministrazione da remoto [email protected] | I pilastri di IIS 7 – il livello successivo IIS 7 Scalabile Disponibile Sicuro | + Sicurezza Web server modulare e personalizzabile Ridotta necessità di patch Funzionalità URLScan integrata + Estensibilità Nuove API Win32 Supporto integrato per IHttpModules (ASP.NET) + Configurazione Configurazione distribuita e delegabile Estensibilità (schema) Configurazione integrata per piattaforma web + Gestione IIS Manager innovativo Amministrazione via command line Amministrazione remota via HTTP /HTTPS + Diagnostica Nuove API per lo stato del server Failed Request Tracing Diagnostica integrata di IIS e ASP.NET [email protected] | Sicurezza e IIS 7 • WEB server personalizzabile e modulare – Sottile ed efficiente • Installazione dei soli componenti necessari • Riduzione al minimo della superficie di attacco – Cinque volte più granulare delle precedenti versioni di IIS • Riduzione della necessità di gestione delle patch – Patch installate sulla base dei componenti presenti – Se non lo installi non lo devi aggiornare • URLScan integrato | [email protected] | Immagine in memoria di IIS 6 InetInfo WWW Service FTP Admin Tools Scripts Directory Remote Desktop ActiveX Printers Virtual Directory FrontPage 2000 Srv Ext | [email protected] | Common Files Immagine in memoria di IIS 7 – Modularità Extensibility Health and BasicAuthModule Diagnostics FTP Service FTP Server FTP Management DigestAuthModule NetFxExtensibility WindowsAuthModule ISAPIModule HttpLoggingModule CertificateAuthModule ISAPIFilterModule CustomLoggingModule Performance AnonymousAuthModule CGIModule RequestMonitorModule Static Compression IPSecurityModule ServerSideIncludeModule HTTPTracingModule Dynamic Compression UrlAuthorizationModule ASP ODBCLogging RequestFilteringModule ASP.NET LoggingLibraries System Management ManagementConsole ManagementScripting Core Web Server StaticFileModule HttpRedirect DefaultDocumentModule DirectoryListingModule CustomErrorModule ManagementService Metabase WMICompatibility LegacyScripts ProcessModel | NetFxEnvironment [email protected] | ConfigurationAPI LegacySnap-in Static Static & ASP WebWeb Server Server AuthN/AuthZ Rivisitazione della configurazione di default dei moduli Rimozione di tutti i moduli Costruzione di un server personalizzato DEMO: CREAZIONE DI UN SERVER WEB LEGGERO Agenda • • • • • | Miglioramenti in IIS 7 Introduzione all’estensibilità in IIS 7 Usare il sistema di configurazione di IIS 7 Gestione di IIS 7 Troubleshooting in IIS 7 [email protected] | Estensibilità in IIS 6 • Internet Server API (ISAPI) – Filtri ISAPI: • • • Possono essere globali o per sito Consentono la modifica di richieste a runtime Solo codice nativo – Estensioni ISAPI • Trappole di ISAPI – Curva di apprendimento ripida sia per nuovi sviluppatori sia per chi ha esperienza – Non c’è supporto per il managed code – Insieme di API chiuse e statiche non facilmente espandibili da una release all’altra | [email protected] | Pipeline delle richieste di IIS 6 w3wp.exe CGI Determine Handler Static File ISAPI Logging Url map End req begin req Update req cache Auth’c req Rel req state Custom Errors Resolve cache Compression Handler map Handler exec ISAPI Filter Notification Url Map IHttpHandlers Auth Req Log Pre-proc header End net session http.sys | IHttpModule Events Auth’z req Authentication w3svc aspnet_isapi.dll [email protected] | Trace.axd PageHandler Pipeline unificata delle richieste in IIS 7 Native Modules End IHttpModule Log native modules Update cache managed modules Release state Execute handler Static File Pre-execute handler ISAPI Acquire state Native Handler Map handler was Basic Anon Windows Resolve cache Authenticate http.sys [email protected] | Url Auth’z *.aspx Role Mgr Trace.axd Forms IHttpHandler Authorize Begin | CGI Estensibilità di IIS 7 • Server – Nuove API native Win32 (le stesse usate dal team di IIS) – Pieno supporto per ASP.NET 2.0 • Configurazione – Schema in XML completamente estensibile • IIS Manager (interfaccia utente) – Capacità di IIS Manager estensibili via .NET 2.0 • Diagnostica – Aggiunta dei propri eventi direttamente nella pipeline di IIS | [email protected] | Scrittura di un modulo per la pipeline Aggiunta del tracing al modulo Uso del tracing con il modulo DEMO: ESTENSIONE DELLA PIPELINE E DELLA DIAGNOSTICA DI IIS 7 Agenda • • • • • | Miglioramenti in IIS 7 Introduzione all’estensibilità in IIS 7 Usare il sistema di configurazione di IIS 7 Gestione di IIS 7 Troubleshooting in IIS 7 [email protected] | Nuovo sistema di configurazione di IIS 7 • Eliminazione del metabase • I nomi delle proprietà sono uguali a quelli nel metabase – Supporto per applicazioni che si aspettano una configurazione basata su metabase • Forte tipizzazione • File centralizzato: ApplicationHost.config – Schema fortemente tipizzato – Uso della semantica di ASP.NET (la stessa di web.config) • Configurazione distribuita – Impostazioni di default in ApplicationHost.config – Impostazione dei siti o delle applicazioni in Web.config – Controllo delle impostazioni delegabile – I file config contengono la configurazione attiva | [email protected] | Configurazione di IIS 6: Metabase Metabase.xml <IIsWebService Location ="/LM/W3SVC" ScriptMaps=".asp,D:\WINDOWS\system32\inetsrv\asp.dll,5,GET,HEAD,POST .idc,D:\WINDOWS\system32\inetsrv\httpodbc.dll,5,GET,POST … .shtml,D:\WINDOWS\system32\inetsrv\ssinc.dll,5,GET,POST” > </IIsWebService> <IIsWebVirtualDir Location ="/LM/W3SVC/1/ROOT“ ScriptMaps=".asp,D:\WINDOWS\system32\inetsrv\asp.dll,5,GET,HEAD,POST .idc,D:\WINDOWS\system32\inetsrv\httpodbc.dll,5,GET,POST .shtml,D:\WINDOWS\system32\inetsrv\ssinc.dll,5,GET,POST .aspx,D:\WINDOWS\Microsoft.NET\Framework\v2.0.x86chk … \aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG” </IIsWebVirtualDir> | [email protected] | > File di configurazione di IIS 7 ApplicationHost.config (tutto il server web) <handlers> <add name="ASPClassic" path= "*.asp" verb="GET,HEAD,POST“ modules=“ISAPIModule” scriptProcessor=“%windir%\system32\inetsrv\asp.dll resourceType=“File” /> </handlers> Web.config (siti, applicazioni e directory virtuali) <handlers> <add name=“PageHandlerFactory-Integrated” path=“*.aspx“ verb="GET,HEAD,POST,DEBUG“ type=“System.Web.UI.PageHandlerFactory” preCondition=”integratedMode” /> <handlers> | [email protected] | Sistema di configurazione distribuita di IIS 7 • Insieme di azioni ben definite: add, remove, clear • Modifica delle sole opzioni che non si vogliono ereditare | [email protected] | Gerarchia dei file di configurazione Amministratori Windows applicationHost.config Impostazioni principali di IIS 7 Amministratori di siti Web Sito Web 1 web.config [email protected] | web.config web.config App 1 web.config App 2 Amministratori di applicazioni | Sito Web 2 Creazione di un nuovo sito Web Controllo della delega delle configurazione dei siti in IIS DEMO: USO DEI FILE DI CONFIGURAZIONE PER CONTROLLARE LA DELEGA Configurazione di IIS 7 • Delega delle impostazioni agli sviluppatori • Distribuzione della configurazione con i contenuti usando XCOPY • Unico insieme di API di configurazione per l’intera piattaforma Web • Schema e file di configurazione puliti e ben schematizzati • Ampia estensibilità (copia dei file di schema in un folder) | [email protected] | Agenda • • • • • | Miglioramenti in IIS 7 Introduzione all’estensibilità in IIS 7 Usare il sistema di configurazione di IIS 7 Gestione di IIS 7 Troubleshooting in IIS 7 [email protected] | Gestione di IIS 7 : IIS Manager • Configurazione delle impostazioni di IIS (.NET,ASP.NET, IIS) • Installazione e rimozione di funzionalità di IIS • Controllo della delega • Amministrazione da remoto • Estensibile | [email protected] | Gestione di IIS 7 : IIS Manager • Wizard per la completa esecuzione di task comuni • Delega a utenti Windows e Non-Windows • Supporto avanzato per le comuni configurazioni di ASP.NET • Supporto basato su wizard delle funzioni di troubleshooting | [email protected] | Gestione di IIS 7 : WMI Provider • Pieno supporto per il nuovo sistema di configurazione • Estensibile (aggiungibile supporto per i propri moduli) Set oService = GetObject("winmgmts:root\WebAdministration") ' Create binding for site Set oBinding = oService.Get("BindingElement").SpawnInstance_ oBinding.BindingInformation = "*:80:www.site.com" oBinding.Protocol = "http" ' Create site oService.Get("Site").Create "NewSite", array(oBinding), "C:\sites" ' Create application oService.Get("Application").Create "/NewApplication","NewSite", "C:\sites\NewApplication" | [email protected] | Gestione di IIS 7: Appcmd.exe • Accesso veloce ed efficiente alla configurazione di IIS 7 C:\> appcmd list sites C:\> appcmd list requests SITE "Default Web Site" REQUEST "fb0000008000000e" (url:GET (id:1,bindings:HTTP/*:80:,state:Started) /wait.aspx?time=10000,time:4276 msec,client:localhost) SITE "Site1" (id:2,bindings:http/*:81:,state:Started) SITE "Site2" (id:3,bindings:http/*:82:,state:Stopped) • Emula i file *.vbs di IIS 6 • Supporto integrato al “pipe” | [email protected] | Gestione di IIS 7: Compatibilità • Supportati script WMIv2 e ADSI • Installazione della compatibilità con il Metabase • Chiamate ad Admin Base Object (ABO) rimappate sul nuovo sistema di configurazione • Si appoggia al servizio Inetinfo.exe | [email protected] | DEMO: AMMINISTRAZIONE DA COMMAND LINE Agenda • • • • • | Miglioramenti in IIS 7 Introduzione all’estensibilità in IIS 7 Usare il sistema di configurazione di IIS 7 Gestione di IIS 7 Troubleshooting in IIS 7 [email protected] | Runtime Control and Status API • Disponibilità delle informazioni di stato a run-time – Processi in esecuzione – Application Pool Process Id (PID) – Richieste in esecuzione • Possibile controllo a Run-time – Caricamento degli Application Domain – Avvio e arresto dei siti in real-time • Accesso via tool di IIS e codice managed | [email protected] | Failed Request Event Buffering • Traccia tutte le richieste attraverso la pipeline di IIS • Abilitata in automatico • Facile identificazione delle richieste che falliscono o sono bloccate • | Fornisce tempo passato in ogni modulo > identificazione delle richieste “long running” [email protected] | Begin Request Read Configuration Authenticate Authorize Cached ISAPI Filter Determine Handler Troubleshooting in IIS 7: custom error • Custom error – Specifici per i diversi linguaggi (Accetta Encoding) – Diversi per accessi da remoti o da “Localhost” • Informazioni dettagliate – Tempo – URL – Modulo corrente – Stato e sub-stato della risposta – Altre informazioni (passi per correggere l’errore) | [email protected] | Mettiamo tutto insieme Diagnostica Gestione Configurazione Estensibilità Scalabilità • Informazioni di stato esposte in real-time via script e managed code •• IIS Manager costruito zero Vista delle richieste in da esecuzione in IIS Manager o • negli Supporto integrato alla delega script •• Supporto per utenti Windows e non-Windows Metabase eliminato Failed Request Tracing: diagnostica con Zero-repro •• Supporto per l’amministrazione remota Configurazione fortemente schematizzata •• Completamente estensibilee delegabile integrata Configurazione distribuita • Massima estensibilità • Pieno supporto all’uso di Abo delle precedenti versioni • Supporto al codice nativo e Managed • Estensibilità del core server, WMI, interfaccia utente e diagnostica Disponibilità Sicurezza | • Web server fortemente personalizzati • Alleggerimento dei processi per minimizzare il footprint • Filtro forte delle richieste con l’inserimento di URLScan [email protected] | Sommario della sessione • • • • | Estensione di IIS 7 Uso del nuovo sistema di configurazione Uso dei nuovi tool di gestione Troubleshooting dei problemi in IIS 7 [email protected] | Per maggiori informazioni Sito TechNet: www.microsoft.com/technet Sito ufficiale di IIS: www.iis.net | [email protected] | © 2006 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.