APACHE安装笔记的使用过程

来源:爱站网时间:2020-09-08编辑:网友分享
APACHE(Web服务器)是一个广泛运行在每部计算机平台上的服务器端软件之一,那你知道APACHE安装笔记的使用过程吗?接下来跟随爱站技术频道小编一起来看看吧!

  APACHE(Web服务器)是一个广泛运行在每部计算机平台上的服务器端软件之一,那你知道APACHE安装笔记的使用过程吗?接下来跟随爱站技术频道小编一起来看看吧!

  从简化安装==>性能调优==>方便维护的角度,讨论WEB服务的规划==>HTTPD安装/应用模块配置==>升级/维护等过程。

  让APACHE的升级和PHPRESIN等应用模块的升级完全互不影响。

  摘要:

  WEB应用容量规划:根据硬件配置和WEB应用的特点进行WEB服务的规划及一些简单的估算公式;

  APACHE安装过程:apache的通用的简化安装选项,方便以后的应用的模块化配置;

  修改HARD_SERVER_LIMIT:

  vi/path/to/apache_src/src/include/httpd.h

  #defineHARD_SERVER_LIMIT2560

  apache编译:

  /path/to/apache_src/configure--prefix=/another_driver/apache--enable-shared=max--enable-module=most

  可选应用模块/工具的安装:phpresinmod_gzipmod_expire及各个模块之间的配合;

  PHP安装:

  /path/to/php_src/configure--with-apxs=/path/to/apache/bin/apxs--enable-track-vars--with-other-modules-you-need

  mod_resin安装:

  /path/to/resin/src/configure--with-apxs=/path/to/apache/bin/apxs

  Mod_gzip安装:

  /path/to/apache/bin/apxs-i-a-cmod_gzip.c

  工具:cronolog安装:http://www.cronolog.org

  升级/维护:看看通用和模块化的安装过程如何简化了日常的升级/维护工作;

  按照以上的方法:系统管理员和应用管理员的职责可以清楚的分开,互相独立。

  系统安装:系统管理员的职责就是安装系统=>安装好一台可以适应任何情况的APACHE,然后COLON,

  应用安装:由应用管理员负责具体应用所需要的模块并设置HTTPD。

  系统升级:系统管理员:升级系统/升级APACHE

  应用升级:系统管理员:升级应用模块

  具体的说明:

  WEB应用的容量规划

  APACHE主要是一个内存消耗型的服务应用,我个人总结的经验公式:

  apache_max_process_with_good_perfermance

  apache_max_process=apache_max_process_with_good_perfermance*1.5

  为什么会有一个apache_max_process_with_good_perfermance和apache_max_process呢?原因是在低负载下系统可以使用更多的内存用于文件系统的缓存,从而进一步提高单个请求的响应速度。在高负载下,系统的单个请求响应速度会慢不少,而超过apache_max_process,系统会因为开始使用硬盘做虚拟内存交换空间而导致系统崩溃。此外,同样的服务:2G内存的机器的apache_max_process一般只设置到1G内存的1.7倍,因为APACHE本身会因为管理更多的进程而产生性能下降。

  例子1:

  一个apache+mod_php的服务器:一个apache进程一般需要4M内存

  因此在一个1G内存的机器上:apache_max_process_with_good_perfermance

  apache_max_process=500*1.5=750

  所以规划你的应用让服务尽量跑在500个APACHE以下,并设置APACHE的软上限在800个。

  例子2:

  一个apache+mod_resin的服务器:一个apache进程一般需要2M内存

  在一个2G内存的机器上:apache_max_process_with_good_perfermance

  因此:apache_max_process=2000*1.5=3000

  以上估算都是按小文件服务估算的(一个请求一般大小在20k以下)。对于文件下载类型站点,可能还会受其他因素:比如带宽等的影响。

  APACHE安装过程

  服务器个数的硬上限HARD_SERVER_LIMIT的修改:

  在FREEBSD和LINUX等UNIX操作系统下APACHE缺省的最大进程数是256个,需要修改apache_1.3.xx/src/include/httpd.h

  #ifndefHARD_SERVER_LIMIT

  #ifdefWIN32

  #defineHARD_SERVER_LIMIT1024

  #elifdefined(NETWARE)

  #defineHARD_SERVER_LIMIT2048

  #else

  #defineHARD_SERVER_LIMIT2560

  #endif

  #endif

  解释:

  APACHE缺省的最大用户数是256个:这个配置对于服务器内存还是256M左右的时代是一个非常好的缺省设置,但随着内存成本的急剧下降,现在大型站点的服务器内存配置一般比当时要高一个数量级不止。所以256个进程的硬限制对于一台1G内存的机器来说是太浪费了,而且APACHE的软上限max_client是受限于HARD_SERVER_LIMIT的,因此如果WEB服务器内存大于256M,都应该调高APACHE的HARD_SERVER_LIMIT。根据个人的经验:2560已经可以满足大部分小于2G内存的服务器的容量规划了(APACHE的软上限的规划请看后面)。

  APACHE的编译:通用的编译选项能使安装过程标准化

  ./configure--prefix=/another_driver/apache/--enable-shared=max--enable-module=most

  解释:

  --prefix=/another_driver/apache/:一个系统使用寿命最低的一般就是硬盘,因此:将服务数据和系统完全分开,不仅能提高了数据的访问速度,更重要的,大大方便系统升级,备份和恢复。

  --shared-module=max:使用动态加载方式会带来5%的性能下降,但和带来的好处相比更本不算什么:比如模块升级方便,系统升级风险降低,安装过程标准化

  --enable-module=most:用most可以将一些不常用的module编译进来,比如后面讲到的mod_expire是就不在apache的缺省常用模块中

  如果不想buildso,也可以这样:

  ./configure\

  "--with-layout=Apache"\

  "--prefix=/path/to/apache"\

  "--disable-module=access"\

  "--disable-module=actions"\

  "--disable-module=autoindex"\

  "--disable-module=env"\

  "--disable-module=imap"\

  "--disable-module=negotiation"\

  "--disable-module=setenvif"\

  "--disable-module=status"\

  "--disable-module=userdir"\

  "--disable-module=cgi"\

  "--disable-module=include"\

  "--disable-module=auth"\

  "--disable-module=asis"

  但结果会发现,这样编译对服务性能只能有微小的提高(5%左右),但却失去了以后系统升级和模块升级的灵活性,无论是模块还是APACHE本身升级都必须把所有SOURCE加在一起重新编译。

  apache的缺省配置文件一般比较大:我们可以使用去掉注释的方法精简一下:然后再进入具体的培植过程能让你更快的定制出你所需要的。

  grep-v"#"httpd.conf.default>httpd.conf

  需要修改的通用项目有以下几个:

  #服务端口,缺省是8080,建议将整个APACHE配置调整好后再将服务端口改到正式服务的端口

  Port8080=>80

  #服务器名:缺省没有

  ServerNamename.example.com

  #最大服务进程数:根据服务容量预测设置

  MaxClients256=>800

  #缺省启动服务后的服务进程数:等服务比较平稳后,按平均负载下的httpd个数设置就可以

  StartServers5=>200

  不要修改:

  以前有建议说修改:

  MinSpareServers5=>100

  MaxSpareServers10=>200

  但从我的经验看来:缺省值已经是非常优化的了,而且让APACHE自己调整进程个数还是比较好的。

  特别修改:

  在solaris或一些比较容易出现内存泄露的应用上:

  MaxRequestsPerChild0=>3000

  应用模块和工具的安装配置:

  由于使用模块动态加载的模式,所以可以方便的通过简单的配置调整来把APACHE定制成你需要的:最好把不常用模块全部清除(无论处于安全还是效率)。

  比如:对于静态页面服务器:就什么模块都不加载,对于PHP应用就加上PHP模块,对于JAVA应用就把RESIN模块加载上。而且各种模块的插拔非常简单。

  一般说来,可以不需要的模块包括:

  #LoadModuleenv_modulelibexec/mod_env.so

  #LoadModulenegotiation_modulelibexec/mod_negotiation.so

  #LoadModulestatus_modulelibexec/mod_status.so

  #serversideinclude已经过时了

  #LoadModuleincludes_modulelibexec/mod_include.so

  #不需要将没有缺省index文件的目录下所有文件列出

  #LoadModuleautoindex_modulelibexec/mod_autoindex.so

  #尽量不使用CGI:一直是APACHE安全问题最多的地方

  #LoadModulecgi_modulelibexec/mod_cgi.so

  #LoadModuleasis_modulelibexec/mod_asis.so

  #LoadModuleimap_modulelibexec/mod_imap.so

  #LoadModuleaction_modulelibexec/mod_actions.so

  #不使用安全校验可以大大提高访问速度

  #LoadModuleaccess_modulelibexec/mod_access.so

  #LoadModuleauth_modulelibexec/mod_auth.so

  #LoadModulesetenvif_modulelibexec/mod_setenvif.so

  最好保留的有:

  #用于定制log格式

  LoadModuleconfig_log_modulelibexec/mod_log_config.so

  #用于增加文件应用的关联

  LoadModulemime_modulelibexec/mod_mime.so

  #用于缺省index文件:index.php等

  LoadModuledir_modulelibexec/mod_dir.so

  可用可不用的有:

  #比如:需要在~/username/下调试php可以将

  LoadModuleuserdir_modulelibexec/mod_userdir.so

  #比如:需要将以前的URL进行转向或者需要使用CGIscript-alias

  LoadModulealias_modulelibexec/mod_alias.so

  常用的模块:

  最常用的可能就是php和JAVAWEB应用的wrapper,此外,从性能上讲:mod_gzip可以减少40%左右的流量,从而减少机器用于传输的负载,而mod_expires可以减少10%左右的重复请求,让重复的用户请求CACHE在本地,根本不向服务器发出请求。

  建议将所有MODULE的配置都放到

  PHP的安装:

  /path/to/php_src/configure--with-apxs=/path/to/apache/bin/apxs--with-other-modules-you-need

  需要修改的配置:

  AddTypeapplication/x-httpd-php.php.php3.any_file_in_php

  resin的安装设置:

  /path/to/resin/src/configure--with-apxs=/path/to/apache/bin/apxs

  一般将具体的resin设置放在另外一个文件中:

  CauchoConfigFile/path/to/apache/conf/resin.conf

  mod_expires的安装配置:

  ExpiresActiveon

  #所有的.gif文件1个月以后过期

  ExpiresByTypeimage/gif"accessplus1month"

  #所有的文件缺省1天以后过期

  ExpiresDefault"nowplus1day"

  mod_gzip的安装:

  /path/to/apache/bin/apxs-i-a-cmod_gzip.c

  mod_gzip和PHP在一起的配置

  mod_gzip_onYes

  mod_gzip_minimum_file_size1000

  mod_gzip_maximum_file_size300000

  mod_gzip_item_includefile\.htm$

  mod_gzip_item_includefile\.html$

  mod_gzip_item_includefile\.php$

  mod_gzip_item_includefile\.php3$

  mod_gzip_item_includemimetext/.*

  mod_gzip_item_includemimehttpd/unix-directory

  #不要让mod_gzip和php的session使用同一个临时目录:php_session需要通过php.ini设置session.save_path=/tmp/php_sess

  mod_gzip_temp_dir/tmp/mod_gzip

  mod_gzip_dechunkYes

  mod_gzip_keep_workfilesNo

  mod_gzip和mod_php的配合:不要让mod_gzip和mod_php使用同一个临时目录;

  mod_gzip和RESIN配合:要让mod_gzip在mod_caucho后LOAD,否则mod_gzip不起作用

  ...othrmodules

  AddModulemod_so.c

  AddModulemod_caucho.c

  #notice:mod_gzipmustloadaftermod_caucho

  AddModulemod_gzip.c

  AddModulemod_expires.c

  ...

  mod_gzip_onYes

  mod_gzip_dechunkyes

  mod_gzip_keep_workfilesNo

  mod_gzip_minimum_file_size3000

  mod_gzip_maximum_file_size300000

  mod_gzip_item_includefile\.html$

  mod_gzip_item_includemimetext/.*

  mod_gzip_item_includemimehttpd/unix-directory

  mod_gzip_item_includehandler'caucho-request'

  日志轮循工具cronolog的安装和设置:cronolog可以非常整齐的将日志按天轮循存储

  缺省编译安装到/usr/local/bin/下,只需要将配置改成:

  CustomLog"|/usr/local/sbin/cronolog/path/to/apache/logs/%w/access_log"combined

  日志将按天截断并存放在以weekday为目录名的目录下:比如:log/1是周一,log/5是周五,log/0是周日

  升级维护:

  由于使用标准化的DSO模式安装APACHE,APACHE的HTTPD核心服务和应用模块以及应用模块之间都变的非常灵活,建议将所有独立模块的配置都放在

  CONFIGURATIONS..

  里,这样配置非常容易通过屏蔽某个模块来进行功能调整:比如:

  #AddModulemod_gzip.c

  就屏蔽了mod_gzip,其他模块不首任何影响。

  安装和维护过程:

  系统安装:系统管理员的职责就是安装系统和一个可以适应任何情况的APACHE,然后COLON。

  应用安装:由应用管理员负责具体应用所需要的模块并设置HTTPD。

  系统升级:系统管理员:升级系统/升级APACHE

  应用升级:应用管理员:升级应用模块

  系统备份/恢复:如果APACHE不在缺省的系统盘上,只需要将APACHE目录备份就可以了,遇到系统分区的硬件问题直接使用预先准备好的系统COLON,直接将APACHE所在物理盘恢复就行了。

  系统管理员:APACHE的最简化安装OS+APACHE(httpdcoreonly)

  应用管理员:应用模块定制+so

  +php

  +so

  +caucho

  +ssl

  应用:纯静态页面服务:

  image.example.com

  www.example.combbs.example.commall.example.com

  参考文档:

  Apache

  http://httpd.apache.org

  php

  http://www.php.net

  Resin

  http://www.caucho.com

  mod_gzip

  http://www.remotecommunications.com/apache/mod_gzip/

  Cronolog

  http://www.cronolog.org

  mod_expires

  http://httpd.apache.org/docs/mod/mod_expires.html

  以上是小编为大家整理的关于APACHE安装笔记的使用过程内容,喜欢这篇文章的朋友们,记得分享出去哦,同时可以关注我们网站。

上一篇:怎样实现给APACHE开启SSL服务

下一篇:Web服务中出现异常怎么处理

您可能感兴趣的文章

相关阅读

热门软件源码

最新软件源码下载