682 Chapter 12 • Getting Started with IIS 7.0 Installing IIS 6.0 Using Unattended Installation IIS 6.0 administrators also had the option of using the unattended installation method. Information technology (IT) professionals accustomed to conducting rollouts, are familiar with the unattended installation method of previous versions of Windows. Just like Windows, IIS 6.0 unattended installations required the creation of answer fi les, which contain answers to questions that can be automated during the installation process. The extent and complexity of the answer fi le depended on when you installed IIS 6.0. Unattended installations could be accomplished at two distinct moments: 1. Install IIS 6.0 simultaneously with the operating system Unattended installations could be conducted at the same time that the operating system was installed. The answer fi le created with standard text in this scenario can be long and complex, even for savvy veterans. Not only were administrators creating the sections for IIS, which included a Components and an optional Internet server section, they also created the sections for installing the Figure 12.3 IIS 6.0 Selected In User Interface Getting Started with IIS 7.0 • Chapter 12 683 operating system. Using the unattended installation method required using the Winnt32.exe command. Following is the syntax required for the Winn32.exe command. Winnt32 /unattend:AnswerFile /s:InstallSource AnswerFile is the name of the fi le that contains the answers to questions that need to be automated, and InstallSource is the location of the installation fi les. 2. Installing IIS 6.0 after the operating system is installed Using the Sysocmgr.exe tool, administrators could install IIS 6.0 and the components they wanted from a command line, with the aid of an answer text fi le. Similar to the answer fi le for unattended installation with the operating system, the answer fi le here also has a Components section and optional InternetServer section, but does not include all of the options for the installation of the operating system. Following is the syntax used with the Sysocmgr.exe tool. Figure 12.4 shows what administrators might have in their answer fi les. Sysocmgr /i:%windir%\inf \sysoc.inf /u:c:\ AnswerFile.txt The /i switch points to the path where the sysoc.inf fi le resides, which must be read by the sysocmgr command. The /u switch indicates the path to the answer fi le. Figure 12.4 Example Answer File [Components] Aspnet=on iis_common=on iis_ftp=on iis_asp=on iis_www=on [InternetServer] SvcManualStart=www,ftp In this example, the Components section of the answer fi le would enable ASP.NET, the IIS Common fi les, the File Transfer Protocol (FTP), the Active Server Pages, and Web services. The InternetServer section would set both the Web and FTP service to manual instead of automatic. BEST PRACTICES ACCORDING TO MICROSOFT When you are creating an answer fi le for operating system deployment, Microsoft suggests using the Setup Manager found on the Windows Server 2003 CD. The tool is included in the Deploy.cab fi le under the \Support\Tools folder. 684 Chapter 12 • Getting Started with IIS 7.0 SOME INDEPENDENT ADVICE Although using the Setup Manager is the preferred way of creating answer fi les, the chance of error is still there. Keep your answer fi les short; the longer they are the greater the chance of problems. If you are just creating an answer fi le to install IIS 6.0, then creating it via notepad is more effi cient and examples can be found throughout the Internet. IIS 6.0 Core Server IIS 6.0 contains several core components that perform important functions. The following are the core components with a brief description of each: ■ HTTP.sys Implemented as a kernel mode driver. Used to receive requests and forwards them to the request queue, while also sending responses to the client. ■ Worker Processes (w3wp.exe) Runs as user-mode code. Uses HTTP.sys to receive requests and send responses. Also runs ASP.NET applications and Extensible Markup Language (XML) Web services. ■ Web Service Administration and Monitoring A set of features found in the Web service. Also runs in user-mode. Responsible for Hypertext Transfer Protocol (HTTP) administration and worker process management. ■ Inetinfo.exe Runs as a user-mode component. Hosts the IIS metabase and other services such as Simple Mail Transfer Protocol (SMTP), FTP, and Network News Transfer Protocol (NNTP). ■ IIS Metabase The data store containing all of the IIS confi guration information. Saved as plain text and formatted in XML. (For more information about the metabase, see the section “Where the Metabase Took Us … and Fell Short.” HTTP.sys A kernel mode driver and part of the Transmission Control Protocol/Internet Protocol (TCP/IP) networking subsystem, HTTP.sys, listens for requests that want to connect to Internet Protocol (IP) addresses and port numbers used by Web sites running on IIS. It is used by IIS for handling HTTP requests, but also fulfi lls several other functions including caching HTTP responses in kernel mode, managing Transmission Control Protocol (TCP) connections, implementing connection limits, time-outs, queue length limits, managing bandwidth throttling, and handling text-based logging for Web services. Getting Started with IIS 7.0 • Chapter 12 685 Static File CGI ISAPI Extension ISAPI Filter Notifications URL Map Auth Requirement Pre-processing headers Log End net session IHttpModule Events URL Map Begin req Auth’c Req Resolve cache Handler map Handler exec End req Update req cache Rel req state w3wp.exe Determine Handler handlers logging Custom errors compression authentication iiscore Aspnet_isapi.dll Trace.axd pagehandler iHttpHandlers w3svc Http.sys Figure 12.5 Inside a Worker Process (W3WP.EXE) Worker Processes One of the most important changes in the core of IIS 6.0 was the use of worker processes (w3wp.exe). These processes acted liked processing hosts for user-developed code. They could each host ISAPI extensions and fi lters, as well as Active Server Pages (ASP) applications and static content. Figure 12.5 shows the inside of a worker process (w3wp.exe). With ISAPI, developers could create fi lters to access the core server. ISAPI fi lters are used to preprocess and post-process HTTP requests. ISAPI fi lters are driven by Web server events, not client requests. An ISAPI fi lter could be notifi ed when a Read or Write event occurs and then modify the data that is to be returned to the client. ISAPI extensions are sometimes referred to as ISAPI applications, and can be called from any Web page to perform dynamic and interactive functions such as validating a form or accessing a database. ISAPI extensions and fi lters are written in C or C++ and are quite cumbersome to create and deploy. The deployment of ISAPI extensions and fi lters required server administrator rights. By examining Figure 12.5, you see that requests can be handled by mapping them to the static fi le handler (default), the Common Gateway Interface (CGI) handler, or through an ISAPI extension. In Figure 12.6, requests using managed code (as shown with the solid lines) must fi rst go through the IIS pipeline and then through an ISAPI fi lter before it even reaches the ASP.NET pipeline. The response (depicted as the dotted lines) then goes through the same pipeline but in reverse. 686 Chapter 12 • Getting Started with IIS 7.0 Figure 12.6 Request Going to ASP.NET Pipeline Static File CGI ISAPI Extension ISAPI Filter ISAPI Filter Notifications URL Map Auth Requirement Pre-processing headers Log End net session IHttpModule Events URL Map Begin req Auth’c Req Resolve cache Handler map Handler exec End req Update req cache Rel req state w3wp.exe Determine Handler handlers logging Custom errors compression authentication iiscore Aspnet_isapi.dll Trace.axd pagehandler iHttpHandlers w3svc Http.sys HTTP Request HTTP Response Also at issue was ISAPI deployment. In IIS 6.0 this was also cumbersome. Unfortunately, ISAPI deployment wasn’t as easy as using FTP to copy the binary fi le to the server and have it work. To deploy ISAPI fi lters or extensions to the appropriate confi guration for your site or application, as mentioned earlier, you had to have administrative rights on that local server and then restart the worker process that it resided in. Microsoft has resolved these issues in IIS 7.0 by making managed code a priority and allowing easier deployments of both native modules and managed code. Web Service Administration and Monitoring The user mode component Web Service Administration and Monitoring serves two roles in IIS: ■ HTTP Administration By interacting with the metabase, the Web service gathers confi guration data that HTTP.sys needs and is used to manage worker processes for application pools. . cache Handler map Handler exec End req Update req cache Rel req state w3wp.exe Determine Handler handlers logging Custom errors compression authentication iiscore Aspnet_isapi.dll Trace.axd pagehandler iHttpHandlers w3svc Http.sys Figure. cache Handler map Handler exec End req Update req cache Rel req state w3wp.exe Determine Handler handlers logging Custom errors compression authentication iiscore Aspnet_isapi.dll Trace.axd pagehandler iHttpHandlers w3svc Http.sys HTTP. applications, and can be called from any Web page to perform dynamic and interactive functions such as validating a form or accessing a database. ISAPI extensions and fi lters are written in C or C++ and