Tengine的安装和使用(1)

来源:互联网 发布:二维码生成器软件制作 编辑:程序博客网 时间:2024/06/03 20:17

一、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 #安装wgetwget 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 libfusesudo yum -y groupinstall "Development Tools"

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

sudo yum updatesudo 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.6libtool: 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.lalibtool: 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 deniedlibtool:   error: error: relink 'libpcreposix.la' with the above command before installing itmake[2]: *** [install-libLTLIBRARIES] 错误 1make[2]: 离开目录“/home/hadoop/app/pcre-8.38”make[1]: *** [install-am] 错误 2make[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/appwget http://www.openssl.org/source/openssl-1.0.2.tar.gztar -zxvf openssl-1.0.2.tar.gzcd openssl-1.0.2./config --prefix=/home/hadoop/soft/opensslsu #切换root用户make && make installcd /home/hadoop/softchown -R hadoop:hadoop openssl

C、Zlib

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

cd /home/hadoop/appwget http://zlib.net/zlib-1.2.11.tar.gztar -zxvf zlib-1.2.11.tar.gzcd zlib-1.2.11./configure --prefix=/home/hadoop/soft/zlibsu #切换root用户make && make installcd /home/hadoop/softchown -R hadoop:hadoop zlib

D、jemalloc

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

cd /home/hadoop/appwget https://github.com/jemalloc/jemalloc/releases/download/5.0.1/jemalloc-5.0.1.tar.bz2tar -jxvf jemalloc-5.0.1.tar.bz2cd jemalloc-5.0.1./configure --prefix=/home/hadoop/soft/jemallocsu #切换root用户make && make installcd /home/hadoop/softchown -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 0nginx="/home/hadoop/tengine/sbin/nginx" prog=$(basename $nginx)NGINX_CONF_FILE="/home/hadoop/tengine/conf/nginx.conf"[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginxlockfile=/var/lock/subsys/nginxmake_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 2esac

注意修改下面几处:前面是安装路径:
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 # 启动服务
“`

原创粉丝点击