Tengine的安装和使用(1)

一、Tengine概述
Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。它的目的是打造一个高效、安全的Web平台。完全兼容Nginx。
首先介绍下Nginx,nginx [engine x]是Igor Sysoev编写的一个HTTP和反向代理服务器,另外它也可以作为邮件代理服务器。 它已经在众多流量很大的俄罗斯网站上使用了很长时间,这些网站包括Yandex、Mail.Ru、VKontakte,以及Rambler。它是一款轻量级,高性能http和反向代理以及电子邮箱的服务器。
在这里要重点说下正向代理和反向代理(之后的都是基于自己理解的可能有些偏差):
正向代理:是一个请求或者报文(里面不仅仅包含请求内容,还要所要访问的服务器的地址),发送到服务器上,该服务器按照请求,将请求转发到目标服务器中。这里服务器的功能不单一,每台服务器中都存储数据。性能比较差。
反向代理(分布式服务器):是一个请求或者报文(里面只包含请求内容,没有所要访问的服务器的地址),只能发送到一个代理服务器(该服务器只执行行请求),该服务根据请求自动找到该请求所需资源的服务器(每个服务器存储的数据不同(每个数据库存储的资源不同)),并将请求结果返回给代理服务器,请求给用户。性能比较优越,同时可以处理高并发的访问量,提高效率。
而淘宝的 Nginx,集成了 lua 模块,若要是使用官方的 Nginx,默认安装没有 lua模块,自己安装配置较为麻烦,所以我们选择 Tengine。Tengine 主要负责展示图片和调度 Lua 脚本。
它的简单介绍请参考网站:
http://tengine.taobao.org/documentation_cn.html
二、安装Tengine
本博客用的linux系统版本是centos7,网络配置也就不详细介绍了请参照博客
http://blog.csdn.net/qq_38776653/article/details/73550714
1、源码下载
源码是由github托管,下载地址如下:
https://github.com/alibaba/tengine
也可以用linux的下载命令行:

sudo yum install wget #安装wget
wget https://github.com/alibaba/tengine/archive/tengine-2.2.0.tar.gz #下载源文件

本博客以最新的版本来展示使用和安装:
tengine-tengine-2.2.0.tar.gz

2、编译环境和安装必须组件的搭建
2.1编译环境的搭建
编译时一定要确定linux系统里面有c和c++的编译器(编译环境),这里就不详细介绍了,本机子里面已经编译过别的软件,下面的命令可以参考一下:

sudo yum -y  install make gcc gcc-c++ gcc-g77 flex bison file libtool libtool-libs autoconf kernel-devel libjpeg libjpeg-devel libpng libpng-devel libpng10 libpng10-devel gd gd-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glib2 glib2-devel bzip2 bzip2-devel libevent libevent-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel gettext gettext-devel ncurses-devel gmp-devel pspell-devel unzip libcap lsof build-essential cmake 1g-dev pkg-config libssl-dev lzo-devel fuse fuse-devel zlib1g-dev libprotobuf-dev protobuf-compiler snappy libbz2-dev libjansson-dev libfuse
sudo yum -y groupinstall "Development Tools"

查看其他博客也可以执行下面的命令来搭建编译环境:

sudo yum update
sudo yum install gcc gcc-c++ autoconf automake

2.2安装所必须的组件(这一步看tengine的功能来安装)
A、PCRE

PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正则表达式库。nginx rewrite依赖于PCRE库,所以在安装Tengine前一定要先安装PCRE,最新版本的PCRE可在官网(http://www.pcre.org/)获取。具体安装流程为:

 cd /home/hadoop/app #指定下载地址
 wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.38.tar.gz#下载源文件
 tar -zxvf pcre-8.38.tar.gz 
 cd pcre-8.38
 ./configure --prefix=/home/hadoop/soft/pcre
 make && make install
 cd /home/hadoop/soft/pcre
 chown -R hadoop:hadoop pcre
 #修改文件的所有者

在安装过程中会出现下面的错误:

libtool: install: /usr/bin/install -c .libs/libpcre.so.1.2.6 /home/hadoop/soft/pcre/lib/libpcre.so.1.2.6
libtool: install: (cd /home/hadoop/soft/pcre/lib && { ln -s -f libpcre.so.1.2.6 libpcre.so.1 || { rm -f libpcre.so.1 && ln -s libpcre.so.1.2.6 libpcre.so.1; }; })
libtool: install: (cd /home/hadoop/soft/pcre/lib && { ln -s -f libpcre.so.1.2.6 libpcre.so || { rm -f libpcre.so && ln -s libpcre.so.1.2.6 libpcre.so; }; })
libtool: install: /usr/bin/install -c .libs/libpcre.lai /home/hadoop/soft/pcre/lib/libpcre.la
libtool: warning: relinking 'libpcreposix.la'
libtool: install: (cd /home/hadoop/app/pcre-8.38; /bin/sh "/home/hadoop/app/pcre-8.38/libtool"  --silent --tag CC --mode=relink gcc -fvisibility=hidden -g -O2 -version-info 0:3:0 -o libpcreposix.la -rpath /home/hadoop/soft/pcre/lib libpcreposix_la-pcreposix.lo libpcre.la )
mv: cannot move 'libpcreposix.so.0.0.3' to 'libpcreposix.so.0.0.3U': Permission denied
libtool:   error: error: relink 'libpcreposix.la' with the above command before installing it
make[2]: *** [install-libLTLIBRARIES] 错误 1
make[2]: 离开目录“/home/hadoop/app/pcre-8.38”
make[1]: *** [install-am] 错误 2
make[1]: 离开目录“/home/hadoop/app/pcre-8.38”
make: *** [install] 错误 2

这是由于权限不够,必须切换到root用户下再进行上述操作。

B、OpenSSL

OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。,安装OpenSSL(http://www.openssl.org/source/)主要是为了让tengine支持Https的访问请求。具体是否安装看需求。

复制代码 代码如下:

cd /home/hadoop/app
wget http://www.openssl.org/source/openssl-1.0.2.tar.gz
tar -zxvf openssl-1.0.2.tar.gz
cd openssl-1.0.2
./config --prefix=/home/hadoop/soft/openssl
su #切换root用户
make && make install
cd /home/hadoop/soft
chown -R hadoop:hadoop openssl

C、Zlib

Zlib是提供资料压缩之用的函式库,当Tengine想启用GZIP压缩的时候就需要使用到Zlib(http://www.zlib.net/)

cd /home/hadoop/app
wget http://zlib.net/zlib-1.2.11.tar.gz
tar -zxvf zlib-1.2.11.tar.gz
cd zlib-1.2.11
./configure --prefix=/home/hadoop/soft/zlib
su #切换root用户
make && make install
cd /home/hadoop/soft
chown -R hadoop:hadoop zlib

D、jemalloc

jemalloc(http://www.canonware.com/jemalloc/)是一个更好的内存管理工具,使用jemalloc可以更好的优化Tengine的内存管理。

cd /home/hadoop/app
wget https://github.com/jemalloc/jemalloc/releases/download/5.0.1/jemalloc-5.0.1.tar.bz2
tar -jxvf jemalloc-5.0.1.tar.bz2
cd jemalloc-5.0.1
./configure --prefix=/home/hadoop/soft/jemalloc
su #切换root用户
make && make install
cd /home/hadoop/soft
chown -R hadoop:hadoop jemalloc

3、将源码传到linux,解压,编译

tar -zxvf tengine-tengine-2.2.0.tar.gz -C /home/hadoop/app/
#把源文件解压到用户hadoop根目录下的app文件夹下
cd /home/hadoop/app #切换到目标目录
mv tengine-tengine-2.2.0 tengine #可以给文件夹取别名,改不改都可以
cd tengine #切换到文件的目录
./configure --prefix=/home/hadoop 
#初始化文件夹,--prefix指的是文件的安装位置,可以不指定,默认将安装在/usr/local/nginx目录

make #编译文件
sudo make install #安装tengine,

在编译安装过程中会编译不上,重新执行./configure –prefix=/home/hadoop/soft/tengine就ok了。
4、配置Tengine,设置tengine自动启动
编辑启动文件

vi /etc/rc.d/init.d/nginx

添加下面内容

#!/bin/sh
#
# nginx - this script starts and stops the nginx daemon
#
# chkconfig:   - 85 15
# description:  Nginx is an HTTP(S) server, HTTP(S) reverse \
#               proxy and IMAP/POP3 proxy server
# processname: nginx
# config:      /etc/nginx/nginx.conf
# config:      /etc/sysconfig/nginx
# pidfile:     /var/run/nginx.pid

# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0

nginx="/home/hadoop/tengine/sbin/nginx" 
prog=$(basename $nginx)

NGINX_CONF_FILE="/home/hadoop/tengine/conf/nginx.conf"

[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx

lockfile=/var/lock/subsys/nginx

make_dirs() {
   # make required directories
   user=`$nginx -V 2>&1 | grep "configure arguments:" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -`
   if [ -z "`grep $user /etc/passwd`" ]; then
       useradd -M -s /bin/nologin $user
   fi
   options=`$nginx -V 2>&1 | grep 'configure arguments:'`
   for opt in $options; do
       if [ `echo $opt | grep '.*-temp-path'` ]; then
           value=`echo $opt | cut -d "=" -f 2`
           if [ ! -d "$value" ]; then
               # echo "creating" $value
               mkdir -p $value && chown -R $user $value
           fi
       fi
   done
}

start() {
    [ -x $nginx ] || exit 5
    [ -f $NGINX_CONF_FILE ] || exit 6
    make_dirs
    echo -n $"Starting $prog: "
    daemon $nginx -c $NGINX_CONF_FILE
    retval=$?
    echo
    [ $retval -eq 0 ] && touch $lockfile
    return $retval
}

stop() {
    echo -n $"Stopping $prog: "
    killproc $prog -QUIT
    retval=$?
    echo
    [ $retval -eq 0 ] && rm -f $lockfile
    return $retval
}

restart() {
    configtest || return $?
    stop
    sleep 1
    start
}

reload() {
    configtest || return $?
    echo -n $"Reloading $prog: "
    killproc $nginx -HUP
    RETVAL=$?
    echo
}

force_reload() {
    restart
}

configtest() {
  $nginx -t -c $NGINX_CONF_FILE
}

rh_status() {
    status $prog
}

rh_status_q() {
    rh_status >/dev/null 2>&1
}

case "$1" in
    start)
        rh_status_q && exit 0
        $1
        ;;
    stop)
        rh_status_q || exit 0
        $1
        ;;
    restart|configtest)
        $1
        ;;
    reload)
        rh_status_q || exit 7
        $1
        ;;
    force-reload)
        force_reload
        ;;
    status)
        rh_status
        ;;
    condrestart|try-restart)
        rh_status_q || exit 0
            ;;
    *)
        echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
        exit 2
esac

注意修改下面几处:前面是安装路径:
nginx=”/home/hadoop/tengine/sbin/nginx” 修改成nginx执行程序的路径。
NGINX_CONF_FILE=”/home/hadoop/tengine/conf/nginx.conf” 修改成配置文件的路径
chmod 775 /etc/rc.d/init.d/nginx #赋予文件执行权限
chkconfig –add /etc/rc.d/init.d/nginx
chkconfig nginx on #设置开机启动
systemctl restart nginx # 启动服务
“`

你可能感兴趣的:(Tengine的安装和使用(1))