1201.html

来自「著名的linux英雄站点的文档打包」· HTML 代码 · 共 590 行 · 第 1/3 页

HTML
590
字号
        border=0>
         <TR>
          <TD>
            <TABLE cellSpacing=0 cellPadding=3 width="100%" border=0>
              
              <TR>
                <TD vAlign=top align=middle width="60%">
                  <TABLE cellSpacing=0 cellPadding=0 width="100%" 
                  background="images/back.gif" tppabs="http://www.linuxhero.com/docs/images/back.gif" border=0>
                    <TBODY>
                    <TR>
                        <TD vAlign=top width="80%"> 
                          <DIV align=center>
                        <FORM action="search.html" tppabs="http://www.linuxhero.com/docs/search.html" method=get>
                            </FORM>
                        <TABLE cellSpacing=0 cellPadding=0 width="95%" 
                          border=0><TBODY>
                          <TR>
                            <TD background="images/bgi.gif" tppabs="http://www.linuxhero.com/docs/images/bgi.gif" 
                          height=30></TD></TR></TBODY></TABLE>
                        <TABLE cellSpacing=0 cellPadding=3 width="95%" 
                        align=center border=0>
                          <TBODY>
                          <TR>
                            <TD>
                              <TABLE cellSpacing=0 cellPadding=3 width="100%" 
                              border=0>
                                <TBODY>
                                <TR>
                                      <TD vAlign=top> 
<p><FONT class=normalfont><B><font color=blue>APACHE安装笔记</font></B></FONT><BR><FONT class=smallfont color=#ff9900>2004-04-23 15:18 pm</FONT><BR><FONT class=normalfont>作者:车东 chedong@bigfoot.com<br>来自:Linux知识宝库<br>联系方式:无名<br><br>http://www.chedong.com/tech/apache_install.html<br>
<br>
作者: 车东 chedong@bigfoot.com<br>
<br>
最后更新:2002-12-24 19:34:52<br>
<br>
版权声明:可以任意转载,转载时请务必标明原始出处和作者信息<br>
<br>
关键词: apache install php resin mod_gzip mod_expire webalizer cronolog<br>
<br>
内容摘要:<br>
<br>
从简化安装==&gt;性能调优==&gt;方便维护的角度,讨论WEB服务的规划==&gt;HTTPD安装/应用模块配置==&gt;升级/维护等过程。<br>
让APACHE的升级和PHP RESIN等应用模块的升级完全互不影响。<br>
<br>
   1. WEB应用容量规划:根据硬件配置和WEB应用的特点进行WEB服务的规划及一些简单的估算公式;<br>
   2. APACHE安装过程:apache的通用的简化安装选项,方便以后的应用的模块化配置;<br>
      修改 HARD_SERVER_LIMIT:<br>
      vi /path/to/apache_src/src/include/httpd.h<br>
      #define HARD_SERVER_LIMIT 2560 &lt;===将原来的 HARD_SERVER_LIMIT 256 后面加个“0”<br>
      apache编译:<br>
      /path/to/apache_src/configure --prefix=/another_driver/apache --enable-shared=max --enable-module=most<br>
   3. 可选应用模块/工具的安装:php resin mod_gzip mod_expire及各个模块之间的配合;<br>
      PHP安装:<br>
      /path/to/php_src/configure --with-apxs=/path/to/apache/bin/apxs --enable-track-vars --with-other-modules-you-need<br>
      mod_resin安装:<br>
      /path/to/resin/src/configure --with-apxs=/path/to/apache/bin/apxs <br>
      Mod_gzip安装:<br>
      /path/to/apache/bin/apxs -i -a -c mod_gzip.c<br>
      工具:cronolog安装:http://www.cronolog.org<br>
   4. 升级/维护:看看通用和模块化的安装过程如何简化了日常的升级/维护工作;<br>
      按照以上的方法:系统管理员和应用管理员的职责可以清楚的分开,互相独立。<br>
      系统安装:系统管理员的职责就是安装系统=&gt;安装好一台DSO模式的APACHE,然后COLON,<br>
      应用安装:由应用管理员负责具体应用所需要的模块并设置HTTPD。<br>
      系统升级:系统管理员:升级系统/升级APACHE<br>
      应用升级:系统管理员:升级应用模块<br>
