本文中所有涉及的IIS均指Windows Server 2003中提供的IIS 6。 - xiaoou2002的日志 - 网易博客

来源:百度文库 编辑:神马文学网 时间:2024/04/28 00:20:06
建议你在阅读本文之前,先阅读IIS使用指南之一 :IIS 6 新特性一文,只有当你了解IIS 6的新特性后,才能更好的使用它。如非特别说明,本文中所有涉及的IIS均指Windows Server 2003中提供的IIS 6。
安装IIS
在安装IIS之前,你需要考虑如何增强IIS服务器的安全性,首先的一点就是减少IIS服务器的攻击面。在IIS服务器上你首先应该安全配置Windows服务器;使用NTFS文件格式;尽可能少的安装其他网络服务;停止不相关的服务;并且只是安装需要的IIS组件。
安装IIS的过程很简单,点击开始,指向控制面板,选择添加或删除程序,然后点击添加/删除Windows组件,在弹出的Windows组件向导对话框,勾选应用程序服务器下的Internet信息服务(IIS)即可。需要注意的是,从安全性考虑,在Windows Server 2003中安装IIS时,默认只会安装IIS的部分组件而不是全部,安装的组件如下表所示:
默认安装的IIS组件说明
组件名
默认设置
推荐设置
FrontPage 2002 Server Extensions
禁用
提供对在FrontPage中发布Web站点的支持,根据你自己的需要来决定是否启用,建议不启用。
Internet打印
禁用
Internet打印服务组件,请根据你自己的需要来决定是否启用。
Internet信息服务管理器
启用
用于本地管理IIS的MMC单元。
NNTP Service
禁用
网络新闻传输服务组件,请根据你自己的需要来决定是否启用。
SMTP Service
禁用
SMTP服务组件,请根据你自己的需要来决定是否启用 ,例如安装Exchange服务器则需要安装此组件。
公用文件
启用
IIS所必需的程序文件。
后台智能传送服务(BITS)服务器扩展
禁用
BITS是一种后台文件传送机制,被Windows更新或自动更新所使用,只有你的应用程序需要此功能时才启用 ,例如安装WSUS服务器则需要安装此组件。
万维网服务
启用
Web服务组件,这是IIS最常用的组件。它包含了多个子组件,详见下表。
文件传输协议(FTP)服务
禁用
FTP服务组件,根据你的需要来决定是否启用。
默认安装的万维网服务组件说明
组件名
默认设置
推荐设置
Active Server Pages
安装此组件但是禁止使用
ASP脚本支持组件,从安全性考虑,默认情况下虽然安装但是禁止使用 ,你可以在此勾选它,那么它将默认启用;或者你可以在此保持默认设置,以后再手动启用。
Internet数据连接器
安装此组件但是禁止使用
通过.idc文件提供的动态内容支持, 从安全性考虑,默认情况下虽然安装但是禁止使用,你可以在此勾选它,那么它将默认启用;或者你可以在此保持默认设置,以后再手动启用。
WebDav发布
安装此组件但是禁止使用
WebDAV扩展了HTTP 1.1协议,使其支持Web内容的发布和管理, 从安全性考虑,默认情况下虽然安装但是禁止使用,你可以在此勾选它,那么它将默认启用;或者你可以在此保持默认设置,以后再手动启用。
万维网服务
启用
IIS Web服务的核心组件
远程管理(HTML)
禁用
支持从HTML界面远程管理IIS,你可以根据需要 进行安装。
远程桌面Web连接
禁用
支持从Web页面连接到终端服务的组件 ,你可以根据需要进行安装。
在服务器端的包含文件
安装此组件但是禁止使用
提供对.shtm、.shtml、和.stm文件的支持, 从安全性考虑,默认情况下虽然安装但是禁止使用,你可以在此勾选它,那么它将默认启用;或者你可以在此保持默认设置,以后再手动启用。
如果你只是想提供Web服务,那么IIS安装的默认组件已经完全满足你的需求。在此我仅安装Web服务组件,所以勾选Internet信息服务(IIS)后依次点击确定,然后在Windows组件向导对话框上点击下一步,此时Windows服务器开始IIS组件的安装,安装过程中可能提示你插入安装光盘,当安装完成后IIS就安装好了。
配置IIS
通常情况下对于IIS本身我们需要做的配置不多,主要集中在以下几个方面:
配置IIS的应用程序隔离模式;
配置HTTP压缩;
配置MIME类型;
配置Web服务扩展;
配置应用程序池。
配置IIS的应用程序隔离模式
我们在IIS使用指南之一 :IIS 6 新特性中介绍过,默认情况下IIS 6工作在工作进程隔离模式下,如果你的Web应用程序不能兼容此模式,那么你需要将IIS 6配置为工作在IIS 5 隔离模式下,配置过程如下:
点击开始,指向控制面板,然后选择Internet信息服务(IIS)管理器,在弹出的Internet信息服务(IIS)管理器上右击网站文件夹,选择属性,然后在弹出的网站属性对话框上点击服务标签,在隔离模式下勾选以IIS 5.0隔离模式运行WWW服务即可,需要重启整个IIS服务。

