您好,欢迎来到思海网络,我们将竭诚为您提供优质的服务! 诚征网络推广 | 网站备案 | 帮助中心 | 软件下载 | 购买流程 | 付款方式 | 联系我们 [ 会员登录/注册 ]
促销推广
客服中心
业务咨询
有事点击这里…  531199185
有事点击这里…  61352289
点击这里给我发消息  81721488
有事点击这里…  376585780
有事点击这里…  872642803
有事点击这里…  459248018
有事点击这里…  61352288
有事点击这里…  380791050
技术支持
有事点击这里…  714236853
有事点击这里…  719304487
有事点击这里…  1208894568
有事点击这里…  61352289
在线客服
有事点击这里…  531199185
有事点击这里…  61352288
有事点击这里…  983054746
有事点击这里…  893984210
当前位置:首页 >> 技术文章 >> 文章浏览
技术文章

Apache web服务器架设实战

添加时间:2011-4-6  添加: admin 

 不知你是否感兴趣把你的计算机设置为当今互联网中的一部分,是否愿意加入到不断发展壮大的Web中来?如果是,你也许对架设自己的web服务器感兴趣。在本文中,我将介绍如何建立和配置这样的服务器,同时,将检查一下有关需求,并精确决定究竟要何处配置,以便完成相应的功能。
  本文定位为手册性的指南介绍。如果你对web服务器的性能特别关注,请留意不久后即将发表的另一篇文章,在那篇文章中,将介绍了不同的平台和多种服务器。

  因为免费的Apache web服务器约占了所有的web服务器软件中的半壁江山,同时Sun公司的硬件也占了所有服务器硬件的大多数比例。我将介绍一下这样的配置。事实上,为了方便起见,我所详细介绍的就是一个现实的网站目前所用的服务器。

  该机器的型号为SPARCstation 20,其配置:256 MB内存, 单个SM71 处理器模块。操作系统为Solaris 7, 服务器软件为Apache 1.3。 无论硬件是否不同,以及运行哪一种UNIX平台, Apache的配置方法不变。

  硬件配置

  如前所述,该机器型号为SPARCstation 20。为何要采用Sun公司的机器,而不在Intel架构下运行Linux或者Windows NT?基本上,原因分为下面四点,我将用一个例子分别加以阐述:

  兼容性

  可扩性

  维护和管理

  开销

  兼容性

  如果你已经有了一个网站,为了保持兼容性,将尽可能维持类似的配置,这一点也许是重要的。这也许意味着如果你运行的是Windows NT server,就会坚持采用兼容Windows NT的硬件,或者如果现在运行的是Linux平台,也会保持现状不变。

  前面介绍的服务器是运行Solaris操作系统的Sun机器。尽管是个小容量的小型机器,自从配置安装好之后,作为我们的web服务器,已经成功运行约6个月,自那时起,我们的网站服务器就一直保持为Solaris/Apache平台。

  此时,我们尤为关注停机维护时间和保护最初的投资。通过保持不变的硬件和软件平台,就可以保证代码级的兼容性,和最小的停机维护时间。

  可扩性

  你的新服务器是否提供了可扩空间?过了6个月之后,是否需要升级?显然,如果你打算完全替换硬件,需要的服务器数量将同你的网站内容数量一起水涨船高。根据你的网站需求,你也许需要更高的CPU处理能力,或者更高的磁盘传输率。如果你的机器在哪方面有不足,就需要对那一方面的不足进行改进。有时,这就可能意味着需要采用能够安装两个或者四个处理器的主板,或者意味着需要采用更强大的RAID控制器。

  前面所述的服务器已经充分扩充,没有进一步升级的余地了,我们觉得选择服务器时不仅要看它是否可扩空间,也要看它是否能够在群集环境中工作良好,这一点是重要的。

  我们现在使用的SPARCstation 20最多可扩到四个处理器,带有8条SIMM,四个扩展槽,以及四个磁盘驱动器接口,另外,该机器主板上还具有SCSI和以太网接口。另外一个重要的方面是整个机器只有3英寸高, 16英寸宽,深度16英寸。这就非常适宜安装到机架上。

  维护和管理

  该部分主要涉及到软件,当服务器发生故障时,没人愿意每次重新安装服务器软件。基本的管理功能应该总是能够通过远程进行,而且要能够进行重启动等。能够远程控制也是一个优点。

  Solaris同大多数UNIX系统一样,提供了不少工具,来帮助用户进行远程管理。对于我们的机器,从添加新用户和改变web服务器参数,到重启动和配置新的硬件,都可以远程进行。

  成本

  你可以保护多少初始投资?要求既能满足你的当时需求,也能用满足将来的升级需要,哪一种服务器最经济?

  成本也是重要的因素。尽管我们可以购买得起比现在这台机器更贵的Sun 系统。但是,由于该Sun机器已经内置SCSI和ethernet,就无需购买这两种适配器,软驱和CDROM驱动器也不需要,因为可以通过网络进行软件的安装。视频卡也不需要,因为该机器完全可以通过telnet或者远程X会议系统进行访问。

  你可以看到,在这种场合下,Sun机器远比相应的PC廉价,因为我们仅需要基本的单元(主板和机箱),CPU和内存。而对于一台PC服务器,不仅需要购买一个基本单元,也需要购买视频卡, SCSI卡,网卡,软驱,CDROM驱动器,另外也需要借一台显示器,用于软件安装。

  你将需要多少硬件?

  这完全取决于你要发布的内容,以及要服务的人数。实际上,如果仅用于发布静态的HTML网页,采用90 MHz的Pentium, 适当容量的RAM, 能够适用于1.5Mbps T1连接速度的磁盘,就足够了。基于服务器的动态HTML, ASP, PHP以及其他更复杂的文档类型,在用户发出请求时,将消耗更多的CPU时间。通常,用ASP或者PHP来查询数据库,得到信息后,再传输到web文档中去。在这些场合,在同样的网络连接速度下,你需要有比发布静态网页的机器更强有力的web服务器。

  通常,一次硬件升级可以提升两倍的性能,如果再加上更高级的软件,性能可以最大提升到100倍以上。一个小小的例子可以说明这一点,在我们的网站上,原来采用PERL脚本把数据写入到文件中,在升级到采用数据库实现之后,在我们留言簿上生成索引的时间减少到为原来的50分之一。查询数据库并生成客户端可以看到的HTML文档的实际代码仅为600行,而采用CGI/PERL实现时,则产生超过3000行代码,且功能较少,而且启动的灵活性较低。