<br>
具体的说明:<br>
<br>
WEB应用的容量规划<br>
<br>
APACHE主要是一个内存消耗型的服务应用,我个人总结的经验公式:<br>
apache_max_process_with_good_perfermance &lt; (total_hardware_memory / apache_memory_per_process ) * 2<br>
apache_max_process = apache_max_process_with_good_perfermance * 1.5<br>
<br>
为什么会有一个apache_max_process_with_good_perfermance和apache_max_process呢?原因是在低负载下系统可以使用更多的内存用于文件系统的缓存,从而进一步提高单个请求的响应速度。在高负载下,系统的单个请求响应速度会慢不少,而超过apache_max_process,系统会因为开始使用硬盘做虚拟内存交换空间而导致系统崩溃。此外,同样的服务:2G内存的机器的apache_max_process一般只设置到1G内存的1.7倍,因为APACHE本身会因为管理更多的进程而产生性能下降。<br>
<br>
例子1:<br>
一个apache + mod_php的服务器:一个apache进程一般需要4M内存<br>
因此在一个1G内存的机器上:apache_max_process_with_good_perfermance &lt; (1g / 4m) * 2 = 500<br>
apache_max_process = 500 * 1.5 = 750<br>
所以规划你的应用让服务尽量跑在500个APACHE以下,并设置APACHE的软上限在800个。<br>
<br>
例子2:<br>
一个apache + mod_resin的服务器: 一个apache进程一般需要2M内存<br>
在一个2G内存的机器上: apache_max_process_with_good_perfermance &lt; (2g / 2m ) * 2 = 2000<br>
因此:apache_max_process = 2000 * 1.5 = 3000<br>
<br>
以上估算都是按小文件服务估算的(一个请求一般大小在20k以下)。对于文件下载类型站点,可能还会受其他因素:比如带宽等的影响。<br>
<br>
APACHE安装过程<br>
<br>
服务器个数的硬上限HARD_SERVER_LIMIT的修改:<br>
在FREEBSD和LINUX等UNIX操作系统下APACHE缺省的最大进程数是256个,需要修改apache_1.3.xx/src/include/httpd.h<br>
#ifndef HARD_SERVER_LIMIT<br>
#ifdef WIN32<br>
#define HARD_SERVER_LIMIT 1024<br>
#elif defined(NETWARE)<br>
#define HARD_SERVER_LIMIT 2048<br>
#else<br>
#define HARD_SERVER_LIMIT 2560  &lt;===将原来的HARD_SERVER_LIMIT 256 后面加个“0”<br>
#endif<br>
#endif<br>
<br>
解释:<br>
APACHE缺省的最大用户数是256个:这个配置对于服务器内存还是256M左右的时代是一个非常好的缺省设置,但随着内存成本的急剧下降,现在大型站点的服务器内存配置一般比当时要高一个数量级不止。所以256个进程的硬限制对于一台1G内存的机器来说是太浪费了,而且APACHE的软上限max_client是受限于HARD_SERVER_LIMIT的,因此如果WEB服务器内存大于256M,都应该调高APACHE的HARD_SERVER_LIMIT。根据个人的经验:2560已经可以满足大部分小于2G内存的服务器的容量规划了(APACHE的软上限的规划请看后面)。<br>
<br>
APACHE的编译:通用的编译选项能使安装过程标准化<br>
./configure --prefix=/another_driver/apache/ --enable-shared=max --enable-module=most<br>
<br>
解释:<br>
--prefix=/another_driver/apache/: 一个系统使用寿命最低的一般就是硬盘,因此:将服务数据和系统完全分开,不仅能提高了数据的访问速度,更重要的,大大方便系统升级,备份和恢复。<br>
<br>
--shared-module=max:使用动态加载方式会带来5%的性能下降,但和带来的好处相比更本不算什么:比如模块升级方便,系统升级风险降低,安装过程标准化<br>
<br>
--enable-module=most:用most可以将一些不常用的module编译进来,比如后面讲到的mod_expire是就不在apache的缺省常用模块中<br>
<br>
如果不想build so, 也可以这样:<br>
./configure <br>
"--with-layout=Apache" <br>
"--prefix=/path/to/apache" <br>
"--disable-module=access" <br>
"--disable-module=actions" <br>
"--disable-module=autoindex" <br>
"--disable-module=env" <br>
"--disable-module=imap" <br>
"--disable-module=negotiation" <br>
"--disable-module=setenvif" <br>
"--disable-module=status" <br>
"--disable-module=userdir" <br>
"--disable-module=cgi" <br>
"--disable-module=include" <br>
"--disable-module=auth" <br>
"--disable-module=asis"<br>
<br>
但结果会发现,这样编译对服务性能只能有微小的提高(5%左右),但却失去了以后系统升级和模块升级的灵活性,无论是模块还是APACHE本身升级都必须把所有SOURCE加在一起重新编译。<br>
<br>
apache的缺省配置文件一般比较大:我们可以使用去掉注释的方法精简一下:然后再进入具体的培植过程能让你更快的定制出你所需要的。<br>
grep -v "#" httpd.conf.default &gt;httpd.conf<br>
<br>
需要修改的通用项目有以下几个:<br>
<br>
#服务端口,缺省是8080,建议将整个APACHE配置调整好后再将服务端口改到正式服务的端口<br>
Port 8080 =&gt; 80<br>
<br>
#服务器名:缺省没有<br>
ServerName name.example.com<br>
<br>
#最大服务进程数:根据服务容量预测设置<br>
MaxClients 256 =&gt; 800<br>
<br>
#缺省启动服务后的服务进程数:等服务比较平稳后,按平均负载下的httpd个数设置就可以<br>
StartServers 5 =&gt; 200<br>
<br>
不要修改:<br>
以前有建议说修改:<br>
MinSpareServers 5 =&gt; 100<br>
MaxSpareServers 10 =&gt; 200<br>
<br>
但从我的经验看来:缺省值已经是非常优化的了,而且让APACHE自己调整进程个数还是比较好的。<br>
<br>
特别修改:<br>
在solaris或一些比较容易出现内存泄露的应用上:<br>
MaxRequestsPerChild 0 =&gt;3000<br>
<br>
应用模块和工具的安装配置:<br>
<br>
由于使用模块动态加载的模式,所以可以方便的通过简单的配置调整来把APACHE定制成你需要的:最好把不常用模块全部清除(无论处于安全还是效率)。<br>
比如:对于静态页面服务器:就什么模块都不加载,对于PHP应用就加上PHP模块,对于JAVA应用就把RESIN模块加载上。而且各种模块的插拔非常简单。<br>
<br>
一般说来,可以不需要的模块包括:<br>
#LoadModule env_module libexec/mod_env.so<br>
#LoadModule negotiation_module libexec/mod_negotiation.so<br>
#LoadModule status_module libexec/mod_status.so<br>
#server side include已经过时了<br>
#LoadModule includes_module libexec/mod_include.so<br>
#不需要将没有缺省index文件的目录下所有文件列出<br>
#LoadModule autoindex_module libexec/mod_autoindex.so<br>
#尽量不使用CGI:一直是APACHE安全问题最多的地方<br>
#LoadModule cgi_module libexec/mod_cgi.so<br>
#LoadModule asis_module libexec/mod_asis.so<br>
#LoadModule imap_module libexec/mod_imap.so<br>
#LoadModule action_module libexec/mod_actions.so<br>
#不使用安全校验可以大大提高访问速度<br>
#LoadModule access_module libexec/mod_access.so<br>
#LoadModule auth_module libexec/mod_auth.so<br>
#LoadModule setenvif_module libexec/mod_setenvif.so<br>
<br>
最好保留的有:<br>
#用于定制log格式<br>
LoadModule config_log_module libexec/mod_log_config.so<br>
#用于增加文件应用的关联<br>
LoadModule mime_module libexec/mod_mime.so<br>
#用于缺省index文件:index.php等<br>
LoadModule dir_module libexec/mod_dir.so<br>
<br>
可用可不用的有:<br>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?