配置HTTP压缩
如上图中的配置,你可以看到IIS 6支持HTTP压缩。HTTP压缩是一种牺牲CPU性能来降低带宽消耗的功能,如果IIS中启用了HTTP压缩并且客户端浏览器支持HTTP压缩,那么IIS在传送文件之前,会对数据进行压缩后再进行传送。它的工作原理是这样的:
IIS接收到客户端浏览器发送的请求时,将检查客户端浏览器是否支持HTTP压缩;然后IIS检查客户端浏览器请求的文件的扩展名,以确定请求的文件为静态文件或包含动态内容。
如果为静态文件,IIS将查看是否已将此文件以压缩格式存储在临时目录中。如果文件没有以压缩格式存储,IIS会将未压缩的文件发送至发起请求的客户端浏览器,并将此文件进行压缩后存储在临时目录中;如果文件已经以压缩格式存储在临时目录中,IIS会将压缩过的文件发送给浏览器。在客户端浏览器首次请求之前,IIS不会压缩任何文件;在客户端浏览器首次请求某个文件之前,此文件不会被压缩;并且在客户端浏览器首次请求某个文件时,它获得的文件并未经过压缩。
如果文件包含动态内容(应用程序文件),IIS将首先针对动态内容生成响应,然后对生成的响应进行压缩,并将压缩后的响应发送至客户端浏览器;IIS不对此响应进行存储。
压缩静态文件所消耗的CPU性能较少,并且通常只需要压缩一次,然后就保存在缓存的临时目录中;压缩动态内容的代价要高一些,因为它们并不存储在临时目录中,并且每次请求时都必须重新生成。推荐你只压缩静态文件,而不压缩应用程序文件。当然,如果你认为与CPU性能消耗相比你更在乎带宽的利用率,那么也可以压缩应用程序文件;微软建议在CPU利用率已经达到80%以上时,不对应用程序文件进行压缩。
当配置HTTP压缩时,根据你的需要选择压缩静态文件和压缩应用程序文件,如果要压缩应用程序文件,则必需勾选压缩静态文件,然后输入压缩后的内容的缓存临时目录,默认为%windir%\IIS Temporary Compressed Files,然后输入所存储的压缩内容的最大容量即可,默认为不受限制。

配置MIME类型
从安全性上考虑,IIS 6中只是定义了常见的MIME类型(文件扩展名),而没有和IIS 5一样包含通配符MIME映射。这样当客户端浏览器从IIS 6 Web服务器上请求某个文件时,如果该文件的扩展名并没有在IIS的MIME类型中进行定义,IIS 会返回404错误-文件或目录未找到。对于使用Access数据库的站点,为了防止别人下载Access数据库,有些文章中介绍了将Access数据库改名为.asp来防止下载的方法,这并不安全,最好的办法就是将Access数据库的扩展名修改为MIME类型中未定义的扩展名,这样别人就无法访问此数据库。
当然,有时你需要添加MIME类型。你可以在IIS全局、网站、单个网站这三个级别上添加MIME类型,默认的MIME类型定义在IIS全局属性中,而网站属性中定义的MIME类型可以覆盖所有网站中的MIME类型定义,在单个网站上定义的MIME类型只会影响此站点。
在IIS全局上添加MIME类型的过程如下:
在IIS管理控制台中右击服务器名,然后选择属性;

