🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
--- ## 源码编译安装 ### 编译安装的目的 * 针对硬件,发挥硬件最大性能 * 使在apache在服务器中添加补丁成为可能。 * 更好的整合程序,例如整合apache,php, mysql > 补充:apache的性能主要依靠CPU和内存,使用gcc编译参数对其优化,性能提升并不明显。 ### 编译环境说明 * 空间需求 源码70M,编译后 20M * 编译要求 apache源码是由ANSIC语言编写,需要ANSIC编译器,因此可以使用gcc编译器 * apr和apr-util工具包需要时1.2以上版本 * apache本身并不需要perl,但有些支持脚本是由perl编写的 * APACI 自动配置样式接口(Apache AutoConf-style Interface),它本身并不对源码进行编译,而是检查编译环境,指定或禁止apache模块,设置安装路径,并创建make程序的描述文件MakeFile,方便make程序进行编译 ### configure脚本和常见编译参数 可以将configure理解为APACI,如果一切顺利configure将会建立一系列MakeFile文件 #### 常见编译参数 ``` --prefix apache 安装目录 --enable-module=so 使apahce以DSO方式加载模块 --enable-mods-shared=all 以共享方式编译全部模块(不包括核心模块) --enable-modules=all/most 以静态方式编译所有模块 --with--mpm=worker 以worker方式运行 --enable-deflate 压缩后传输 --enable-proxy-fcgi --enable-proxy fastcgi支持选项 --enable-rewrite 支持url重写 --enable-cgid --enable-cgi –-enable-headers 这个默认是开启的,提供允许对HTTP请求头的控制 -–enable-expires 激活彧通过配置文件控制HTTP的“Expires:”和“Cache-Control:”头内容,即对网站图片、js、css等内容,提供客户端浏览器缓存的设置。这个是apache调优的一个重要选项之一。 ``` ## 开始安装 apr[官网下载][1]或者使用国内的[镜像][5] ### 安装apr和apr-util 方式1 apr和apr-util作为httpd编译安装的一部分 ``` tar -zxvf apr-1.4.6.tar.gz tar -zxvf apr-util-1.5.2.tar.gz cp -a apr-1.4.1 httpd-2.4.20/srclib/apr cp -a apr-util-1.4.1 httpd-2.4.20/srclib/apr-util ``` `./configure`时,后面添加`--with-included-apr`选项 * 注意 经过测试,以上apr版本不支持event 使用apr-1.5.2和apr-util-1.5.2可支持event --- ### 安装apr和apr-util 方式2 #### apr和apr-util下载 版本:apr-1.4.6.tar.bz2 ``` tar xf apr-1.4.6.tar.bz2 ./configure --prefix=/usr/local/apr make make install ``` 版本:apr-util-1.4.1.tar.bz2 ``` tar xf apr-util-1.4.1.tar.bz2 ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr make make install ``` 此处编译的apr不用输出头文件/库文件,只为httpd使用。 --- ### 安装httpd [apache官方下载站点][4] [apache存档站点][3] **推荐** 2.4最新版[下载][2] #### 编译环境 ``` yum install -y gcc gcc++ zlib zlib-devel openssl openssl-devel pcre pcre-devel ``` #### 下载源码包 ``` wget http://archive.apache.org/dist/httpd/httpd-2.4.23.tar.bz2 wget http://archive.apache.org/dist/httpd/httpd-2.4.23.tar.bz2.md5 ``` #### 校验md5 ``` md5sum -c httpd-2.4.23.tar.bz2.md5 httpd-2.4.23.tar.bz2: OK ``` ### MPM静态和动态模块说明 #### 构建MPM为静态模块 --with-mpm=NAME 在构建时选择一种MPM,编译到服务器中。如果要改变MPM,必须重新构建。编译完成后,可以使用 ./httpd -l 来确定选择的MPM。 #### 构建 MPM 为动态模块 --enable-mpms-shared 在Unix或类似平台中,MPM可以构建为动态模块,与其它动态模块一样在运行时加载。在执行configure脚本时,使用--enable-mpms-shared选项即可启用此特性。当给出的参数为all时,所有此平台支持的MPM模块都会被安装。默认MPM,通过--with-mpm选项来指定。编辑LoadModule指令内容可以选择不同的MPM。 #### 编译 ``` ./configure \ --prefix=/usr/local/apache \ --with-mpm=prefork \ --enable-rewrite \ --enable-deflate \ --enable-so \ --enable-ssl \ --enable-cgid \ --enable-cgi \ --enable-modules=most \ --enable-mods-shared=most \ --enable-mpms-shared=all \ --with-included-apr \ --enable-headers ``` >[info] 如果启用fcgi,需要这两个选项 ~~~ --enable-proxy --enable-proxy-fcgi ~~~ 如果,apr和apr-util是单独安装的,需指定以下选项,不使用`--with-included-apr`选项 ``` --with-apr=/usr/local/apr \ --with-apr-util=/usr/local/apr-util ``` 一切正常的话就可以执行make ``` make && make install ``` 如果有多颗CPU,则可以使用多颗CPU来加快编译速度 ~~~ make -j2 ~~~ ## 编译之后 ### config.nice 这个文件是一个shell脚本,包含了最后一次成功运行configure命令的命令行脚本;如果再次编译,需要在原有的基础上增加模块,可以这样操作 ~~~ ./config.nice --enable-cache ~~~ ### config.layout 为了更好控制编译过程中的文件位置和后继安装中的文件位置,默认使用的是Apache布局; 在编译时如果想使用,则使用`--enable-layout=Layout_ID`选项 ### 清除调试符号 在GCC的默认情况下,大多数程序和库都是带有调试符号编译的,这些调试符号在调试程序时使用,它不但能给出内存地址,还能给出海署名。但对于生产系统的服务器是不必要的,因为调试符号的存在,apache会占用更多的内存。 #### 清除调试符号 ~~~ strip /usr/local/apache/bin/httpd ~~~ 清除后,从1.8M降到500K > 注意 清除调试符号之后,不能在使用调试工具得到调试信息了。 ## 可能出现的问题 **报错** `util_pcre.c:128: error: 'PCRE_DUPNAMES' undeclared (first use in this function)` 网上说版本过低 下载pcre源码编译安装(编译选项默认)[官网][6] [下载][7] [pcre编译方法文档][8] 编译时,添加如下选项`--with-pcre=/usr/local/bin/pcre-config`(pcre编译安装默认生成的文件路径) **注意** 多次编译时,注意使用`make distclean`清除编译缓存 [1]:http://apr.apache.org/ [2]:http://archive.apache.org/dist/httpd/httpd-2.4.23.tar.bz2 [3]:http://archive.apache.org/dist/httpd/ [4]:http://apache.org/dist/httpd/ [5]:http://mirrors.tuna.tsinghua.edu.cn/apache/apr/ [6]:http://www.pcre.org/ [7]:http://nchc.dl.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.bz2 [8]:http://www.cnblogs.com/renhao/archive/2011/08/17/2143264.html