0x01 前言

我更喜欢手动编译安装软件,apache也不例外。其实apache的编译安装很简单,几行代码即可搞定,这得益于她的模块动态加载模式。

我自己的网站和为别人搭建的网站都是基于Wordpress ,而服务器基本位于国外,为了能使网站代码和图片更符合各种标准和减少文件大小,我特意为服务器加上mod_pagespeed 这一个出自于Google 的apache 模块。

0x02 apache2 编译安装

0x02.1 文件准备

首先要准备以下文件,下载链接在文件之后。(我写文章的时候最新版本如下,请你安装的时候到文章最后寻找apache 最新的下载链接。)

  1. httpd-2.4.18(点击即可下载,右击可复制下载链接)
  2. apr-1.5.2(点击即可下载,右击可复制下载链接)
  3. apr-util-1.5.4(点击即可下载,右击可复制下载链接)
  4. apr-iconv-1.2.1(点击即可下载,右击可复制下载链接)

0x02.2 文件放置到正确的位置

我习惯在/root 目录下新建一个文件夹,统一放置源码文件。而apr 、apr-iconv 和apr-util 都要放置到正确的位置才能被编译。

#新建存放apache2相关源代码的文件夹
mkdir /root/codex/apache2 -p

#进入上面建立的文件夹
cd /root/codex/apache2/

#下载httpd-2.4.18
wget http://ftp.cuhk.edu.hk/pub/packages/apache.org//httpd/httpd-2.4.18.tar.gz

#下载apr-1.5.2
wget http://ftp.tsukuba.wide.ad.jp/software/apache//apr/apr-1.5.2.tar.gz

#下载apr-util-1.5.4
wget http://ftp.tsukuba.wide.ad.jp/software/apache//apr/apr-util-1.5.4.tar.gz

#下载apr-iconv-1.2.1
wget http://ftp.tsukuba.wide.ad.jp/software/apache//apr/apr-iconv-1.2.1.tar.gz

#解压相关文件
tar zxvf apr-1.5.2.tar.gz
tar zxvf apr-iconv-1.2.1.tar.gz
tar zxvf apr-util-1.5.4.tar.gz
tar zxvf httpd-2.4.18.tar.gz

#将apr 、apr-iconv 和apr-util 移动到httpd-2.4.18/srclib
mv apr-1.5.2 httpd-2.4.18/srclib/apr
mv apr-iconv-1.2.1 httpd-2.4.18/srclib/apr-iconv
mv apr-util-1.5.4 httpd-2.4.18/srclib/apr-util

0x02.3 编译/安装

#进入httpd-2.4.18 文件夹
cd httpd-2.4.18

#configure
./configure --prefix=/usr/local/apache2 --enable-mods-shared=all --enable-proxy=shared

#编译
make

#安装
make install

安装完成后,以下这些信息将在日后配置服务器的时候用到:

Installing configuration files
mkdir /usr/local/apache2/conf
mkdir /usr/local/apache2/conf/extra
mkdir /usr/local/apache2/conf/original
mkdir /usr/local/apache2/conf/original/extra
Installing HTML documents
mkdir /usr/local/apache2/htdocs
Installing error documents
mkdir /usr/local/apache2/error
Installing icons
mkdir /usr/local/apache2/icons
mkdir /usr/local/apache2/logs
Installing CGIs
mkdir /usr/local/apache2/cgi-bin
Installing header files
Installing build system files
Installing man pages and online manual
mkdir /usr/local/apache2/man
mkdir /usr/local/apache2/man/man1
mkdir /usr/local/apache2/man/man8
mkdir /usr/local/apache2/manual

0x02.4 将启动文件添加到 /usr/sbin

ln /usr/local/apache2/bin/apachectl /usr/sbin/

0x02.5 测试并启动apache2

#测试
[root@test1 httpd-2.4.18]# apachectl -t
Syntax OK

#启动
[root@test1 httpd-2.4.18]# apachectl -k start

很不幸,通过这种方式配置的apache2并不能通过systemctl控制开机启动。如果需要开机启动,通过修改/etc/rc.local 这个文件即可:

#通过vim修改rc.local 文件
vim /etc/rc.local

#将apachectl -k start 添加到最后一行
apachectl -k start

WeChat_1465842886