编译和安装Apache

  虽然我不打算介绍配置操作系统方面的事宜,你还是需要根据所运行的操作系统,正确配置网络连接。在不同的操作系统中安装Apache时有一些注意点。

  我们服务器上使用的Apache版本为1.3.9,所以我将详细介绍该版本下的安装过程。是否选择自己编译源代码的版本,还是下载一个预编译好的版本,其安装过程略有差异。在此,我将详细介绍编译源代码的步骤,但如果你不打算采用该版本,可以跳过这段。

  做任何其他事情之前,确保你的操作系统系统支持Apache(检查这个网站,而且你的编译器应为最新版)。由于GCC的一些版本的编译器在某些方面仍然处于测试开发阶段,这些版本在某些平台上构建的代码未经优化。如果你正在使用GCC,你需要查看一下,预编译过的版本是否提供了更好的性能。

  从这里下载Apache源代码包。

  解压缩该包文件。

  运行 ./configure

  基于你的需要,可以忽略特定的配置参数。在最低限度下,你需要指定安装路径,使用如下参数标志: --prefix=APACHE_INSTALLATION_PATH 。更为复杂的配置参数如下:

  ./configure --prefix=/usr/local/apache --activate-module=src/modules/php/libphp.a

  运行 make

  运行 make install

  运行 APACHE_INSTALLATION_PATH/bin/apachectl start

  配置Apache

  当然,编译Apache仅仅是实际安装和配置web服务器过程中的一小部分工作。根据需求,设置Apache,这仍是必需的。在Apache安装后的目录中,你会找到conf/ 目录。该目录包含了有关Apache启动和运行的所有的配置文件。这些配置文件包括下列一些:

  httpd.conf, 初始服务器配置文件

  access.conf, 配置web服务器访问设置,以及所服务的目录。

  srm.conf, 服务器名称空间和请求处理的配置

  我将在下面详细介绍Apache启动和运行时的配置。本文虽不是技术大全,但足够让你入门。如果你正在从现有的服务器或者新安装的服务器中,寻求更好的性能配置,我也将尽可能介绍一下有关性能问题。

  httpd.conf

  该文件保存了Apache自身的一些最重要的配置信息。也是在调整性能时的首要去处。我将介绍一下主要的配置选项,

  Servertype

  本选项决定Apache的执行方式。Apache既可以作为独立应用程序运行,也可以在透过适当的端口(通常为80端口)的HTTP请求到来时,被inetd调用。其中当inetd 运行时,将消耗少得多的资源,因为对于每一次请求都需要启动Apache,这将降低web服务器的总体性能。独立工作模式的设置更好些。

  Port

  该参数仅用于在独立模式下工作的服务器。通常为port 80。

  HostnameLookups

  该设置决定web服务器是否为每一个访问的IP地址,解析主机名。如果设置为on,访问日记中将存储主机名,而非IP地址。缺点是影响速度。因为打开该功能,将对每次请求都进行名称查询。如果服务的请求数量多,会严重降低服务器的性能。Apache在缺省情况下,把该参数设置为off,并提供了一个工具(logresolve),以便过后解析主机名。

  User

  服务器进程用户,通常设为“nobody”。

  Group

  运行服务器的组名,通常设为“nobody”。

  ServerAdmin

  服务器管理员的email地址。这会出现在出错页面上。

  ServerRoot

  指定配置文件和服务器日记文件的存储位置。除非你有特别原因,需要改变设置,一般与Apache所在目录相同。

  ErrorLog

  该参数告诉Apache出错日记文件的存储位置。可以设置记录内容, 一般将记录如下重要信息:启动时间,停止时间,用户遇到的任何错误 (例如404错误等等)。

  LogLevel

  决定让你的日记文件填满的时间。选项“Warn”在大多数场合足够了,除非你打算仔细诊断遇到的问题。

  LogFormat

  该功能指定服务器上日记文件的格式。你可以创建包含额外信息(如referrers)的特定格式。下面为一个常见组合格式的日记格式例子。

  LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combined

  CustomLog

  该命令同LogFormat alias 同时使用。

  Timeout

  建立连接所允许的时间,以秒记。

  KeepAlive

  打开该选项,可以进行持久连接。这表示单个的连接可以用于不止一个请求。这当然是好事,因为减少了建立连接所需的总体时间,尤其在一个单个的web文档可能需要5或者6个请求(如图像)。

  MaxKeepAliveRequests

  每个持久连接的最大请求数量。该数字应该设置高些(至少100)。

  KeepAliveTimeout

  该选项用来告诉服务器在下次请求到来时的等待时间。 缺省为15秒,可以根据同客户的连接情况,加长或者缩短该等待时间。同客户连接较慢时,需要更多的等待时间。记住,该数值设置太高,可能会导致服务器进程空等永不会到来的连接。

  MinSpareServers

  等待随时出现的请求的服务器进程数的最小值。改变该参数将可能在加载进程时,提高服务器的性能。缺省值为5。

  MaxSpareServers

  这个数值告诉Apache,多余的进程数达到多少时为过多。通过确保不会产生过多进程,这将帮助保护系统资源。

  StartServers

  初始启动时服务器的进程数。通常与MinSpareServers 的设置值相同。

  MaxClients

  随时可以连接的最大客户数。因为Apache服务器的客户同进程数相关,在极端情况下,可能会出现占用资源非常集中的现象,此时该设置值将保护你的服务器不发生崩溃。但也别把该值设置过低,因为一旦这样做,用户在高峰期可能会连不上去。

  MaxRequestsPerChild

  任何单个进程所能处理的最大请求数。为避免内存溢出,而强迫终止超出该设定值的请求。缺省值为30。

  Listen

  把Apache同指定的的端口或者地址绑定。可指定多个监听选项值,此时单个的服务器可以用作几个不同的网站。

  and

  该选项允许Apache为多个地址服务,例如多个域名。该项同Listen一起使用。同时,任何httpd.conf 选项也可以放到一个VirtualHost命令中。这意味着你可以为每个虚拟服务器指定不同的ServerAdmins, logfiles等等。下面为一个例子:

  ServerAdmin brian@mysite.com

  DocumentRoot /usr/docs/mysite

  ServerName www-mysite-com

  ErrorLog /var/log/web/mysite.log

  TransferLog /var/log/webmysite-access.log

  access.conf

  access.conf包含了Apache中了大部分同安全和用户访问相关的设置。在该文件中,目录索引, SSI include命令等等,可以按照目录逐一配置。下面为重要的配置选项:

  and (Also and )

  这是access.conf文件中主要的选项。当构建access.conf文件时,在启动时,参数应该先设置为限制范围最严格的值,然后对服务器上不同的文档逐渐放宽限制。

  Options

  使用该项参数,可对每个目录控制打开或者关闭某项功能。通常不设定为All,你可以随意指定选项的多少,因为Includes 和 ExecCGI 有时可能带有安全隐患。除了不允许包含执行CGI程序的#include exec 语句之外, IncludesNOEXEC 同Includes 的作用一样(在文档中允许使用<--#include --> 语句)。

  AllowOverride

  该选项定义了使用.htaccess文件可以得到的控制水平。这些文件可以放到内容目录中,以便替换指定目录中的缺省设置(在access.conf文件中)。在一些场合中,这非常方便,因为在重新配置指定目录时,无需访问根目录,但使用这样的文件时,会轻微影响性能,因为web服务器在访问决定该目录功能的选项时,必须读入该文件。access.conf在这些文件中可以控制使用哪一个参数,除此之外,.htaccess 文件同初始的ccess.conf 文件一样用。

  Order

  同Allow From 和Deny From (在下面介绍)一起使用。指定访问验证的次序。例如它可在deny 之前指定allow ,然后除在应被禁止的场合值之外,允许进行访问。如果先指定deny ,缺省情况下,访问该目录将被拒绝。

  Allow From and Deny From

  决定谁应该访问该命令所指定的该目录。None 和 All 的用途相当直截了当,也可以基于用户域名允许或者拒绝访问(简单地指定域名作为参数即可)。

  为了更好阐述这些选项,以及它们是如何在access.conf文件中配合使用的,下面为一个简单的例子:

  Options FollowSymLinks

  AllowOverride None

  Options IncludesNOEXEC FollowSymlinks

  AllowOverride None

  Order allow,deny

  Allow From All

  AllowOverride None

  deny from all

  srm.conf

  srm.conf 文件决定服务器如何处理诸如索引格式,内容类型定义等等更多方面的请求。

  DocumentRoot ""

  存放所有在线内容的根目录。

  UserDir

  用户存放其HTML文档的home目录。如果带有 ~username 参数,服务器将寻找在该用户的home目录中查找该目录。

  DirectoryIndex

  当在URL中没有指定文件时,所请求的特定目录中的缺省文件名。通常为index.html。

  FancyIndexing

  决定目录索引的显示风格 (当DirectoryIndex 不存在)。如果你已经关闭索引,该参数就不起作用。

  HeaderName

  指定目录中包含在index顶部的头文件名称,如果找到的话。

  ReadmeName

  readme文件的名称,如果找到的话,将标记为一个索引。

  AccessFileName

  每个目录中要被查找的访问控制文件名称,缺省名为.htaccess

  Alias ""

  在脚本的URL中使用的特定目录的别名。

  Alias /cgi-bin/ "/usr/local/mysite/s/"

  AddType

  该参数允许你配置web服务器能够识别的某种类型的文件,并带有文件扩展名,例如:

  AddType application/x-httpd-php .php

  AddHandler

  通过文件扩展名,允许把文件同特定的“handlers“,或者server-side 帮助应用程序联系起来。例如,通过使用AddHandler ,可以允许使用CGI脚本和服务器端动态生成的HTML。请看下例:

  AddHandler cgi- .cgi

  AddHandler server-parsed .shtml

  一切完毕

  此时,你应该拥有一个配置适当,运行正常的Apache web服务器了。

    关键字:服务器、Web
 
 

分享到:

顶部 】 【 关闭
版权所有:佛山思海电脑网络有限公司 ©1998-2024 All Rights Reserved.
联系电话:(0757)22630313、22633833
中华人民共和国增值电信业务经营许可证: 粤B1.B2-20030321 备案号:粤B2-20030321-1
网站公安备案编号:44060602000007 交互式栏目专项备案编号:200303DD003  
察察 工商 网安 举报有奖  警警  手机打开网站