在弹出的计算机属性对话框上点击MIME类型按钮;

在MIME类型对话框中,你可以创建、修改、删除MIME类型,在此我为ISO文件创建一个MIME类型,点击新建按钮;

在扩展名栏中,键入对应的文件扩展名.iso,如果你不输入“.”(例如只输入ISO),那么IIS会自动为你添加;如果你想添加通配符MIME映射,即允许访问任何没有MIME类型定义的文件,则在扩展名栏输入“*”,不过不推荐使用这种方式。然后在MIME类型栏,输入application/octet-stream,最后点依次击确定即可。

而在网站或单个网站上添加MIME类型定义则是右击网站或单个网站,然后选择属性,点击HTTP头标签中的MIME类型按钮即可进行配置。
配置Web服务扩展
Web服务扩展是IIS中用于处理动态内容请求的扩展组件,在IIS中支持以下两种方式的Web服务扩展:
ISAPI(Internet Server Application Programming Interface)扩展;
CGI(Common Gateway Interface)应用程序;
它们之间的工作原理基本相同,主要是实现机制不同。ISAPI和CGI之间最大的区别在于ISAPI扩展基本以动态链接库的形式存在,而CGI以可执行程序形式存在;ISAPI方式运行的Web服务扩展可以在被用户请求激活后长驻内存,从而减少加载DLL的时间,因此具有比CGI方式更高的效率。
从安全性上考虑,在安装IIS时,默认情况下会安装以下四个Web服务扩展但是并不启用,因此只能支持静态内容的访问:
Active Server Pages
Internet数据连接器
WebDav
在服务器端的包含文件
你可以根据你的需要添加或删除自定义的Web服务扩展,而对于IIS内建的Web服务扩展则只能禁用或启用。
对于这些内置的Web服务扩展,IIS已经为Web站点配置好了应用程序映射,你只需要启用这些Web服务扩展,就可以在Web站点中启用对相应动态内容的访问。
如果要启用某个系统自带的Web服务扩展,则在IIS管理控制台中点击Web服务扩展文件夹,然后在右侧窗口中点击对应的Web服务扩展,点击允许即可,例如要启用对ASP页面的支持,则启用Active Server Pages即可;

如果要添加自定义的Web服务扩展,除了需要在Web服务扩展文件夹中进行添加外,还需要在Web站点中添加应用程序映射,我将以后专文进行描述。
配置应用程序池
IIS 6的核心在于工作进程隔离模式,而应用程序池则是定义工作进程如何进行工作,因此,可以说应用程序池是整个IIS 6的核心。
和IIS 5中只能使用单个应用程序池不同,工作在工作进程隔离模式的IIS 6可以创建多个应用程序池,不同的应用程序池之间是完全隔离的,某个应用程序池停止服务时不会影响到其他应用程序池。
在使用应用程序池之前,你应该确定你所需要的应用程序池数量。可能有很多朋友会认为,既然不同的应用程序池之间是完全隔离的,那么我只需要为每个Web站点创建一个应用程序池就可以了。这个办法在IIS服务器上具有较少的Web站点数量时可以使用,但是如果IIS服务器上具有很多Web站点数量,那么这个办法就不适用了,因为不同的应用程序池在被访问时都会创建各自的工作进程,当大量的工作进程并发工作时会消耗大量的系统资源和CPU利用率,反而会降低服务器性能。你应该根据Web站点的重要性、隔离性、所运行代码的安全性和稳定性等来对IIS服务器上所具有的Web站点进行划分,然后根据情况来决定所需要的应用程序池数量。对于那些非常重要的Web站点、需要单独隔离的Web站点、所运行代码稳定性和安全性并不可靠的Web站点配置为使用各自独立的应用程序池,而将其他普通的Web站点配置为使用一个公共的应用程序池。
默认情况下,在安装IIS时会创建一个默认网站并创建一个名为DefaultAppPool的应用程序池为其使用;默认配置下的应用程序池已经可以很好的进行工作,建议你只有在特别需要时才对应用程序池进行配置。
配置应用程序池属性
在IIS管理控制台中展开应用程序池文件夹,然后右击对应的应用程序池,点击属性,你可以在应用程序池的属性中进行以下配置:
回收
在回收标签,你可以设置工作进程的回收方式:

