Tengine简介和安装使用方法

标签: tengine 简介 方法 | 发表时间:2015-05-31 16:50 | 作者:lxl13041491
出处:http://www.iteye.com

Tengine是淘宝开发的基于nginx的应用服务器,反向代理服务器。它兼容nginx的所有配置,并且在其上增加了很多实用的功能,例如动态模块加载,集成lua语言进行扩展等,在性能方面有了比较大的改进。下面是Tengine独有的部分功能,查看全部等前往官网,地址是 http://tengine.taobao.org/

一、Tengine部分特性

1.nginx -m 查看所有已经加载的模块,static说明已经安装的,shared说明是动态安装的;

2.nginx架构是模块化的,除了主模块,其他模块都需在安装时进行编译安装,也可在安装后进行编译安装;

3.tengine完全兼容nginx的配置;

4.tengine实现动态加载模块,不需重新编译,就可以实现安装新的模块。动态模块功能会被默认安装。而nginx不支持模块动态加载,需要编译重启;

5.lua语言扩展功能,通过编程可以有效为应用服务器分流请求;

6.强大的负载均衡功能,可以检测应用服务器的健康情况,动态的上下线。

二、安装Tengine,具有LUA模块

1.安装PCRE库,如有可以不装

cd /usr/local/

wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre2-10.10.tar.gz

tar -zxvf pcre2-10.10.tar.gz

cd pcre2-10.10

./configure

make

make install

2.安装zlib库,如有可以不装

cd /usr/local/ 

wget http://zlib.net/zlib-1.2.8.tar.gz

tar -zxvf zlib-1.2.8.tar.gz cd zlib-1.2.8

./configure

make

make install

3.安装ssl,如有可以不装

cd /usr/local/

wget http://www.openssl.org/source/openssl-1.0.1c.tar.gz

tar -zxvf openssl-1.0.1c.tar.gz

4.安装lua-jit,即时编译的lua

下载wget http://luajit.org/download/LuaJIT-2.0.3.tar.gz,安装时需要root权限,解压缩,打开根目录,使用下列命令,安装到默认位置。

make && sudo make install

5.安装ngx_devel_kit,下载wget https://github.com/simpl/ngx_devel_kit/archive/v0.2.19.tar.gz,解压

6.安装ngx_lua,下载wget https://github.com/openresty/lua-nginx-module/archive/v0.9.16rc1.tar.gz,解压

7.export LUAJIT_LIB=/usr/local/lib,可以查看lua-jit安装配置文件获取lib和include的值;

8.export LUAJIT_INC=/usr/local/include/luajit-2.0 ;

9.安装tengine,下载tengine,解压缩,打开目录,执行下列命令:

./configure --prefix=/home/work/opt/nginx --with-ld-opt='-Wl,-rpath,/usr/local/lib' --add-module=/home/work/tengine/ngx_devel_kit-0.2.19 --add-module=/home/work/tengine/lua-nginx-module-0.9.16rc1 --with-openssl=/home/work/tengine/openssl-1.0.1c

make

make install

参考文档:

http://www.cnblogs.com/zhuhongbao/archive/2013/06/04/3118061.html

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

https://github.com/openresty/lua-nginx-module/blob/master/README.markdown

三、使用Tengine

1.配置

提供一个典型配置,包括负载均衡,记录日志,限流,使用LUA扩展等功能。如下:

#user  nobody;

worker_processes  auto;

 

#error_log  logs/error.log;

#error_log  logs/error.log  notice;

#error_log  logs/error.log  info;

 

#pid        logs/nginx.pid;

 

 

events {

    worker_connections  2048;

    use epoll;

}

 

 

