【图文】详解淘宝web服务器Tengine动态模块加载的使用方法

Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。目前已开源。它由Tengine团队开发和维护。Tengine团队的核心成员来自于淘宝、搜狗等互联网企业。Tengine继承Nginx的所有特性,100%兼容Nginx的配置。本文主要介绍它的“动态模块加载(DSO)”的基本使用方法。

什么是“动态模块加载”呢?打个简单的比:

默认Nginx没有echo功能,传统情况下,我们会下载echo模块,然后重新编译Nginx后再使用新编译的Nginx。如果需要用的模块很多,那么有两个情况:要么有很多Nginx的版本,不同版本带有不同功能,还有各种模块的排列组合;要么就有一种万能的Nginx,什么模块都有(好比 OpenResty)。

有没一种方法,即灵活又无需那么臃肿呢?答案就是“动态模块加载”了(类似Windows的动态链接库,DLL文件。在Linux下后缀一般是SO)。

如果你只安装了Tengine,那么你只能用它的基础功能。如果你需要echo模块,你只需要继续安装Tengine-echo,稍作配置就能使用echo模块。无需重新编译Tengine,而且各种模块随心组合。

Tengine默认编译安装就支持DSO功能,除非指定了配置“--without-dso”选项。目前我们的软件仓库里已经集成了一些常用的Tengine模块。使用“yum search tengine”就可看到:

 

下面我用echo模块和realtime_request模块作演示。如果你还不了解这两个模块怎么用,可以先“yum info tengine-echo tengine-realtime_request”一把:

 

在YUM提供的包信息里有模块的基本信息,简单的说明、网址等。

仓库里的Tengine 使用jemalloc做了内存分配的加速,所以会自动安装jemalloc。默认支持LUA,而且使用了luajit加速,安装过程也会自动安装luajit:

 

我们可以看到默认已经集成了哪些模块“tengine -m。其中Static表示静态编译模块,直接打在Tengine的二进制里。Shared则是动态模块,可以动态加载或卸载。

Tengine的主配置文件为(/etc/tengine/tengine.conf):

 

其中的 dso {} 就是用于控制动态模块的,和PHP模块类似。我们先看一下(/etc/tengine/conf.d/tengine-standard-dso.ini):

 

这里就是我们已经打包的标准模块,默认随Tengine一起安装并启用。我们可以按需使用或卸载。

安装第三方模块,直接“sudo yum -y install tengine-echo tengine-realtime_request”即可,安装完成后会生成“/usr/lib64/tengine/modules /ngx_http_echo_module.so”和 “/usr/lib64/tengine/modules/ngx_http_realtime_request_module.so”动态库文件。为了方便管理,我们将第三方库放里,对应配置文件“/etc/tengine/conf.d/tengine-3rdparty-dso.ini”:

 

此时再查看Tengine的模块及支持的指令“tengine -l”:

 

然后我们先验证一下realtime_request模块的正确性,添加配置文件(/etc/tengine/vhost.d/realtime_request-demo.conf):

 代码如下 复制代码
realtime_zonesize  16m;
server {
    listen       9081 backlog=8192;
    server_name  realtime.request.demo;
    charset utf-8;
 
    location / {
        realtime_request on;
        access_log off;
        log_not_found off;
    }
}

访问对应页面即可看到各个vhost访问的统计信息:

 

然后再来验证一下echo模块的正确性,配置文件(/etc/tengine/vhost.d/echo.tengine.conf):

 代码如下 复制代码
server {
    listen       9082 default_server;
    server_name  echo.tengine.org;
    charset utf-8;
 
    location / {
        echo "hello, world!";
        access_log off;
        log_not_found off;
    }
}

打开对应页面即可看到echo打印的信息了:

 

是不是非常灵活、好用呢?

淘宝果然在国内IT界走在前沿,Tengine在淘宝的团队开发和维护下,已经越来越强大了。

时间: 2024-12-25 07:35:13

【图文】详解淘宝web服务器Tengine动态模块加载的使用方法的相关文章

淘宝Web服务器Tengine在CentOS下的安装教程_nginx

注:服务器环境为CentOS 一.简介 Tengine是由淘宝网发起的Web服务器项目.它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性.Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检验.它的最终目标是打造一个高效.稳定.安全.易用的Web平台. 从2011年12月开始,Tengine成为一个开源项目,Tengine团队在积极地开发和维护着它.Tengine团队的核心成员来自于淘宝.搜狗等互联网企业.Tengine是社区合作的成果,我们欢迎

淘宝 Web 服务器 Tengine 正式开源