回收工作进程(分钟):在工作进程运行多少分钟后回收工作进程,默认启用,并且设置为1740分钟(29小时);
回收工作进程(请求数目):在工作进程处理多少 个HTTP请求后终止此工作进程,默认禁用,如果启用则默认值为35000;
在下列时间回收工作进程:在指定的时间回收工作进程,默认禁用;如需启用,勾选后点击添加按钮添加回收的时间即可,使用24小时制定义回收的时间;
消耗太多内存时回收工作进程:
最大虚拟内存(兆):当工作进程使用的虚拟内存达到设置的值时回收工作进程,默认禁用,如果启用则默认值为500 M;建议设置为不超过虚拟内存总数的70%;
最大使用的内存(兆):当工作进程使用的物理内存达到设置的值时回收工作进程,默认禁用,如果启用则默认值为192 M;建议设置为不超过物理内存总数的60%;
另外需要注意的是,应用程序池具有以下两种工作进程回收方式,不过这两种回收方式均不会造成Web服务的中断:
默认情况下,应用程序池使用重叠回收方式。在这种方式下,当应用程序池要关闭某个工作进程时,会先创建一个工作进程,直到新的工作进程成功创建后才关闭旧的工作进程;
应用程序池也可以先关闭旧的工作进程,然后再创建新的工作进程。
如果Web应用程序不支持多实例运行,那么你必须配置应用程序池禁止使用重叠回收方式。此配置无法在IIS管理控制台中进行修改,只能通过在metabase.xml中修改对应应用程序池的DisallowOverlappingRotation metabase属性为true进行。
性能
在性能标签你可以设置工作进程的运行方式:

在空闲此段时间后关闭工作进程(分钟):当工作进程空闲多少分钟后关闭此工作进程,这降低了空闲工作进程对系统资源和CPU性能的消耗,默认启用并且设置为20分钟;
核心请求队列限制为(请求次数):当HTTP.sys接收到某个客户端发送的HTTP请求时,如果处理此请求的对应应用程序池的工作进程还处于忙状态,则HTTP.sys将接收到的请求保存在对应应用程序池的请求队列中,直到工作进程空闲为止。此选项即用于设置此应用程序池的请求队列所能容纳的请求数量,默认情况下每个应用程序池的请求队列限制为保留1000个请求,如果超出则向客户端返回503错误,你可以根据需要适当进行修改,最大可以设置为65535。但是如果设置太大则会消耗大量的系统资源 ,而设置太小会导致客户端访问时频繁出现503错误。
启用CPU监视:监视此应用程序池的CPU使用率,默认未启用;如果某个应用程序池占用的CPU利用率过多,那么可以通过配置此选项来限制此应用程序池;
最大CPU使用率(百分比):所设置的应用程序池所能使用的最大CPU使用率;启用CPU监视时默认值为100;
刷新CPU使用率(分钟):刷新CPU使用率的间隔时间;启用CPU监视时默认值为5;
CPU使用率超过最大使用率时执行的操作:当此应用程序池的CPU使用率超过所设置的最大CPU使用率时所进行的操作,启用CPU监视时默认为无,此时IIS只是在事件日志中进行记录而不进行其他操作;如果选择为关闭,那么IIS将关闭此应用程序池中的所有工作进程;
Web园:在Web园中你可以配置此应用程序池所使用的最大工作进程数,默认为1,最大可以设置为4000000; 配置使用多个工作进程可以提高该应用程序池处理请求的性能,但是在设置为使用多个工作进程之前,请考虑以下两点:
每一个工作进程都会消耗系统资源和CPU占用率;太多的工作进程会导致系统资源和CPU利用率的急剧消耗;
每一个工作进程都具有自己的状态数据,如果Web应用程序依赖于工作进程保存状态数据,那么可能不支持使用多个工作进程。
运行状况
在运行状况标签你可以配置应用程序池监视工作进程的运行状况,

