Linux中国 Linux中国门户站!
设为主页 设为主页
收藏本站 收藏本站
 
当前位置 :首页 ->Linux技术 ->入门与提高 ->正文

APACHE安装笔记

来源:Linuxdby.com 作者:Webmaster 时间:2007-05-05 点击: [收藏] [投稿]

  作者: 车东
  
  关键词: apache install php resin mod_gzip mod_expire webalizer cronolog
  
  内容摘要:
  
  从简化安装==>性能调优==>方便维护的角度,讨论WEB服务的规划==>HTTPD安装/应用模块配置==>升级/维护等过程。
  让APACHE的升级和PHP RESIN等应用模块的升级完全互不影响。
  
  WEB应用容量规划:根据硬件配置和WEB应用的特点进行WEB服务的规划及一些简单的估算公式;
  APACHE安装过程:apache的通用的简化安装选项,方便以后的应用的模块化配置;
  修改 HARD_SERVER_LIMIT:
  vi /path/to/apache_src/src/include/httpd.h
  #define HARD_SERVER_LIMIT 2560 <===将原来的 HARD_SERVER_LIMIT 256 后面加个“0”
  apache编译:
  /path/to/apache_src/configure --prefix=/another_driver/apache --enable-shared=max --enable-module=most
  可选应用模块/工具的安装:php resin mod_gzip mod_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 -c mod_gzip.c
  工具:cronolog安装:http://www.cronolog.org
  升级/维护:看看通用和模块化的安装过程如何简化了日常的升级/维护工作;
  按照以上的方法:系统管理员和应用管理员的职责可以清楚的分开,互相独立。
  系统安装:系统管理员的职责就是安装系统=>安装好一台DSO模式的APACHE,然后COLON,
  应用安装:由应用管理员负责具体应用所需要的模块并设置HTTPD。
  系统升级:系统管理员:升级系统/升级APACHE
  应用升级:系统管理员:升级应用模块
  具体的说明:
  
  WEB应用的容量规划
  
  APACHE主要是一个内存消耗型的服务应用,我个人总结的经验公式:
  apache_max_process_with_good_perfermance < (total_hardware_memory / apache_memory_per_process ) * 2
  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 < (1g / 4m) * 2 = 500
  apache_max_process = 500 * 1.5 = 750
  所以规划你的应用让服务尽量跑在500个APACHE以下,并设置APACHE的软上限在800个。
  
  例子2:
  一个apache + mod_resin的服务器: 一个apache进程一般需要2M内存
  在一个2G内存的机器上: apache_max_process_with_good_perfermance < (2g / 2m ) * 2 = 2000
  因此: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
  #ifndef HARD_SERVER_LIMIT
  #ifdef WIN32
  #define HARD_SERVER_LIMIT 1024
  #elif defined(NETWARE)
  #define HARD_SERVER_LIMIT 2048
  #else
  #define HARD_SERVER_LIMIT 2560 <===将原来的HARD_SERVER_LIMIT 256 后面加个“0”
  #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的缺省常用模块中
  
  如果不想build so, 也可以这样:
  ./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" \

 如果您对本文有任何疑问或者建议,请到讨论区发表您的意见: >> 论坛入口 <<



上一篇: 如何用Linux安装TCP/IP路由器   下一篇: Oracle 8i在GNU/Linux上的安装笔记

文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【我要投稿】 【论坛讨论
更多相关文章
Power by linux-cn.com 粤ICP备05006655号