我们很高兴的宣布由淘宝网核心系统部开发的Tengine服务器终于正式开源了. 淘宝网是亚洲最大的电子商务 网站,Alexa全球排名第12位.每天访问淘宝网的PV超过了几十亿.大压力的访问,对淘宝网的Web服务器提出了严苛的要求.经过一系列的对比,我们最终选择了Nginx作为我们的Web服务器,因为它性能高,又非常节省资源(CPU和内存),并且有足够的灵活性. 一开始我们使用Nginx还仅仅用它来处理静态文件.PHP等,接着我们又在Nginx上开发了几十个各种用途的模块.随着对Nginx的 越来越

windows系统下node.js环境配置与安装教程图文详解(详细版)_win服务器

国内目前关注最高,维护最好的一个关于nodejs的网站应该是http://www.cnodejs.org/ windows系统下简单nodejs环境配置. 第一步:下载安装文件 下载地址:官网https://nodejs.org/en/download/ 这里用的是 第二步:安装nodejs 下载完成之后,双击 node-v6.9.1-x64.msi,开始安装nodejs,默认是安装在C:\Program Files\nodejs下面 第三步:安装相关环境 打开C:\Program Files\

淘宝宝贝防盗图章怎么做?多图详解淘宝宝贝防盗图章制作方法

各位淘宝的买家卖家大家好.众所周知,一个吸引人驻足停留的淘宝店铺,一个顺利成交的宝贝,不仅在于其物美价廉的本质,图片的美观及真实性更另顾客重视!大家都不想自己辛辛苦苦拍摄及制作出来的照片轻易的就被人家盗用,拿来做他们店铺的"推荐宝贝"吧?!防盗水印社区已经有普遍介绍了,今天我给亲们介绍一款防盗图章,个人觉得放在宝贝里更显得专业,而且适用性广.那今天就跟我一起来学习PS制作"防盗图章"吧!先看一张成品的效果图哈: photoshop教程 可以看到右上角的一个图章&qu

Windows server 2008搭建php运行环境图文详解(php5.3)_win服务器

下载php组件包 首先到http://windows.php.net/download/下载你需要的php版本,这里我下载的是php5.3. 下面解压php组件 包到磁盘上. 安装Microsoft Visual C++ 2008 SP1 可再发行组件包 x86 版 在地址http://www.microsoft.com/zh-cn/download/details.aspx?id=5582下载安装Microsoft Visual C++ 2008 SP1 可再发行组件包 x86版.注意,这里下

详解Android 教你打造高效的图片加载框架

1.概述 优秀的图片加载框架不要太多,什么UIL , Volley ,Picasso,Imageloader等等.但是作为一名合格的程序猿,必须懂其中的实现原理,于是乎,今天我就带大家一起来设计一个加载网络.本地的图片框架.有人可能会说,自己写会不会很渣,运行效率,内存溢出神马的.放心,我们拿demo说话,拼得就是速度,奏事这么任性. 关于加载本地图片,当然了,我手机图片比较少,7000来张: 1.首先肯定不能内存溢出,但是尼玛现在像素那么高,怎么才能保证呢?我相信利用LruCache统一管理你

JavaScript中浅讲ajax图文详解_javascript技巧

1.ajax入门案例 1.1 搭建Web环境 ajax对于各位来说,应该都不陌生,正因为ajax的产生,导致前台页面和服务器之间的数据传输变得非常容易,同时还可以实现页面的局部刷新.通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新.这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新. 对于JavaWeb项目而言,ajax主要用于浏览器和服务器之间数据的传输. 如果是单单地堆砌知识点,会显得比较无聊,那么根据惯例,我先不继续介绍ajax,而是来写一个案例吧. 打开

图文详解远程部署ASP.NET MVC 5项目

原文:图文详解远程部署ASP.NET MVC 5项目 话外篇:        由于感觉自己的机器比较慢,配置不好,所以最近想把之前的项目部署到实验室的服务器上,但是由于常不在实验室,所以在想能不能远程部署.因此今天专门研究了一下具体的过程,下面和大家分享一下.本人新手,还望大虾勿喷,有什么问题,还望高手指点. 一.本文实验环境:       Windows Server 2012 R2       SQL Server 2012 Express      Visual Studio 2013  

高效运维之Docker持续部署图文详解

前言 关于Docker的文章铺天盖地,但精品文章往往翻译居多.都说Docker天生适合持续集成/持续部署,但同样,可落地.实际可操作性的文章也很少见. 基于这些情况,虽然我们专栏定位为运维管理性文字,但本篇是个特例,实操性的案例讲解--JAVA项目如何通过Docker实现持续部署(只需简单四步),即: 开发同学通过git push上传代码,经Git和Jenkins配合,自动完成程序部署.发布,全程无需运维人员参与. 这是一种真正的容器级的实现,这个带来的好处,不仅仅是效率的提升,更是一种变革: