tengine 是淘宝开源的 nginx 修改版本,添加了一些新的特性,官方网站在此 http://tengine.taobao.com ,我习惯使用 dotdeb 的 nginx ,因此按照 dotdeb 编译 nginx 的参数编译了下 tengine 代替 nginx .

安装编译环境

1
apt-get install build-essential

安装 dotdeb 的 nginx 可参考Debian 下 nginx + php-fpm 的安装配置

获取 tengine 的源代码

1
2
wget -c http://tengine.taobao.org/download/tengine-1.4.2.tar.gz
tar zxvf tengine-1.4.2.tar.gz

获取第三方模块

nginx 第三方库可以从这个网址下载
http://wiki.nginx.org/3rdPartyModules

dotdeb 安装了几个第三方库,但是有一些我从这个页面上没有找到,所以只下载了其中的 5 个,放置在了 /root/modules 目录中,结构如下

nginx-auth-pam nginx-echo ginx-upstream-fair nginx-cache-purge nginx-http-substitution-filter

一些编译需要的附加模块

编译 tengine 及 这5个第三方库需要一些附加库,依次安装

1
2
3
4
5
6
7
apt-get install libpcre3-dev
apt-get install libssl-dev
apt-get install libxml2-dev
apt-get install libxslt1-dev
apt-get install libgd2-xpm-dev
apt-get install libgeoip-dev
apt-get install libpam-dev

这几个库不是很好找,我的 sources.list 是这样的

1
2
3
4
5
6
7
8
9
10
11
deb http://mirrors.ustc.edu.cn/debian/ squeeze main
deb-src http://mirrors.ustc.edu.cn/debian/ squeeze main

deb http://security.debian.org/ squeeze/updates main
deb-src http://security.debian.org/ squeeze/updates main


deb http://mirrors.ustc.edu.cn/debian/ squeeze-updates main
deb-src http://mirrors.ustc.edu.cn/debian/ squeeze-updates main

deb http://packages.dotdeb.org squeeze all

开始编译

1
2
3
cd tengine-1.4.2`

./configure  --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-log-path=/var/log/nginx/access.log --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --lock-path=/var/lock/nginx.lock --pid-path=/var/run/nginx.pid --with-pcre-jit --with-debug --with-file-aio --with-http_addition_module --with-http_dav_module --with-http_geoip_module --with-http_gzip_static_module --with-http_image_filter_module --with-http_realip_module --with-http_secure_link_module --with-http_stub_status_module --with-http_ssl_module --with-http_sub_module --with-http_xslt_module --with-ipv6 --with-sha1=/usr/include/openssl --with-md5=/usr/include/openssl --with-mail --with-mail_ssl_module --add-module=/root/modules/nginx-auth-pam --add-module=/root/modules/nginx-echo --add-module=/root/modules/nginx-upstream-fair --add-module=/root/modules/nginx-cache-purge --add-module=/root/modules/nginx-http-substitution-filter --with-http_upstream_check_module --with-http_concat_module --dso-path=/etc/nginx/modules

其中新加入的几个参数是

--with-http_upstream_check_module  是后端服务器主动健康检查模块

--with-http_concat_module 是 js,css等文件合并模块

--dso-path 指定动态 modules 所在目录,放置在 /etc/nginx/modules

1
make

替换 nginx

编译完成后,将 objs 中的 nginx 代替 dotdeb 中的即可。

1
2
mv /usr/sbin/nginx /usr/sbin/nginx.before.tengine
mv /root/tengine-1.4.2/objs/nginx /usr/sbin/

其他使用方式和 dotdeb 一样

nginx -V 可以查看到 nginx 已经被替换为 tengine 。