服务器安装1实验指导
Windows 服务器安装实验——IIS 和Apache 的安装与配置一、IIS 服务器的安装在Window2000中,IIS 默认是被安装的。你可以通过 “开始->设置->控制面板->管理工具->I
Windows 服务器安装实验——IIS 和Apache 的安装与配置
一、IIS 服务器的安装
在Window2000中,IIS 默认是被安装的。你可以通过 “开始->设置->控制面板->管理工具->Internet 信息服务”来打开它。如果你没有安装,可以通过Windows 的“添加删除组件”来安装它。
设置:
二、Apache 服务器的安装
1.Apache 服务器的安装教程
为什么选择Apache ?首先,Apache 是免费的,你无需为它交纳任何费用;其次,Apache 是开放源代码的,也许你感觉不到它的好处,但我可以告诉你,一个开放源代码的软件往往能够等到更广泛的支持,可以说,全世界的程序员都在为你服务。而且,它更灵活,使你能够根据自己的需要选用包含特定功能的模块。再给你提供一条消息,现在全世界超过60的HTTP 服务器在使用Apache 。那么你要不要也加入其中呢?
你可以从Apache 的网站http://httpd.apache.org/download.cgi下载Apache 的安装文件,或者在其他镜像网站获得。现在的最新版本是2.0.49。



图一:Apache 的安装界面
Apache 的安装非常简单,选择接受许可协议后进入服务器信息配置界面,如下图。第一栏"Network Domain" 域名信息,在这里填入你的服务器的域名,如果你已经申请到域名的话填入你申请的域名,(注意这里要填的是域名,只是你申请到的完整域名的后半部分,
,不包括"www" 。如果你申请的是二级域名的话,就是第一个"." 之后的部分)如果还没有的话,把本机的IP 填上去就行了。下一行是服务器名,填入完整的域名或IP 地址。再下一栏是管理员Email 地址。这三项在安装是就必须填写,但是在安装完成后你还可以随时进行修改,所以你不必担心填错了会出问题。最后的选项不用改就可以了。

图
二:服务器信息配置界面
点击"Next" 进入下一步。选择"Typical" 典型安装,下一步选择安装目录,默认安装目录是系统盘的Program Files/Apache Group目录。点击"Next" 再单击"Install" 进行安装。



图三:Apache 的安装界面
安装完成后,在开始菜单的Apache HTTP Server 2.0.49菜单中可以看到五个选项,现在点击"Control Apache Server" 目录下的"Start" 启动服务器。可以看到系统状态栏里出现Apache 的羽毛状图标并带有绿色箭头,说明服务器启动成功。

图四:Apache 菜单
现在看看我们的成绩吧。打开浏览器,输入localhost 或者127.0.0.1(这两个都指向本机地址),回车,如果安装正确的话你就能看到Apache 的测试页面了。(如图五)简单吧,从此,你的电脑也是一台HTTP 服务器了!

图五:Apache 的测试页面
也许你会问,这不是我的网站啊,我的网站在哪里呢?别着急,通过下面几步,你就能把你自己精心制作的网站展示给全世界了。
2.配置Apache
首先单击开始菜单中Apache 目录下的"Configure Apache Server"中的"Edit the Apache httpd.conf Configuration File",打开Apache 的配置文件。
首先,我们要让服务器显示我们自己的内容。找到"Section 1: Global
Environment" 的位置,这一部分是Apache 的全局设置。注意到文件的大部分都是以#开头的,程序将略过这些内容,所以没有必要去研究它们。好了,找到从此开始的没有#的第一行,
,"ServerRoot ……", 后面的一部分就是你服务器的根目录了,把它改成你想要的目录就行了,这里建议你使用绝对地址,这样避免一些不必要的问题。需要说明的一点是这里的地址要用斜杠'/'而不是Windows 文件系统习惯的反斜杠'',在地址的最后不要加斜杠。
OK ,这一部分就这样了,其余的都不用修改。向下继续找到"Section 2: 'Main' server configuration", 如果你觉得这样找起来太麻烦的话,记事本中的查找功能也许能帮你一些忙。(在记事本窗口,按Ctrl +F ,会弹出查找对话框,将上面的内容复制进去,单击" 查找下一个" ,记事本将为你找到它所在的那一行)还是只看没有#的行,下面的
"ServerAdmin","ServerName" 是有关服务器的一些信息,可以暂时不理会。继续向下,找到"DocumentRoot" 一行,这后面的地址就是你服务器的文档的地址了,所有对你服务器的访问都将从此地址开始,将这个地址替换成你的网站的文件夹地址,同样注意要用斜杠'/'。
下面是

