北京 上海 广州 深圳 >>
网站建设
我们的优势
我们的报价
联系我们
首 页 关于我们 建站套餐 网站优化 网站推广 解决方案 成功案例 客服中心 建站问题 推广知识 建站知识  
网站建设
  网站建设套餐
  网站建设流程
  功能模块介绍
  网页设计报价
  网站改版设计
  网站售后服务
 
最新客户
   
网站推广
推广知识
 
· 浅谈造成网站关键字排名
· 浅谈最近百度调整对网站
· 分析:站内锚文本链接使
· 细节成就权重 权重决定
· 根据百度有效反链数据
· 详解SEO策略制定中的
· 关键词排名优化之挖掘长
 
建站技术知识
 
 
Apache的安装与配置:与PHP Resin mod_gzip mod_expire等模块的配合
Apache是一个历史悠久并且功能十分强大的WEB服务器,但其丰富的功能对于一个新手来说往往不知道从何下手。我个人感觉Apache的设计充分体现了模块化设计的优势,通过在动态模块加载(DSO)模式下的安装,任何子应用模块都可以通过配置文件的简单修改进行积木式的灵活配置。安装的过程可以从简单的静态html服务开始,一个模块一个模块的学习使用。从单纯的HTML静态服务(core),到复杂的动态页面服务(core + php, core + resin, core + php + mod_gzip, core + resin + mod_expire)。本文主要从简化安装==>性能调优==>维护方便的角度,介绍了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编译:./configure --prefix=/home/apache --enable-shared=max --enable-module=most 可选应用模块/工具的安装:php resin mod_gzip mod_expire及各个模块之间的配合;mod_php安装:./configure --with-apxs=/home/apache/bin/apxs --enable-track-vars --with-mysqlmod_resin安装:./configure --with-apxs=/home/apache/bin/apxs mod_gzip安装:修改Makefile中的 apxs路径:然后make make install工具:日志轮循工具cronolog安装:http://www.cronolog.org 升级/维护:看看通用和模块化的安装过程如何简化了日常的升级/维护工作;按照以上的方法:系统管理员和应用管理员的职责可以清楚的分开,互相独立。系统安装:系统管理员的职责就是安装好一台DSO模式的Apache,然后COLON即可,应用安装:由应用管理员负责具体应用所需要的模块,比如PHP Resin等,并设置httpd.conf中相关的配置。系统升级:系统管理员:升级操作系统/升级Apache应用升级:应用管理员:升级应用模块,PHP Resin等。 WEB应用的容量规划Apache主要是一个内存消耗型的服务应用,我个人总结的经验公式:apache_max_process_with_good_perfermance < (total_hardware_memory / apache_memory_per_process ) * 2apache_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 = 500apache_max_process = 500 * 1.5 = 750所以规划你的应用让服务尽量跑在500个进程以下以保持比较高的效率,并设置Apache的软上限在800个。例子2:一个apache + mod_resin的服务器: 一个apache进程一般需要2M内存在一个2G内存的机器上: apache_max_process_with_good_perfermance < (2g / 2m ) * 2 = 2000apache_max_process = 2000 * 1.5 = 3000以上估算都是按小文件服务估算的(一个请求一般大小在20k以下)。对于文件下载类型站点,可能还会受其他因素:比如带宽等的影响。Apache安装过程服务器个数的硬上限HARD_SERVER_LIMIT的修改:在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比如:./configure --prefix=/home/apache/ --enable-shared=max --enable-module=most解释:--prefix=/another_driver/apache/:建议将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 --disable-module=status --disable-module=userdir --disable-module=cgi --disable-module=include --disable-module=auth --disable-module=asis但结果会发现,这样编译对服务性能只能有微小的提高(5%左右),但却失去了以后系统升级和模块升级的灵活性,无论是模块还是Apache本身升级都必须把Apache和PHP的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 => 100MaxSpareServers 10 => 200但从我的经验看来:缺省值已经是非常优化的了,而且让Apache自己调整子共享进程个数还是比较好的。特别修改:在solaris或一些比较容易出现内存泄露的应用上:MaxRequestsPerChild 0 =>3000应用模块和工具的安装配置:由于使用模块动态加载的模式,所以可以方便的通过简单的配置调整来把Apache定制成你需要的:最好把不常用模块全部清除(无论处于安全还是效率)。比如:对于静态页面服务器:就什么其他子模块都不加载,对于PHP应用就加上PHP模块,对于JAVA应用就把Resin模块加载上。而且各种模块的插拔非常简单,这样调试过程中就可以简单的通过注释掉不需要的模块,而不用重新编译。一般说来,可以不需要的模块包括:#LoadModule env_module libexec/mod_env.so#LoadModule negotiation_module libexec/mod_negotiation.so#LoadModule status_module libexec/mod_status.so#server side include已经过时了#LoadModule includes_module libexec/mod_include.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 setenvif_module libexec/mod_setenvif.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-aliasLoadModule alias_module libexec/mod_alias.so常用的模块:最常用的可能就是php和JAVA应用服务器的前端,此外,从性能上讲利用mod_gzip可以减少40%左右的流量,减少机器用于传输的负载,而 mod_expires可以减少10%左右的重复请求,让重复的用户对指定的页面请求结果都CACHE在本地,根本不向服务器发出请求。建议将所有MODULE的配置都放到相应模块的配置内部:<IfModule some_module.c>some_module config </IfModule>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_phpresin的安装设置:/path/to/resin/src/configure --with-apxs=/path/to/apache/bin/apxs 具体的resin设置放在另外一个文件中:比如/home/resin/conf/resin.conf<IfModule mod_caucho.c>CauchoConfigFile /path/to/apache/conf/resin.conf</IfModule>mod_expires的安装配置:<IfModule mod_expires.c>     ExpiresActive on    ExpiresByType image/gif access plus 1 month    ExpiresByType text/css now plus 1 month    ExpiresDefault now plus 1 day</IfModule>注释:所有的.gif文件1个月以后过期所有的文件缺省1天以后过期mod_gzip的安装http://www.chedong.com/tech/compress.html日志的轮循:cronolog的安装和设置cronolog可以非常整齐的将日志按天轮循存储缺省编译安装到/usr/local/bin/下,只需要将配置改成:CustomLog |/usr/local/sbin/cronolog /home/apache/logs/%w/access_log combined日志将按天截断并存放在以星期为目录名的目录下:比如:log/1是周一,log/5是周五, log/0是周日用gzip压缩每天的日志:30 4 * * * /usr/bin/gzip -f /home/apache/logs/`date -d yesterday +%w`/access_log日志的定期删除:30 5 * * */usr/bin/find /home/apache/logs/ -name access_log.gz -mtime +3 |xargs -r /bin/rm -f升级维护:由于使用动态模块加载方式(DSO模式)安装Apache,Apache的HTTPD核心服务和应用模块以及应用模块之间都变的非常灵活,建议将所有独立模块的配置都放在<IfModule mod_name>CONFIGURATIONS..</IfModule>里,这样配置非常容易通过屏蔽某个模块来进行功能调整:比如:#AddModule mod_gzip.c就屏蔽了mod_gzip,而其他模块不首任何影响。安装和维护过程:系统安装:系统管理员的职责就是安装系统和一个按照DSO模式安装的Apache,然后COLON。 应用安装:由应用管理员负责具体应用所需要的模块并设置HTTPD。 系统升级:系统管理员:升级系统/升级Apache 应用升级:应用管理员:升级应用模块:PHP CAUCHO等 系统备份/恢复:如果Apache不在缺省的系统盘上,只需要将Apache目录备份就可以了,遇到系统分区的硬件问题直接使用预先准备好的系统COLON,再直接将Apache所在物理盘恢复就行了。 系统管理员:Apache的最简化安装 OS + Apache (httpd core only) 应用管理员:应用模块定制 纯静态页面服务core PHP动态页面core+so+php JAVA应用core+so+caucho+ssl 应用例子: www.example.comimage.example.com bbs.example.com mall.example.com  例子:Apache和PHP模块的独立升级。如果Apache是按照以下方式安装:./configure --prefix=/home/apache --enable-shared=max --enable-module=most PHP是按照以下方式安装:./configure --with-apxs=/home/apache/bin/apxs --enable-track-vars --with-mysql以后单独升级Apache的时候,仍然是:./configure --prefix=/home/apache --enable-shared=max --enable-module=most makesu#/home/apache/bin/apachectl stop#make install单独升级php时,仍然是:./configure --with-apxs=/home/apache/bin/apxs --enable-track-vars --with-mysqlmakesu#/home/apache/bin/apachectl stop#make install#/home/apache/bin/apachectl start基于反相代理的WEB加速:squid和mod_proxy都可以实现反相代理加速。而基于缓存的代理加速比起原有WEB服务,速度会有数量级的提升。 小提示:Apache安装后,缺省根目录下没有但很有用的2个文件:favicon.ico: favicon.ico是一个16x16的站点图标文件,如果浏览器发现有这个文件,在地址栏中会用这个图标替换调浏览器的网页图标。IE6和 MOZILLA等主流浏览器都支持这个功能。例如: http://www.chedong.com/favicon.icorobots.txt: 用于告诉搜索引擎的爬虫程序(spider)网站那些页面可以被索引,那些不可以。具体说明请参考:http://www.robotstxt.org/wc/robots.html 参考文档:Apache项目http://httpd.apache.orgPHPhttp://www.php.netResinhttp://www.caucho.commod_gziphttp://sourceforge.net/projects/mod-gzip/Cronologhttp://www.cronolog.orgmod_expireshttp://httpd.apache.org/docs/mod/mod_expires.html面向搜索引擎的CMS设计:http://www.chedong.com/tech/cms.html 来源:
 