http {

    include       mime.types;

    default_type  application/octet-stream;

    log_format main '$remote_addr - $remote_user [$time_local] "$request" '

                      '$status $body_bytes_sent $request_time $upstream_response_time $bytes_sent $request_length ';

    #access_log  logs/access.log  main;

 

    sendfile        on;

    #tcp_nopush     on;

 

    #keepalive_timeout  0;

    keepalive_timeout  10;

 

 

    #限制域limit_req_zone $binary_remote_addr $uri zone=one:30m rate=10r/s;

    limit_req_zone $binary_remote_addr $uri zone=one:30m rate=10r/s;

 

    proxy_next_upstream error http_500 http_503 http_504;

    #proxy_next_upstream timeout;

    proxy_connect_timeout 5s;

    proxy_send_timeout 10s;

 

    upstream onlineProxy {

      server ip:port;

       server ip:port;

     server ip:port;  

     server ip:port;

     server ip:port;

     server ip:port;

    }

 

    upstream standaloneProxy {

      server ip:port;

       server ip:port;

     server ip:port;  

     server ip:port;

     server ip:port;

     server ip:port;

    }

    server {

      listen 8881;

      server_name 域名;

      proxy_intercept_errors on;

 

      location ^~ /xxx/ {

        #100表示最大请求数阀值,超过限制域(1r/s)请求会被延迟,超过阀值次数的请求会返回503,nodeley表示超过的限制域的请求直接失败

        limit_req zone=one burst=100;

        access_log logs/online/access_online.log main;

        proxy_pass http://onlineProxy;

        error_page 404 500 502 503 504  /error_online.html;

        proxy_set_header x-forward-nginx $remote_addr;

      }

     location /lua_content {

        # MIME type determined by default_type:

        default_type 'text/plain';

        access_log logs/test.log main;

        content_by_lua "ngx.say('Hello,world!')";

     }

 

      location ^~ /xxx/ {

        access_log logs/standalone/access_standalone.log main;

        proxy_pass http://standaloneProxy;

        error_page 404 500 502 503 504  /error_standalone.html;

        proxy_set_header x-forward-nginx $remote_addr;

      }

      

      location ^~ /gamesdkjobs/uploadify/uploadFile/ {

        access_log logs/standalone/access_standalone.log main;

        proxy_pass http://10.10.1.35:8181/gamesdkjobs/uploadify/uploadFile/;

        error_page 404 500 502 503 504  /error_standalone.html;

        proxy_set_header x-forward-nginx $remote_addr;

      }

      

      location = /monitor {

        default_type application/json;

        return 200 'success';

      }

      

      location / {

      return 404;

      }

      

 

      location = /error_online.html {

        access_log logs/online/access_online_error.log;

        root html;

      }

      

      location = /error_standalone.html {

        access_log logs/standalone/access_standalone_error.log;

        root html;

 

      }

    

    }

}

2.启动

opt/nginx/sbin/nginx

3.重启

编写重启脚本,如下:

pid_path="/home/work/opt/nginx/logs/nginx.pid"

 

kill -HUP `cat ${pid_path}`

4.停止

编写停止脚本,如下:

pid_path="/home/work/opt/nginx/logs/nginx.pid"

 

kill -QUIT `cat ${pid_path}`

5.分割访问日志

编写定时任务来定期执行脚本,如下:

logs_path="/home/work/opt/nginx/logs/"

pid_path="/home/work/opt/nginx/logs/nginx.pid"

log_date=`date -d "1 minute ago" +%Y%m%d%H`

mv ${logs_path}online/access_online.log ${logs_path}online/access_online.log.${log_date}

 

kill -USR1 `cat ${pid_path}`

 



已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [tengine 简介 方法] 推荐:

Tengine简介和安装使用方法

- - 企业架构 - ITeye博客
Tengine是淘宝开发的基于nginx的应用服务器,反向代理服务器. 它兼容nginx的所有配置,并且在其上增加了很多实用的功能,例如动态模块加载,集成lua语言进行扩展等,在性能方面有了比较大的改进. 下面是Tengine独有的部分功能,查看全部等前往官网,地址是 http://tengine.taobao.org/.

Doclist压缩方法简介

