apache安装:APACHE安装笔记来源: 发布时间:星期四, 2009年2月12日 浏览:131次 评论:0
摘要:
具体介绍说明: 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呢?原因是在低负载下系统可以使用更多内存用于文件系统缓存Cache从而进步提高单个请求响应速度在高负载下系统单个请求响应速度会慢不少而超过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//httpd.h #ndef HARD_SERVER_LIMIT #def WIN32 # HARD_SERVER_LIMIT 1024 #el d(NETWARE) # HARD_SERVER_LIMIT 2048 # # HARD_SERVER_LIMIT 2560 <=将原来HARD_SERVER_LIMIT 256 后面加个“0” #end #end 解释: APACHE缺省最大用户数是256个:这个配置对于服务器内存还是256M左右时代是个非常好缺省设置但随着内存成本急剧下降现在大型站点服务器内存配置般比当时要高个数量级不止所以256个进程硬限制对于台1G内存机器来说是太浪费了而且APACHE软上限max_client是受限于HARD_SERVER_LIMIT因此如果WEB服务器内存大于256M都应该调高APACHEHARD_SERVER_LIMIT根据个人经验:2560已经可以满足大部分小于2G内存服务器容量规划了(APACHE软上限规划请看后面) APACHE编译:通用编译选项能使安装过程标准化 ./configure --prefix=/another_driver/apache/ --shared-module=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=env\" \"--disable-module=status\" \"--disable-module=userdir\" \"--disable-module=cgi\" \"--disable-module=\" \"--disable-module=auth\" \"--disable-module=asis\" 但结果会发现这样编译对服务性能只能有微小提高(5%左右)但却失去了以后系统升级和模块升级灵活性无论是模块还是APACHE本身升级都必须把所有SOURCE加在起重新编译 apache缺省配置文件般比较大:我们可以使用去掉注释思路方法精简下:然后再进入具体培植过程能让你更快定制出你所需要 grep -v \"#\" httpd.conf.default >httpd.conf 需要修改通用项目有以下几个: #服务端口缺省是8080建议将整个APACHE配置调整好后再将服务端口改到正式服务端口 Port 8080 => 80 #服务器名:缺省没有 ServerName name.example.com #最大服务进程数:根据服务容量预测设置 MaxClients 256 => 800 #缺省启动服务后服务进程数:等服务比较平稳后按平均负载下httpd个数设置就可以 StartServers 5 => 200 不要修改: 以前有建议说修改: MinSpareServers 5 => 100 MaxSpareServers 10 => 200 但从我经验看来:缺省值已经是非常优化了而且让APACHE自己调整进程个数还是比较好 特别修改: 在solaris或些比较容易出现内存泄露应用上: MaxRequestsPerChild 0 =>3000 应用模块和工具安装配置:由于使用动态加载模式所以可以方便通过调整配置来定制APACHE:不常用模块全部清除般说来可以不需要模块包括: #LoadModule env_module libexec/mod_env.so #LoadModule negotiation_module libexec/mod_negotiation.so #LoadModule status_module libexec/mod_status.so #server side 已经过时了 #LoadModule s_module libexec/mod_.so #不需要将没有缺省index文件目录下所有文件列出 #LoadModule autoindex_module libexec/mod_autoindex.so #尽量不使用CGI:直是APACHE安全问题最多地方 #LoadModule cgi_module libexec/mod_cgi.so #LoadModule asis_module libexec/mod_asis.so #LoadModule imap_module libexec/mod_imap.so #LoadModule action_module libexec/mod_actions.so #不使用安全校验可以大大提高访问速度 #LoadModule access_module libexec/mod_access.so #LoadModule auth_module libexec/mod_auth.so #LoadModule env_module libexec/mod_env.so 最好保留有: #用于定制log格式 LoadModule config_log_module libexec/mod_log_config.so #用于增加文件应用关联 LoadModule mime_module libexec/mod_mime.so #用于缺省index文件:index.php等 LoadModule dir_module libexec/mod_dir.so 可用可不用有: #比如:需要在~/username/下调试php可以将 LoadModule userdir_module libexec/mod_userdir.so #比如:需要将以前URL进行转向或者需要使用CGI script-alias LoadModule alias_module libexec/mod_alias.so 常用模块: 最常用可能就是php和JAVA WEB应用wrapper此外从性能上讲:mod_gzip可以减少40%左右流量从而减少机器用于传输负载而mod_expires可以减少10%左右重复请求让重复用户请求CACHE在本地根本不向服务器发出请求 PHP安装: /path/to/php_src/configure --with-apxs=/path/to/apache/bin/apxs --with-other-modules-you-need 需要修改配置: AddType application/x-httpd-php .php .php3 .any_file_in_php resin安装设置: /path/to/resin/src/configure --with-apxs=/path/to/apache/bin/apxs 般将具体resin设置放在另外个文件中: <IfModule mod_caucho.c> CauchoConfigFile /path/to/apache/conf/resin.conf </IfModule> mod_expires安装配置: <IfModule mod_expires.c> ExpiresActive _disibledevent=>ExpiresByType image/g \"access plus 1 month\" #所有文件缺省1天以后过期 ExpiresDefault \"now plus 1 day\" </IfModule> mod_gzip安装: /path/to/apache/bin/apxs -i -a -c mod_gzip.c mod_gzip和PHP在起配置 <IfModule mod_gzip.c> mod_gzip_on Yes mod_gzip_minimum_file_size 1000 mod_gzip_maximum_file_size 300000 mod_gzip_item_ file .htm$ mod_gzip_item_ file .html$ mod_gzip_item_ file .php$ mod_gzip_item_ file .php3$ mod_gzip_item_ mime text/.* mod_gzip_item_ mime httpd/unix-directory #不要让mod_gzip和phpsession使用同个临时目录:php_session需要通过php.ini设置session.save_path = /tmp/php_sess mod_gzip_temp_dir /tmp/mod_gzip mod_gzip_dechunk Yes mod_gzip_keep_workfiles No </IfModule> mod_gzip和mod_php配合:不要让mod_gzip和mod_php使用同个临时目录; mod_gzip和RESIN配合:要让mod_gzip在mod_caucho后LOAD否则mod_gzip不起作用 ...othr modules AddModule mod_so.c AddModule mod_caucho.c #notice: mod_gzip must load after mod_caucho AddModule mod_gzip.c AddModule mod_expires.c ... <IFModule mod_gzip.c> mod_gzip_on Yes mod_gzip_dechunk yes mod_gzip_keep_workfiles No mod_gzip_minimum_file_size 3000 mod_gzip_maximum_file_size 300000 mod_gzip_item_ file .html$ mod_gzip_item_ mime text/.* mod_gzip_item_ mime httpd/unix-directory mod_gzip_item_ handler \'caucho-request\' </IFModule> 日志轮循工具cronolog安装和设置:cronolog可以非常整齐将日志按天轮循存储 缺省编译安装到/usr/local/bin/下只需要将配置改成: CustomLog \"|/usr/local/sbin/cronolog /path/to/apache/logs/%w/access_log\" combined 日志将按天截断并存放在以weekday为目录名目录下:比如:log/1是周log/5是周 5, log/0是周日 升级维护:由于使用标准化DSO模式安装APACHEAPACHEHTTPD核心服务和应用模块以及应用模块的间都变非常灵活建议将所有独立模块配置都放在<IfModule mod_name> CONFIGURATIONS.. </IfModule> 里这样配置非常容易通过屏蔽某个模块来进行功能调整:比如: #AddModule mod_gzip.c 就屏蔽了mod_gzip其他模块不首任何影响 安装和维护过程:
+php +so +caucho +ssl 适用应用: 纯静态页面服务: image.example.com www.example.com bbs.example.com mall.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 0
相关文章读者评论发表评论 |