在线咨询
     
 
QQ咨询
旺旺咨询
 
MSN咨询
  点击开始咨询 点击开始咨询
  点击开始咨询 点击开始咨询
建站服务
       经济型网站设计套餐 ¥2580
       企业型网站设计套餐 ¥3980
       豪华型网站设计套餐 ¥6580
       商城型网站设计套餐 ¥7580
       定制型网站设计套餐 ¥面 谈
       智赢型ABC ¥1580/1980
虚拟主机
       普及型(电信)350元/年
       经济型(电信)650元/年
       普及A型(双线)500元/年
       普及B型(双线)900元/年
       外贸型(国外) 550元/年
       企业型(国外) 1050元/年
我要订购主机>>       
域名注册
     国际顶级域名.com 100元/年
     国际顶级域名.net 100元/年
     国际顶级域名.cc 380元/年
     国际顶级域名.org 180元/年
     中国顶级域名.cn 100元/年
     中国顶级域名.com.cn 100元/年
     中文域名.中国.公司 280元/年
我要注册域>>       
 友情链接:湖南网站建设 广州网站建设 上海网站建设 广州网站建设公司 中山网站制作 网页设计网 网页设计公司 网站制作 网站建设 建网站公司 珠海网站建设 赢在网络
 业务范围: 广州虚拟主机 广州网站设计 广州网页制作 广州网页设计 深圳网站建设 珠海网页设计 中山网页制作 汕头网站设计 番禺网页制作 南海网站建设 肇庆网页制作

联系我们 | 建站套餐 | 网站建设 | 建设知识 | 服务报价 | 解决方案 | 成功案例 点击开始咨询 点击开始咨询
Copyright 2005-2020 win580.com rights reserved 电话:020-87518743 87518740  传真:020-87518740
地址:广州市天河区中山大道西8号(天河商贸大厦)1304室  邮编:510620
E-mail:Win580@126.com