在本地使用Apache配置WEB服务器 - Apache - 服务器之家

服务器之家

专注于服务器技术!
当前位置:首页 > Web服务器 > Apache

在本地使用Apache配置WEB服务器

发布时间:2014-03-03 来源:服务器之家

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

WEB--Apache服务器的配置 - ah..zhangrui - 瑞的首页

第二步:配置服务端口:
    在 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

WEB--Apache服务器的配置 - ah..zhangrui - 瑞的首页
标明服务端口为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服务器的配置 - ah..zhangrui - 瑞的首页
标明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--Apache服务器的配置 - ah..zhangrui - 瑞的首页

第五步:指定WEB主页文件名
    在 httpd.conf 文件中成对的<IfModule dir_module>标记中,用DirectoryIndex参数指定WEB主页文件名。例如:
<IfModule dir_module>
DirectoryIndex
index.html index.htm index.php default.php
</IfModule>

WEB--Apache服务器的配置 - ah..zhangrui - 瑞的首页
标明对此WEB服务器的一个目录进行访问,如果URL中没有指明要访问的文件名,则就是对此目录下的主页文件的访问。这里指定了4个作为主页文档的文件,每两个文件名之间用英文空格分隔。排列在左边的优先权最高,排列在右边的优先权最低。例如:按照上述配置,当对此WEB服务器做URL请求为http://192.168.1.101:8080/  时,即请求其WEB根路径,则将在指定的WEB根目录下寻找名为 index.html 的文件作为主页返回给客户端浏览器。如果 index.html 不存在,则寻找 index.htm 文件;否则寻找 index.php 文件;否则寻找 default.php 文件……。如果指定的主页文档都不存在,则对此路径的请求将失败,浏览器返回404错误。

WEB--Apache服务器的配置 - ah..zhangrui - 瑞的首页

第六步:运行服务器
配置完毕之后,可以把Apache服务器安装为系统服务,这将使得Apache服务器伴随操作系统启动而在加载用户桌面之前自动启动。把Apache服务器安装为系统服务的命令如下:在Apache服务器安装目录下执行:
binhttpd.exe

WEB--Apache服务器的配置 - ah..zhangrui - 瑞的首页
此时光标闪动,表示服务器正常运行,否则一闪而过运行失败。

第七步:测试服务器
    把自己已经制作好的网页(或一整个网站目录)复制到 httpd.conf 文件 所指定的WEB根目录中,注意主页文件的文件名必须与 httpd.conf 文件指定的主页文件名相同(注意大小写)。在Apache服务器已经启动,自己要发布的网页也已经复制到指定的WEB根目录中之后,任何可以访问此WEB服务器的IP主机都可以通过浏览器来访问此网站了。

WEB--Apache服务器的配置 - ah..zhangrui - 瑞的首页WEB--Apache服务器的配置 - ah..zhangrui - 瑞的首页WEB--Apache服务器的配置 - ah..zhangrui - 瑞的首页

第八步:优化服务器

1、设置请求等待时间

  在httpd.conf里面设置:

  TimeOut n

其中n为整数,单位是秒。 这里我们设置成:TimeOut 300

WEB--Apache服务器的配置 - ah..zhangrui - 瑞的首页

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

 WEB--Apache服务器的配置 - ah..zhangrui - 瑞的首页

  这样就使得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

WEB--Apache服务器的配置 - ah..zhangrui - 瑞的首页

4、如何在apache中设置每个连接的最大请求数 

  在httpd.conf里面设置:

  MaxKeepAliveRequests 100

WEB--Apache服务器的配置 - ah..zhangrui - 瑞的首页

这样就能保证在一个连接中,如果同时请求数达到100就不再响应这个连接的新请求,保证了系统资 源不会被某个连接大量占用。但是在实际配置中要求尽量把这个数值调高来获得较高的系统性能。 

5、在apache中设置session的持续时间 :

  在apache1.2以上的版本中,可以在httpd.conf里面设置:

  KeepAlive on

  KeepAliveTimeout 15

WEB--Apache服务器的配置 - ah..zhangrui - 瑞的首页

这样就能限制每个session的保持时间是15秒。session的使用可以使得很多请求都可以通过同一个 tcp连接来发送,节约了网络资源和系统资源。

6、使得apache对客户端进行域名验证 

  可以在httpd.conf里面设置:

  HostnameLookups on/off/double

  如果是使用on,那么只有进行一次反查,如果用double,那么进行反查之后还要进行一次正向解析,只有两次的结果互相符合才行,而off就是不进行域名验证。

如果为了安全,建议使用double;为了加快访问速度,建议使用off。 

这里我们设置成:HostnameLookups Off

  WEB--Apache服务器的配置 - ah..zhangrui - 瑞的首页

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

WEB--Apache服务器的配置 - ah..zhangrui - 瑞的首页

(2)、在Apache服务器中设置公网访问地址及监听端口

把从路由器中获得的公网ip装载在配置文件中,当然若是有固定的ip的话直接装载进去即可(第1、3步同时可以省略)。

WEB--Apache服务器的配置 - ah..zhangrui - 瑞的首页

(3)、设置完公网IP后,还是不能在公网上访问的、因为在一个局域网内,几台甚至几十台主机是共享一个IP出口的,这个IP出口在路由器的WAN端口上,那要怎么解决呢?其实也是很简单的,我们只要在路由器上设置一下,让路由器监听8080端口,然后再重定位给通过IP地址(192.168.1.101)指定的局域网网络服务器。问题不就解决了吗。

这里我们设置的监听端口是8080,指定的主机是:192.168.1.101

WEB--Apache服务器的配置 - ah..zhangrui - 瑞的首页
这样设置以后外网就可以访问我们自己的web服务器了