当前位置 主页 > 服务器问题 > Linux/apache问题 >

    APACHE安装笔记

    栏目:Linux/apache问题 时间:2018-11-17 14:23


    从简化安装==>性能调优==>方便维护的角度,讨论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 
    升级/维护:看看通用和模块化的安装过程如何简化了日常的升级/维护工作;
    按照以上的方法:系统管理员和应用管理员的职责可以清楚的分开,互相独立。
    系统安装:系统管理员的职责就是安装系统=>安装好一台可以适应任何情况的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