Tengine的实现背景及特点

淘宝网现在已经将其服务器平台软件Tengine 开源,Tengine基于Nginx,针对大流量网站需求增加了很多功能特性和性能优化。以下沿引项目主页上的特性介绍:

  • 继承Nginx的所有特性;
  • 组合多个CSS、JavaScript文件的访问请求变成一个请求;
  • 支持管道和syslog形式的日志和抽样;(且支持syslog-ng)
  • 自动根据CPU数目设置亲缘性;(此部分在模块文档介绍部分说的非常详细)
  • 监控系统的负载和资源占用从而对系统进行保护;
  • 显示对运维人员更友好的出错信息,便于定位出错机器;
  • 更强大的访问速度限制模块;
  • backtrace模块,程序崩溃的时候可以显示出错的调用栈

Nginx与Apache的异同

Nginx和Apache一样,都是HTTP服务器软件,在功能实现上都采用模块化结构设计,都支持通用的语言接口,如PHP、Perl、Python等,同时还支持正向和反向代理、虚拟主机、URL重写、压缩传输、SSL加密传输等。它们之间最大的差别是Apache的处理速度很慢,且占用很多内存资源,而Nginx却恰恰相反;在功能实现上,Apache的所有模块都支持动、静态编译,而Nginx模块都是静态编译的,同时,Apache对Fcgi的支持不好,而Nginx对Fcgi的支持非常好;在处理连接方式上,Nginx支持epoll,而Apache却不支持;在空间使用上,Nginx安装包仅仅只有几百K,和Nginx比起来Apache绝对是庞然大物。在了解了Nginx和Apache之间的异同点后基本上就知道了Nginx作为HTTP服务器的优势所在。

Tengine的安装

1、安装pcre #支持Tengine伪静态

下载地址为http://sourceforge.net/projects/pcre/files/pcre

1# wget  http://cdnetworks-kr-2.dl.sourceforge.net/project/pcre/pcre/8.21/pcre-8.21.tar.gz
2# cd /usr/local/src
3# tar zxvf pcre-8.13.tar.gz
4# mkdir /usr/local/pcre   #创建安装目录
5# cd pcre-8.13
6# ./configure --prefix=/usr/local/pcre   #配置
7# make
8# make install

2、安装 tengine

 1# wget http://tengine.taobao.org/download/tengine-1.2.3.tar.gz 
 2# cd /usr/local/src
 3# tar zxvf tengine-1.2.3.tar.gz
 4# cd tengine
 5# ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-openssl=/usr/ --with-pcre=/usr/local/src/pcre-8.13
 6
 7# make
 8# make install
 9# /usr/local/nginx/sbin/nginx   #启动
10# chown nobody.nobody -R /usr/local/nginx/html      此处一定要注意,权限搞不好,很容易出现403无法访问的问题
11# chmod 700 -R /usr/local/nginx/html

注意:–with-pcre=/usr/local/src/pcre-8.13指向的是源码包解压的路径,而不是安装的路径,否则会报错。经常用到的几个配置参数为

–with-http_stub_status_module
–with-http_ssl_module
–with-syslog (该块为淘宝新增模块)
–prefix=PATH
–with-pcre=DIR
–with-openssl=DIR

3、设置tengine开启启动脚本

vi /etc/rc.d/init.d/nginx #编辑启动文件添加下面内容

 1#!/bin/bash
 2# nginx Startup script for the Nginx HTTP Server
 3# it is v.0.0.2 version.
 4# chkconfig: - 85 15
 5# description: Nginx is a high-performance web and proxy server.
 6# It has a lot of features, but it's not for everyone.
 7# processname: nginx
 8# pidfile: /var/run/nginx.pid
 9# config: /usr/local/nginx/conf/nginx.conf
10
11nginxd=/usr/local/nginx/sbin/nginx
12nginx_config=/usr/local/nginx/conf/nginx.conf
13nginx_pid=/usr/local/nginx/logs/nginx.pid
14RETVAL=0
15
16prog="nginx"
17
18# Source function library.
19. /etc/rc.d/init.d/functions
20
21# Source networking configuration.
22. /etc/sysconfig/network
23
24# Check that networking is up.
25[ ${NETWORKING} = "no" ] && exit 0
26[ -x $nginxd ] || exit 0
27
28# Start nginx daemons functions.
29start() {
30    if [ -e $nginx_pid ];then
31        echo "nginx already running...."
32        exit 1
33    fi
34
35    echo -n $"Starting $prog: "
36    daemon $nginxd -c ${nginx_config}
37    RETVAL=$?
38
39    echo
40    [ $RETVAL = 0 ] && touch /var/lock/subsys/nginx
41    return $RETVAL
42}
43
44# Stop nginx daemons functions.
45stop() {
46    echo -n $"Stopping $prog: "
47    killproc $nginxd
48    RETVAL=$?
49
50    echo
51    [ $RETVAL = 0 ] && rm -f /var/lock/subsys/nginx /usr/local/nginx/logs/nginx.pid
52}
53
54reload() {
55    echo -n $"Reloading $prog: "
56    #kill -HUP `cat ${nginx_pid}`
57    killproc $nginxd -HUP
58    RETVAL=$?
59    echo
60}
61
62# See how we were called.
63case "$1" in
64    start)
65    start
66    ;;
67    stop)
68    stop
69    ;;
70
71    reload)
72    reload
73    ;;
74
75    restart)
76    stop
77    start
78    ;;
79
80    status)
81    status $prog
82    RETVAL=$?
83    ;;
84
85    *)
86    echo $"Usage: $prog {start|stop|restart|reload|status|help}"
87    exit 1
88esac
89exit $RETVAL

保存退出

1# chmod 775 /etc/rc.d/init.d/nginx   #赋予文件执行权限
2# chkconfig nginx on   #设置开机启动
3# /etc/rc.d/init.d/nginx restart
4# service nginx restart

淘宝网提供的在线文档

http://tengine.taobao.org/documentation_cn.html

目前taobao只提供了在linux下的.tar.gz包的下载,暂不支持rpm包和windows下的安装。且文件也并十分简陋,相信其后继会有完备的版本更新和比较详细文档说明。 和tengine相关的其他的页面:

淘宝开源监控工具tsar主页

2013年4月9日后记:

最新版本的tengine中加入在内存管理方面,增加了对jemalloc内存的支持 。具体编译安装方式,可以查看我的日志— jemalloc内存管理