启用Ping:默认情况下应用程序池配置为每隔30秒Ping工作进程,当工作进程没有进行响应时,则认为此工作进程出现故障并默认配置为关闭此工作进程。你可以修改Ping的时间间隔,但是太长的Ping间隔可能会导致Web服务的中断,而太短的Ping间隔又会消耗更多的系统资源和CPU利用率,因此建议你保留默认配置;
启用快速失败保护:如果Web应用程序代码编写有问题,它可能会导致工作进程持续出现问题。默认情况下应用程序池配置为启用快速失败保护,当工作进程在配置的时间段(默认为5分钟)内发生的失败次数超过了配置的值(默认为5次),则禁用此应用程序池。
启动时间限制:IIS等待属于此应用程序池的工作进程启动的时间,当工作进程启用时间超出此设置值时,IIS会在事件日志中进行记录;
关闭时间限制:当IIS检测到某个工作进程出现故障时,将此工作进程标记为关闭,此选项指定了IIS等待工作进程自动关闭的时间限制,如果超出此时间限制后工作进程尚未关闭,则IIS强行关闭工作进程。
标识
在标识标签,你可以配置工作进程所运行的用户账户。在IIS 5或者当IIS 6运行在IIS 5隔离模式时,工作进程运行在本地系统账户,而运行在工作进程隔离模式下的IIS 6的工作进程运行在网络服务账户下,这降低了系统被攻击的可能性。
你可以配置工作进程运行在预定义的本地系统、本地服务或网络服务账户下,也可以配置为使用某个自定义的用户账户。建议使用默认的网络服务账户;不过如果为了更高的安全性,可以配置使用自定义的用户账户,不过建议你只是将此自定义用户加入到IIS_WPG用户组中,因此IIS_WPG用户组包含了可以启动和运行工作进程的最小权限。

创建应用程序池
要新建应用程序池,在IIS管理控制台中右击应用程序池文件夹,指向新建,选择应用程序池;

然后在弹出的添加新应用程序池对话框,在应用程序池ID栏输入应用程序池名,然后选择使用默认设置还是继承现有的应用程序池设置,再点击确定即可;

分配Web站点到应用程序池中
在IIS管理控制台中展开网站文件夹,右击对应的网站,然后选择属性,在弹出的网站属性对话框上,点击主目录标签,然后在应用程序池栏选择不同的应用程序池即可,默认情况下所有网站所使用的应用程序均名为默认应用程序,如果要想此网站使用不同的应用程序名,则在应用程序名栏修改即可,例如在此我就修改为winsvr,这主要是便于查看,然后点击确定即可,

此时,在对应的应用程序池下就显示出了对应网站的应用程序,如下图所示:
本文中所有涉及的IIS均指Windows Server 2003中提供的IIS 6。 - xiaoou2002的日志 - 网易博客 Windows 2003 X64中IIS 6应用程序池内存回收的一个Bug @阿良.NET 配置 windows server 2003-iis 6 WINDOWS 2003 IIS启动失败的原因 在Windows xp PRO中创建新的IIS站点的命令--蝙蝠洞--blog.gzcgc... Windows Home安装IIS碰到的问题 - sekihin - 博客园 ASP.NET中树形图的实现,jsp,asp,sql,php,mysql,server,apache,iis,tomcat,oracle,java,linux,dns 突破WINDOWS XP2 的IIS并发数 .net中iis注册问题 - 咪咪晒太阳的博客天空 - 博客园 windows 2003安装IIS和.net环境的配置方法 IIS WEB服务器架构教程发布 - 迷雾背后之爱的日志 - 网易博客 如何安装IIS-WINDOWS XP下iis的安装,WEB服务器安装教程 Windows Vista 下如何安装IIS 7 - 我的.net成长之路 - 博客园 2003的IIS安装和配置 IIS 6 的 PHP 最佳配置方法 IIS修复工具,怎么完全卸载IIS - 【任兆强 的专栏】 - CSDN博客 在Vista的IIS系统中运行ASP的几个配置问题 Windows 2003中IIS 6.0应用程序池回收和工作进程w3wp.exe内存占用多... 添加删除里没有IIS的解决办法-站长博客 windows菜单下的preferences中没有server这一项 突破WINDOWS XP2 的IIS并发数-Windows频道-中国IT实验室 在Windows XP中制作屏保 - 理睬的日志 - 网易博客 在Windows XP中制作屏保 - GxneT的日志 - 网易博客 在Windows XP中制作屏保 - 理睬的日志 - 网易博客