Apache仍然是世界上用的最多的Web服务器,市场占有率达60%左右。它源于NCSAhttpd服务器,当NCSA WWW服务器项目停止后,那些使用NCSA WWW服务器的人们开始交换用于此服务器的补丁,这也是apache名称的由来(pache 补丁)。世界上很多著名的网站都是Apache的产物,它的成功之处主要在于它的源代码开放、有一支开放的开发队伍、支持跨平台的应用(可以运行在几乎所有的Unix、Windows、Linux系统平台上)以及它的可移植性等方面。
同时Apache服务器也是一个免费的WEB服务器,可以通过对其安装目录下的 conf/httpd.conf 配置文件来完成对Apache的配置。
配置步骤如下:
第一步:配置Server Root
由于实验室的主机对C盘加了写保护,Apache无法安装在C盘下,因此应对Apache的Server Root 进行设置:假设我们把Apache放在D:zhrApache
第二步:配置服务端口:
在 httpd.conf 文件中默认指定了用 8080 端口作为WEB服务端口。这是由 httpd.conf 文件中的Listen 参数指定的。例如:
#Listen 192.168.1.101:8080
#Listen 192.168.1.101:80
#Listen 127.0.0.1:8080
#Listen 116.52.34.156:8080
Listen 8080
Listen 80
标明服务端口为8080 ,访问此WEB服务器时URL中要带上8080端口号,例如 http://192.168.1.101:8080/
如果把此行改为 Listen 80 则默认服务端口为 80 访问此WEB服务器时URL中可以带上80端口号,也可以不带。例如 http:// 192.168.1.101/
第三步:配置WEB根目录
在 httpd.conf 文件中指定了用DocumentRoot 参数指定了WEB根目录,对此WEB服务器访问的请求都被定向为对 DocumentRoot 参数指定的目录的访问。例如:
DocumentRoot "D:/zhr/Apache/WebSite/"
标明WEB根目录在Apache安装目录下的 WebSite 目录下(注意:UNIX和LINUX等系统中文件名和目录名大小写是严格区分的)。因此,此配置指明了要通过WEB发布出去的网页就必须放在 Apache 安装目录下的 WebSite 目录下。
第四步:给予WEB目录允许访问的权限
在 httpd.conf 文件中指定了用成对的<Directory >标记对指定目录做出访问权限控制。例如在上一步中,设定了WEB根目录为"D:/zhr/Apache /WebSite/" ,则对其指定允许任何人匿名访问的配置如下:
<Directory "D:/zhr/Apache/WebSite/">
Options FollowSymLinks
AllowOverride None
Order deny,allow
Allow from all
Satisfy all
</Directory>
第五步:指定WEB主页文件名
在 httpd.conf 文件中成对的<IfModule dir_module>标记中,用DirectoryIndex参数指定WEB主页文件名。例如:
<IfModule dir_module>
DirectoryIndex index.html index.htm index.php default.php
</IfModule>
标明对此WEB服务器的一个目录进行访问,如果URL中没有指明要访问的文件名,则就是对此目录下的主页文件的访问。这里指定了4个作为主页文档的文件,每两个文件名之间用英文空格分隔。排列在左边的优先权最高,排列在右边的优先权最低。例如:按照上述配置,当对此WEB服务器做URL请求为http://192.168.1.101:8080/ 时,即请求其WEB根路径,则将在指定的WEB根目录下寻找名为 index.html 的文件作为主页返回给客户端浏览器。如果 index.html 不存在,则寻找 index.htm 文件;否则寻找 index.php 文件;否则寻找 default.php 文件……。如果指定的主页文档都不存在,则对此路径的请求将失败,浏览器返回404错误。
第六步:运行服务器
配置完毕之后,可以把Apache服务器安装为系统服务,这将使得Apache服务器伴随操作系统启动而在加载用户桌面之前自动启动。把Apache服务器安装为系统服务的命令如下:在Apache服务器安装目录下执行:
binhttpd.exe
此时光标闪动,表示服务器正常运行,否则一闪而过运行失败。
第七步:测试服务器
把自己已经制作好的网页(或一整个网站目录)复制到 httpd.conf 文件 所指定的WEB根目录中,注意主页文件的文件名必须与 httpd.conf 文件指定的主页文件名相同(注意大小写)。在Apache服务器已经启动,自己要发布的网页也已经复制到指定的WEB根目录中之后,任何可以访问此WEB服务器的IP主机都可以通过浏览器来访问此网站了。
第八步:优化服务器
1、设置请求等待时间
在httpd.conf里面设置:
TimeOut n
其中n为整数,单位是秒。 这里我们设置成:TimeOut 300
2、如何使得apache监听在特定的端口
修改httpd.conf里面关于Listen的选项,例如:
Listen 8080
是使apache监听在8000端口
而如果要同时指定监听端口和监听地址,可以使用:
#Listen 192.168.1.101:8080
#Listen 192.168.1.101:80
#Listen 127.0.0.1:8080
#Listen 116.52.34.156:8080
Listen 8080
Listen 80
这样就使得apache同时监听在192.168.1.101的80端口和192.168.1.101的8080端口。
当然也可以在httpd.conf里面设置:
Port 80
这样来实现类似的效果。
3、如何设置apache的最大空闲进程数
修改httpd.conf,在里面设置:
MaxSpareServers n
其中n是一个整数。这样当空闲进程超过n的时候,apache主进程会杀掉多余的空闲进程而保持空闲进 程在n,节省了系统资源。如果在一个apache非常繁忙的站点调节这个参数才是必要的,但是在任何时候把这个参数调到很大都不是一个好主意。
这里我们设置成:MaxSpareServers 15
同时也可以设置:
MinSpareServers n
来限制最少空闲进程数目来加快反应速度。这里我们设置成:MinSpareServers 10
同时也可以设置启动时的子服务进程个数:
StartServers 20
这样启动apache后就有20个空闲子进程等待接受请求。
同时也可以设置apache的最大连接数:
MaxClients n
n是整数,表示最大连接数,取值范围在1和256之间,如果要让apache支持更多的连接数,那么需要 修改源码中的httpd.h文件,把定义的HARD_SERVER_LIMIT值改大然后再编译。
这里我们设置成:MaxClients 100
4、如何在apache中设置每个连接的最大请求数
在httpd.conf里面设置:
MaxKeepAliveRequests 100
这样就能保证在一个连接中,如果同时请求数达到100就不再响应这个连接的新请求,保证了系统资 源不会被某个连接大量占用。但是在实际配置中要求尽量把这个数值调高来获得较高的系统性能。
5、在apache中设置session的持续时间 :
在apache1.2以上的版本中,可以在httpd.conf里面设置:
KeepAlive on
KeepAliveTimeout 15
这样就能限制每个session的保持时间是15秒。session的使用可以使得很多请求都可以通过同一个 tcp连接来发送,节约了网络资源和系统资源。
6、使得apache对客户端进行域名验证
可以在httpd.conf里面设置:
HostnameLookups on/off/double
如果是使用on,那么只有进行一次反查,如果用double,那么进行反查之后还要进行一次正向解析,只有两次的结果互相符合才行,而off就是不进行域名验证。
如果为了安全,建议使用double;为了加快访问速度,建议使用off。
这里我们设置成:HostnameLookups Off
7、如何使每个用户有独立的cgi-bin目录
有两种可选择的方法:
(1)在Apache配置文件里面关于public_html的设置后面加入下面的属性:
ScriptAliasMatch ^/~([^/]*)/cgi-bin/(.*) /home/$1/cgi-bin/$2
(2)在Apache配置文件里面关于public_html的设置里面加入下面的属性:
<Directory /home/*/public_html/cgi-bin>
Options ExecCGI
SetHandler cgi-script
</Directory>
8、如何屏蔽来自某个Internet地址的用户访问Apache服务器
可以使用deny和allow来限制访问,比如要禁止202.202.202.xx网络的用户访问:
<Directory D:/zhr/Apache/>
order deny,allow
deny from 202.202.202.0/24
</Directory>
第九步:发布服务器
由于中国的网络现状不可能为每个人分配一个公网IP,那怎么让公网访问我们自己建立的Web服务器呢?
例如我们寝室用的是ADSL拨号上网,可以做如下设置:
(1)、输入http://192.168.1.30/进入路由网页设置界面查看公网IP地址
经查看本机的公网ip是 116.52.34.156
(2)、在Apache服务器中设置公网访问地址及监听端口
把从路由器中获得的公网ip装载在配置文件中,当然若是有固定的ip的话直接装载进去即可(第1、3步同时可以省略)。
(3)、设置完公网IP后,还是不能在公网上访问的、因为在一个局域网内,几台甚至几十台主机是共享一个IP出口的,这个IP出口在路由器的WAN端口上,那要怎么解决呢?其实也是很简单的,我们只要在路由器上设置一下,让路由器监听8080端口,然后再重定位给通过IP地址(192.168.1.101)指定的局域网网络服务器。问题不就解决了吗。
这里我们设置的监听端口是8080,指定的主机是:192.168.1.101
这样设置以后外网就可以访问我们自己的web服务器了