[实战AWS EC2]六、基于Ubuntu,Tengine服务器构建Git管理NodeJs,Redis,MongoDB的网站(更新中)
发布于 1年前 作者 sogego 1285 次浏览

**技术交流加入QQ群:261654896 **

实战AWS EC2文章目录http://cnodejs.org/topic/5295e58aa6957a0809b0fe43

Tengine是Nginx的一个超集,它基于Nginx的最新稳定版本,对其核心进行扩展和增强,同时保持对Nginx的100%向后兼容性。使用Nginx为Web服务器的业务可以无缝迁移到Tengine。

Lua模块

基于降低Nginx模块开发难度的初衷,Lua模块(ngx_lua)将Lua嵌入进Nginx核心中,借助 于Lua的协程和Nginx的事件模型实现同步、非阻塞的I/O操作,开发者在Nginx配置文件中可串行同步编写Lua脚本来处理业务逻辑,既可以用它来黏合各种上游(Proxy、Drizzle、Redis、Memcached等)的输出,也可以使用它的Cosocket接口来编写访问上游的客户端。得益于Lua解释器极低的开销和JIT技术(LuaJIT),用户不用编写复杂的C模块就能获得极高的吞吐性能。也可以动态更改逻,不用再重新编译Nginx代码,从而带来了极大的灵活性。

Concat模块

可以组合多个JavaScript和CSS请求变成一个,从而降低下载时间,提高用户体验。该模块对于提高前端的响应时间非常有用。

Sysguard模块

在系统的Load或者内存(Swap)使用超过一定阈值或比例时返回等待页面,从而保护服务器。

User_agent模块

利用trie结构,扫描浏览器和爬虫的种类,定义$browser和$os变量,比Nginx的Browser模块更加 灵活且性能更高。

** Footer模块**

在响应内容后添加一段内容。可用来添加Host信息,对定位大量服务器中出问题的个别机器很有用。 ** Slice模块**

用来访问一个文件中的一个片段,可以指定开始和结束的偏移值也可以增加头和尾。

** Backtrace模块**

在遇到异常如崩溃时将调用栈输出到日志以便于问题定位。

** 主动式Upstream健康检查模块**

可以对后端的HTTP、HTTPS、MySQL等类型的服务器定期发起心跳包,维护后端的健康情况,当 服务器不可用时,就不再向其发送实际请求。实现了Tengine与后端服务器的高可用。

以上是来自TMD对Tengine的描述,经过我的查证以下的网站Web服务器全是使用的Tengine
可以alibaba技术团队对Tengine的重视,事实上它就是对nginx提供了更多的module而已

淘宝网:www.taobao.com

天猫:www.tmall.com

一淘:www.etao.com

阿里妈妈:www.alimama.com

阿里云:www.aliyun.com

云OS:www.yunos.com

阿里巴巴中国站:www.1688.com

全球速卖通:www.aliexpress.com

安装过程也十分简单

先进到到某个目录比如 /soft

git clone git://github.com/alibaba/tengine.git

cd tengine

./configure

make

sudo make install

**启动Tengine **
事实上Tengine安装后的目录还是nginx的目录

sudo /usr/local/nginx/sbin/nginx

当修改了nginx.conf文件

sudo /usr/local/nginx/sbin/nginx -s reload

可以使用nginx -m来查看所有的module

sudo /usr/local/nginx/sbin/nginx -m

可以使用nginx -l来查看所有可用的方法

sudo /usr/local/nginx/sbin/nginx -l

**因为concat module没有默认安装到Tenginx所以要执行–with-http_concat_module,这个module的作用就是一次性的读到所有的js文件或是css文件。 **

比如:http://phoneqq.com/javascripts/??a.js,b.js,c.js?v=123
或者:http://sogego.com/stylesheets/??a.css,b.css,c.css?v=456

#为了使用Lua语言先要安装lua5.1,如下操作

-------安装 module----

**在任何目录下执行 安装taobao的lua **

sudo apt-get install lua5.1

sudo apt-get install liblua5.1-dev

cd /soft 目录

**下载NDK、lua模块、redis模块,来自淘宝 **

git clone https://github.com/simpl/ngx_devel_kit.git

git clone https://github.com/chaoslawful/lua-nginx-module.git

git clone https://github.com/agentzh/redis2-nginx-module.git

git clone https://github.com/agentzh/set-misc-nginx-module.git

git clone https://github.com/agentzh/echo-nginx-module.git

cd tengine 源代码目录 ,我们当时载到了/soft目录下,也就是/soft/tengine目录,执行configure,如下:添加了上面的module,其中concat和sysguard要用tengine自带的with,而不是add-module,因为tengine默认包括了它们两个module

./configure --with-http_concat_module --with-http_sysguard_module --add-module=…/ngx_devel_kit --add-module=…/lua-nginx-module --add-module=…/redis2-nginx-module --add-module=…/set-misc-nginx-module --add-module=…/echo-nginx-module

sudo make

sudo make install

**如果已安装nginx,不需要执行这一步,只要make就行了。 **

**安装lua-redis-parser lua-redis-parser为本机编译链接库,不是nginx module **

cd /soft 目录

git clone https://github.com/agentzh/lua-redis-parser.git

cd lua-redis-parser

export LUA_INCLUDE_DIR=/usr/include/lua5.1

make CC=gcc

make install CC=gcc

#最后,有关tengine(nginx)操作lua,快速读取redis的,接下来再讨论

回到顶部