注意:文件/etc/rc.local 里有一句话:Please note that you must run ‘chmod +x /etc/rc.d/rc.local’ to ensure that this script will be executed during boot.

请运行chmod +x /etc/rc.d/rc.local 这个命令以确认系统启动时有足够权限去执行!所以,如果你想这个文件里的命令能在开机时启动,请执行以下命令:

chmod +x /etc/rc.d/rc.local

0x02.6 检查运行状态

通过ip地址即可进行测试:

http://[your server ip addr.]

WeChat_1465843262

0x03 安装mod_pagespeed

注意:过程需要从Google 服务器下载文件,请确认你的服务器能连接上Google 服务器!

0x03.1 通过rpm安装

文件下载链接(点击打开):dl-ssl.google.com

#测试版本
yum install mod-pagespeed-beta_current_x86_64.rpm

#稳定版本
yum install mod-pagespeed-stable_current_x86_64.rpm

0x03.2 通过源代码安装

#请确认以下软件包的版本
Python (>= 2.7)
g++ (>= 4.1)
svn (>= 1.8)
git (>= 1.8)

#请确认你已安装以下软件包
gperf
make

#如果不确定,也可以通过以下命令直接安装
yum install gcc-c++ python subversion gperf make rpm-build git curl

0x03.2.1 准备源代码

#新建存放源代码的文件夹
mkdir /root/codex/pagespeed -p

#进入上面创建的文件夹
cd /root/codex/pagespeed

#通过git命令从Google 复制文件
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git

#定义变量
export PATH=$PATH:/root/codex/pagespeed/depot_tools

#在apache2 存放模块的目录下新建文件夹
mkdir /usr/local/apache2/modules/mod_pagespeed -p

#进入上面创建的文件夹
cd /usr/local/apache2/modules/mod_pagespeed

#config
gclient config https://github.com/pagespeed/mod_pagespeed.git --unmanaged --name=src

通过git 命令从Github 复制文件
git clone https://github.com/pagespeed/mod_pagespeed.git src

进入刚才从Github 复制的文件夹
cd src

#检出主线版本
git checkout master

#返回上一级目录
cd ..

#同步,这需要很长时间!
gclient sync --force --jobs=1

0x03.2.2 编译/测试

#设置变量
export SSL_CERT_DIR=/etc/pki/tls/certs
export SSL_CERT_FILE=/etc/pki/tls/cert.pem

#进入文件夹
cd /usr/local/apache2/modules/mod_pagespeed/src

#编译,这可能需要半小时,请耐心等待
make AR.host=`pwd`/build/wrappers/ar.sh AR.target=`pwd`/build/wrappers/ar.sh \
BUILDTYPE=Release mod_pagespeed_test pagespeed_automatic_test

#测试,这可能需要十几分钟,请耐心等待
./out/Release/mod_pagespeed_test
./out/Release/pagespeed_automatic_test

0x03.2.3 继续完成编译过程

#进入文件夹
cd /usr/local/apache2/modules/mod_pagespeed/src

#完成编译
make AR.host=`pwd`/build/wrappers/ar.sh AR.target=`pwd`/build/wrappers/ar.sh BUILDTYPE=Release

0x03.2.4 安装

#进入文件夹
cd install

#安装
APXS_BIN=/usr/local/apache2/bin/apxs ./install_apxs.sh

0x04 PageSpeed Insights

这是Google 的一个项目,用来测试网页是否符合规范。以下是地址,点击即可打开,但请确认你能够访问Google 服务器!

PageSpeed Insights

0x04.1 这是我这个网站的PageSpeed Insights 测试结果

1465846138 1465846127

0x05 结语

apache2的编译安装很快捷,可是mod_pagespeed需要将近一个小时,要有耐心。

如果在编译过程中出现错误,请参考一下这篇文章:

新安装的centos7前期准备

或,通过以下命令安装一些软件包:

yum install -y pcre-devel openssl-devel libxslt* perl-ExtUtils-Embed at gcc-c++ python subversion gperf make rpm-build git curl bzip2-devel libcurl-devel gd gd-devel t1lib t1lib-devel libmcrypt libmcrypt-devel libtidy libtidy-devel GeoIP-devel libatomic_ops-devel zlib-devel unzip libstdc++*

0x06 相关链接