- flychen50 - 搜索技术博客-淘宝
本文是作者在学习doclist压缩时的一点总结,希望以尽可能简单明了的方式描述各个算法的思想和适用场景,帮助同学们理解和比较. 本文并不涉及具体的算法实现,代码请大家自行google. 这里需要强调的是“所谓的改进顺序”只是作者yy出来方便理解记忆,并不反应真实的压缩方法发展历程. 倒排表的基本组成部分,看例子:.

[nginx] 淘宝网Web服务器Tengine正式开源

- - 开心平淡对待每一天。热爱生活
     下载地址:  http://tengine.taobao.org/download_cn.html. 今年的世纪光棍节上,购物狂欢开始的第一分钟,近350万网民疯狂涌入淘宝、淘宝商城购物,仅10分钟不到就创造了10亿元的订单交易,其背后的服务器平台,成功Hold得住了迅猛凶悍的流量冲击,然而此时,支付宝连接的各大网银网站纷纷倒下.

安装淘宝开源web服务器tengine替换nginx并使用proxy_cache做前端代理

- - C1G军火库
Tengine是由淘宝网发起的Web服务器项目. 它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性. Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检验. 它的最终目标是打造一个高效、稳定、安全、易用的Web平台. 目前稳定版[2013-11-22] Tengine-1.5.2.

Flask-Babel 简介

- yinseny - python.cn(jobs, news)
本文有一个格式好看一点,并且有语法高亮的版本放在 readthedocs,欢迎浏览. 本文是原创,不是翻译,不过本文其实是谈翻译的. 话说用 wordpress 的 WYSIWYG 编辑器写这样的文章真痛苦啊,格式一不小心就乱了,本文是用 rst 写成,编译为 html,然后贴到这边来的. 最近用 Flask 给公司做了个小 web 应用,做的时候用英文了,现在要求翻译成中文.

AsciiDoc简介

- dayu - 桃源
AsciiDoc 是一种简单的基于纯文本的文档生成工具, 与它类似的还有 reStructuredText, Markdown. 说是生成文档, 其实它可以将纯文本文件转换成各种类型, 比如:. Man Page (示例). Graphviz 图形 (示例). 使用AsciiDoc进行文档编写最著名的恐怕是Git官方的 Git User’s Manual (我表示对于初学者很难看懂), 这篇博客也是通过AsciiDoc生成, 文后会附上本文的原始代码以便参考..

ABAP简介

- - 博客园_首页
中文名称:高级企业应用编程语言. 英文全称:Advanced Business Application Programming. 德语全称:Allgemeiner Berichtsaufbereitungsprozessor(通用报表预处理器). 概述:一种高级编程语言,起源于20世纪80年代,由德国软件公司SAP开发,主要用作SAP的编程,现行版本为ABAP/4,同时支持面向过程和面向对象.

json简介

- - ITeye博客
    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于阅读和编写,同时也易于机器解析和生成. 它基于ECMA262语言规范(1999-12第三版)中JavaScript编程语言的一个子集. JSON采用与编程语言无关的文本格式,但是也使用了类C语言(包括C, C++, C#, Java, JavaScript, Perl, Python等)的习惯,这些特性使JSON成为理想的数据交换格式.

[转]amanda 简介

- - 小鸥的博客
    安装mysql数据库是会发现三个用户 mysql 、postmyql 、amanda,其中amanda是什么呢.   Amanda 是最早出现的开源备份 软件. 它的名字来自Maryland大学. Amanda的意思是高级Maryland 硬盘归档器..   Amanda通过 操作系统上 一些自带的备份工具,例如tar(Unix/linux)、zip(Windows)来实现备份的计划,自动化和跟踪等功能.

[转]HBase简介

- - 小鸥的博客
   Hbase是一个分布式开源数据库,基于Hadoop分布式文件系统,模仿并提供了基于Google文件系统的Bigtable数据库的所有功能. 其目标是处理非常庞大的表,可以用普通的计算机处理超过10亿行数据,并且有数百万列元素组成的数据表. Hbase可以直接使用本地文件系统或者Hadoop作为数据存储方式,不过为了提高数据可靠性和系统的健壮性,发挥Hbase处理大数据量等功能,需要使用Hadoop作为文件系统.