图六:改变设置后服务器的内容
到此为止, HTTP服务器就可以算是建立起来了。
不过,如果还没有你想要的网页显示出来,再回到刚才编辑的文件,找到刚才最后改动的位置,就是
"Options -Indexes FollowSymLinks"。再下面几行,有一个DirectoryIndex ,后面是服务器默认的主页名称,服务器将按顺序依次在目录中查找这些文件,并将最先找到的显示出来。你可以把你的网站的默认页面的名字写在这后面。(一般要加一个index.htm )存盘,Restart 。
,等等,有点不对劲,怎么中文是乱码?这是Apache 将默认语言设成了西欧语言的原因,还是打开刚才编辑过的文件,找到"AddDefaultCharset" 一行,(强烈建议使用记事本的查找工具)将它后面的内容改为GB2312。存盘,重启服务器。也许你的浏览器这时候看到的还是乱码,那是因为浏览器记住了这个页面的设置,清空浏览器的历史记录和缓存,一切搞定!

图
七:完成设置后显示主页
好了,你现在的任务就是申请一个域名,将它指向你主机的IP ,记得上面提到过的"ServerName" 吗, 改成你申请的域名就可以了。
选做: Linux 下Apache 服务器的安装与配置
Linux Apache服务器系统的设置与优化
Apache 服务器的设置文件位于/usr/local/apache/conf/目录下,传统上使用三个配置文件httpd.conf, access.conf和srm.conf ,来配置Apache 服务器的行为。 httpd.conf提供了最基本的服务器配置,是对守护程序 httpd如何运行的技术描述;srm.conf 是服务器的资源映射文件,告诉服务器各种文件的MIME 类型,以及如何支持这些文件;
access.conf 用于配置服务器的访问权限,控制不同用户和计算机的访问限制;这三个配置文件控制着服务器的各个方面的特性,因此为了正常运行服务器便需要设置好这三个文件。
除了这三个设置文件之外,Apache 还使用mime.types 文件用于标识不同文件对应的MIME 类型, magic文件设置不同MIME 类型文件的一些特殊标识,使得Apache 服务器从文档后缀不能判断出文件的MIME 类型时,能通过文件内容中的这些特殊标记来判断文档的MIME 类型。
[iaspec@www conf]$ pwd
/usr/local/apache/conf
[iaspec@www conf]$ ls
access.conf httpd.conf.OLD magic.default srm.conf
access.conf.default httpd.conf.SAVE mime.types srm.conf.default
,新版本的Apache 将原来httpd.conf 、srm.conf 与access.conf 中的所有配置参数均放在了一个配置文件 httpd.conf中,只是为了与以前的版本兼容的原因(使用这三个设置文件的方式来源于NCSA-httpd ),才使用三个配置文件。而提供的 access.conf和srm.conf 文件中没有具体的设置。
由于在新版本的Apache 中,所有的设置都被放在了httpd.conf 中,因此只需要调整这个文件中的设置。本文基于redhat 7.2 下的httpd.conf 为例,解释Apache 服务器的各个设置选项,当然,其配置方法可扩展到几乎所有unix 系统。
虽然Apache 提供设置的参数很多,基本上这些 参数都很明确,也可以不加改动运行Apache 服务器。但如果需要调整Apache 服务器的性能,以及增加对某种特性的支持,就需要了解这些设置参数的含义。
需要指出的是,除了操作系统的性能调整之外,Apache 服务器本身的缺省配置绝不是最优化和最高效的,而是要适应几乎所有种类操作系统、所有种类硬件下的设置,多平台的软件不可能为特定平台和特定硬件提供最优化的缺省配置。因此要使用Apache 的时候,性能调整是必不可少的。
本文目录快速访问:
另外一些加速方法
附录一、采用 mod_gzip 加速Apache
(优化没有捷径,必须首先清楚各配置的含义)
ServerType standalone
ServerType 定义服务器的启动方式,缺省值为独立方式standalone ,httpd 服务器将由其本身启动,并驻留在主机中监视连接请求。在Linux 下将在启动文件
/etc/rc.d/rc.local/init.d/apache中自动启动Web 服务器,这种方式是推荐设置。
启动Apache 服务器的另一种方式是inet 方式,使用超级服务器inetd 监视连接请求并启动服务器。当需要使用inetd 启动方式时,便需要更改为这个设置,并屏蔽
/etc/rc.d/rc.local/init.d/apache文件,以及更改/etc/inetd.conf并重起 inetd,那么Apache 就能从inetd 中启动了。
两种方式的区别是独立方式是由服务器自身管理自己的启动进程,这样在启动时能立即启动服务器的多个副本,每个副本都驻留在内存中,一有连接请求不需要生成子进程就可以立即进行处理,对于客户浏览器的请求反应更快,性能较高。而 inetd方式要由inetd 发现有连接请求后才去启动http 服务器,由于inetd 要监听太多的端口,因此反应较慢、效率较低,但节约了没有连接请求时Web 服务器占用的资源。因此inetd 方式只用于偶尔被访问并且不要求访问速度的服务器上。事实上inetd 方式不适合http 的突发和多连接的特性,因为一个页面可能包含多个图象,而每个图象都会引起一个连接请求,即使虽然访问人数造成教少,但瞬间的连接请求并不少,这就受到inetd 性能的限制,甚至会影响由inetd 启动的其他服务器程序。
ServerRoot "/usr/local"
,ServerRoot 用于指定守护进程httpd 的运行目录,httpd 在启动之后将自动将进程的当前目录改变为这个目录,因此如果设置文件中指定的文件或目录是相对路径,那么真实路径就位于这个ServerRoot 定义的路径之下。
由于httpd 会经常进行并发的文件操作,就需要使用加锁的方式来保证文件操作不冲突,由于NFS 文件系统在文件加锁方面能力有限,因此这个目录应该是本地磁盘文件系统,而不应该使用NFS 文件系统。
# LockFile /var/lock/httpd.lock
LockFile 参数指定了httpd 守护进程的加锁文件,一般不需要设置这个参数, Apache服务器将自动在ServerRoot 下面的路径中进行操作。但如果ServerRoot 为NFS 文件系统,便需要使用这个参数指定本地文件系统中的路径,以提高读写速度。
PidFile /var/run/httpd.pid
PidFile 指定的文件将记录httpd 守护进程的进程号,由于httpd 能自动复制其自身,因此系统中有多个httpd 进程,但只有一个进程为最初启动的进程,它为其他进程的父进程,对这个进程发送信号将影响所有的httpd 进程。PidFILE 定义的文件中就记录httpd 父进程的进程号。
ScoreBoardFile /var/run/httpd.scoreboard
#ResourceConfig conf/srm.conf
#AccessConfig conf/access.conf
这两个参数ResourceConfig 和AccessConfig ,就用于和使用 srm.conf 和
access.conf 设置文件的老版本Apache 兼容。如果没有兼容的需要,可以将对应的设置文件指定为/dev/null,这将表示不存在其他设置文件,而仅使用 httpd.conf 一个文件来保存所有的设置选项。
Timeout 300
Timeout 定义客户程序和服务器连接的超时间隔,超过这个时间间隔(秒)后服务器将断开与客户机的连接。如果服务器的负载较重,可适当把此数字调小。
KeepAlive On
在HTTP 1.0中,一次连接只能作传输一次HTTP 请求,而KeepAlive 参数用于支持HTTP 的一次连接、多次传输功能,这样就可以在一次连接中传递多个HTTP 请求。
MaxKeepAliveRequests 100
MaxKeepAliveRequests 为一次连接可以进行的HTTP 请求的最大请求次数。将其值设为0将支持在一次连接内进行无限次的传输请求。事实上没有客户程序在一次连接中请求太多的页面,通常达不到这个上限就完成连接了。 可以适当将此数字调小,以获取最大速度。
KeepAliveTimeout 15
KeepAliveTimeout 测试一次连接中的多次请求传输之间的时间,如果服务器已经完成了一次请求,但一直没有接收到客户程序的下一次请求,在间隔超过了这个参数设置的值之后,服务器就断开连接。可以适当调小这个数值,以尽快释放空闲的连接。但也不可太小,不然多数客户都要重新连接,将耗费 CPU时间。
MinSpareServers 5
MaxSpareServers 10
,在使用子进程处理HTTP 请求的Web 服务器上,由于要首先生成子进程才能处理客户的请求,因此反应时间就有一点延迟。但是,Apache 服务器使用了一个特殊技术来摆脱这个问题,这就是预先生成多个空余的子进程驻留在系统中,一旦有请求出现,就立即使用这些空余的子进程进行处理,这样就不存在生成子进程造成的延迟了。在运行中随着客户请求的增多,启动的子进程会随之增多,但这些服务器副本在处理完一次HTTP 请求之后并不立即退出,而是停留在计算机中等待下次请求。但是空余的子进程副本不能光增加不减少,太多的空余子进程没有处理任务,也占用服务器的处理能力,因此也要限制空余副本的数量,使其保持一个合适的数量,使得既能及时回应客户请求,又能减少不必要的进程数量。
因此就可以使用参数MinSpareServers 来设置最少的空余子进程数量, 以及使用参数MaxSpareServers 来限制最多的空闲子进程数量,多余的服务器进程副本就会退出。根据服务器的实际情况来进行设置,如果服务器性能较高,并且也被频繁访问,就应该增大这两个参数的设置。对于高负载的专业网站,这两个值应该大致相同,并且等同于系统支持的最多服务器副本数量,也减少不必要的副本退出。
比如,当系统高负载时,可以这样检测:
[iaspec@www iaspec]$ ps -ef|grep apache|wc
55 .. ..
[iaspec@www iaspec]$
这表明,高负载时有55个运行子进程,如果此服务器为WEB 专用服务器,就应该考虑将这两个数值分别设为50、60,或者40、70,具体以速度测试结果为准。
StartServers 5
StartServers 参数就是用来设置httpd 启动时启动的子进程副本数量,这个参数与上面定义的MinSpareServers 和 MaxSpareServers参数相关,都是用于启动空闲子进程以提高服务器的反应速度的。这个参数应该设置为前两个值之间的一个数值,小于
MinSpareServers 和大于MaxSpareServers 都没有意义。
MaxClients 150
在另一方面,服务器的能力毕竟是有限的,不可能同时处理无限多的连接请求,因此参数Maxclients 就用于规定服务器支持的最多并发访问的客户数,如果这个值设置得过大,系统在繁忙时不得不在过多的进程之间进行切换来为太多的客户进行服务,这样对每个客户的反应就会减慢,并降低了整体的效率。如果这个值设置的较小,那么系统繁忙时就会拒绝一些客户的连接请求。当服务器性能较高时,就可以适当增加这个值的设置。对于专业网站,应该使用提高服务器效率的策略,因此这个参数不能超过硬件本身的限制,如果频繁出现拒绝访问现象,就说明需要升级服务器硬件了。当不太在意对客户浏览器的反应速度,或者认为反应速度较慢也比拒绝连接好,就也可以略微超过硬件条件来设置这个参数。
但具体这个数值以多少为宜呢?当对性能要求较高时,可以用下面的方法确定如何配置此参数。
首先,估计你的最大可能并发的连接数,或者在高负载时用ps -ef|grep apache|wc命令测得最大进程数,通常MaxClients 应该是这个数值的两倍左右。如果当前网站在高负载时的访问速度可以接受,但有拒绝服务现象,则应把此参数调大,如果无拒绝服务现象,但访问速度缓慢,则应减低此数值。
这个参数同时限制了MinSpareServers 和MaxSpareServers 的设置,它们不应该大于这个参数的设置。
对于重负载的机器来说,仅仅这么做还是不够的。
Apache 允许为请求开的最大进程数是256,MaxClients 的限制是256. 如果用户多了,用户就只能看到Waiting for reply....然后等到下一个可用进程的出现。这个最大数,是
,Apache 的程序决定的--它的NT 版可以有1024,但Unix 版只有256,你可以在
include/httpd.h中
看到:
#ifndef HARD_SERVER_LIMIT
#ifdef WIN32
#define HARD_SERVER_LIMIT 1024
#else
#define HARD_SERVER_LIMIT 256
#endif
#endif
你可以把它调到1024,然后再编译你的系统。记得在httpd.conf 里也要更改相应配置。 MaxRequestsPerChild 30
使用子进程的方式提供服务的Web 服务,常用的方式是一个子进程为一次连接服务,这样造成的问题就是每次连接都需要生成、退出子进程的系统操作,使得这些额外的处理过程占据了计算机的大量处理能力。因此最好的方式是一个子进程可以为多次连接请求服务,这样就不需要这些生成、退出进程的系统消耗, Apache就采用了这样的方式,一次连接结束后,子进程并不退出,而是停留在系统中等待下一次服务请求,这样就极大的提高了性能。
但由于在处理过程中子进程要不断的申请和释放内存,次数多了就会造成一些内存垃圾,就会影响系统的稳定性,并且影响系统资源的有效利用。因此在一个副本处理过一定次数的请求之后,就可以让这个子进程副本退出,再从原始的 httpd进程中重新复制一个干净的副本,这样就能提高系统的稳定性。这样,每个子进程处理服务请求次数由
MaxRequestPerChild 定义。缺省的设置值为30,这个值对于具备高稳定性特点的Linux 系统来讲是过于保守的设置,可以设置为1000甚至更高,设置为0支持每个副本进行无限次的服务处理。
#Listen 3000
#Listen 12.34.56.78:80
#BindAddress *
Listen 参数可以指定服务器除了监视标准的80端口之外,还监视其他端口的HTTP 请求。由于系统可以同时拥有多个IP 地址,因此也可以指定服务器只听取对某个BindAddress< /B>;的IP 地址的HTTP 请求。如果没有配置这一项,则服务器会回应对所有IP 的请求。
即使使用了BindAddress 参数,使得服务器只回应对一个IP 地址的请求,但是通过使用扩展的Listen 参数,仍然可以让HTTP 守护进程回应对其他IP 地址的请求。此时Listen 参数的用法与上面的第二个例子相同。这种比较复杂的用法主要用于设置虚拟主机。此后可以用 VirtualHost参数定义对不同IP 的虚拟主机,然而这种用法是较早的HTTP 1.0标准中设置虚拟主机的方法,每针对一个虚拟主机就需要一个IP 地址,实际上用处并不大。在HTTP 1.1中,增加了对单IP 地址多域名的虚拟主机的支持,使得虚拟主机的设置具备更大的意义。
模块变量
LoadModule mime_magic_module libexec/apache/mod_mime_magic.so
LoadModule info_module libexec/apache/mod_info.so
LoadModule speling_module libexec/apache/mod_speling.so
LoadModule proxy_module libexec/apache/libproxy.so
LoadModule rewrite_module libexec/apache/mod_rewrite.so
LoadModule anon_auth_module libexec/apache/mod_auth_anon.so
,LoadModule db_auth_module libexec/apache/mod_auth_db.so
LoadModule digest_module libexec/apache/mod_digest.so
LoadModule cern_meta_module libexec/apache/mod_cern_meta.so
LoadModule expires_module libexec/apache/mod_expires.so
LoadModule headers_module libexec/apache/mod_headers.so
LoadModule usertrack_module libexec/apache/mod_usertrack.so
LoadModule unique_id_module libexec/apache/mod_unique_id.so
ClearModuleList
AddModule mod_env.c
AddModule mod_log_config.c
AddModule mod_mime_magic.c
AddModule mod_mime.c
AddModule mod_negotiation.c
AddModule mod_status.c
AddModule mod_info.c
AddModule mod_include.c
AddModule mod_autoindex.c
AddModule mod_dir.c
AddModule mod_cgi.c
AddModule mod_asis.c
AddModule mod_imap.c
AddModule mod_actions.c
AddModule mod_speling.c
AddModule mod_userdir.c
AddModule mod_proxy.c
AddModule mod_alias.c
AddModule mod_rewrite.c
AddModule mod_access.c
AddModule mod_auth.c
AddModule mod_auth_anon.c
AddModule mod_auth_db.c
AddModule mod_digest.c
AddModule mod_cern_meta.c
AddModule mod_expires.c
AddModule mod_headers.c
AddModule mod_usertrack.c
AddModule mod_unique_id.c
AddModule mod_so.c
AddModule mod_setenvif.c
Apache 服务器的一个重要特性就是其模块化的结构,这不但表现为其能在编译时能通过新的模块加入新的功能,还表现为其模块可以动态加载入http 服务程序中,而不必载入不需要的模块。使用Apache 的动态加载模块只需要设置好Load Module和AddModule 参数就可以了,这种特性就是Apache 的 DSO(Dynamic Shared Object )特性,然而要想充分使