Tengine高性能部署之——安装篇

一、Tengine简介

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

二、功能描述

  • 继承Nginx-1.6.2的所有特性,兼容Nginx的配置;
  • 动态模块加载(DSO)支持。加入一个模块不再需要重新编译整个Tengine;
  • 支持SO_REUSEPORT选项,建连性能提升为官方nginx的三倍;
  • 支持SPDY v3协议,自动检测同一端口的SPDY请求和HTTP请求;
  • 流式上传到HTTP后端服务器或FastCGI服务器,大量减少机器的I/O压力;
  • 更加强大的负载均衡能力,包括一致性hash模块、会话保持模块,还可以对后端的服务器进行主动健康检查,根据服务器状态自动上线下线,以及动态解析upstream中出现的域名;
  • 输入过滤器机制支持。通过使用这种机制Web应用防火墙的编写更为方便;
  • 支持设置proxy、memcached、fastcgi、scgi、uwsgi在后端失败时的重试次数
  • 动态脚本语言Lua支持。扩展功能非常高效简单;
  • 支持管道(pipe)和syslog(本地和远端)形式的日志以及日志抽样;
  • 支持按指定关键字(域名,url等)收集Tengine运行状态;
  • 组合多个CSS、JavaScript文件的访问请求变成一个请求;
  • 自动去除空白字符和注释从而减小页面的体积
  • 自动根据CPU数目设置进程个数和绑定CPU亲缘性;
  • 监控系统的负载和资源占用从而对系统进行保护;
  • 显示对运维人员更友好的出错信息,便于定位出错机器;
  • 更强大的防攻击(访问速度限制)模块;
  • 更方便的命令行参数,如列出编译的模块列表、支持的指令等;
  • 可以根据访问文件类型设置过期时间;

三、下载并解压

tengine的下载地址:   http://tengine.taobao.org/

我们在linux下下载tengine:

# wget http://tengine.taobao.org/download/tengine-2.1.1.tar.gz

解压tengine-2.1.1.tar.gz:

# tar -zxvf tengine-2.1.1.tar.gz

进入解压后的目录:

cd tengine-2.1.1/

安装需要的依赖软件包:

# yum -y install gcc openssl openssl-devel pcre-devel pcre ngx_cache_purge

四、编译安装Tengine

调用configure

./configure --prefix=/usr/local/tengine-2.1.1 --dso-path=/usr/local/tengine-2.1.1/modules --with-http_realip_module --with-http_gzip_static_module --with-http_stub_status_module --with-http_concat_module --http-log-path=/var/log/tengine-2.1.1/access.log --error-log-path=/var/log/tengine-2.1.1/error.log

编译tengine-2.1.0并安装:

make && make install

五、启动Tengine

/usr/local/tengine-2.1.1/sbin/nginx

chown nobody.nobody -R /usr/local/tengine-2.1.1/html

chmod 700 -R /usr/local/tengine-2.1.1/html

六、编辑Tengine服务脚本

vi /etc/rc.d/init.d/tengine

#!/bin/sh

#

#nginx - this script starts and stops the nginx daemon

#

# chkconfig:   - 85 15

# processname: nginx

# config:      /usr/local/tengine-2.1.1/conf/nginx.conf

# pidfile:     /usr/local/tengine-2.1.1/logs/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="/usr/local/tengine-2.1.1/sbin/nginx"

prog=$(basename $nginx)

lockfile="/var/lock/subsys/nginx"

pidfile="/usr/local/tengine-2.1.1/logs/${prog}.pid"

NGINX_CONF_FILE="/usr/local/tengine-2.1.1/conf/nginx.conf"

start() {

[ -x $nginx ] || exit 5

[ -f $NGINX_CONF_FILE ] || exit 6

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 -p $pidfile $prog

retval=$?

echo

[ $retval -eq 0 ] && rm -f $lockfile

return $retval

}

restart() {

configtest_q || return 6

stop

start

}

reload() {

configtest_q || return 6

echo -n $"Reloading $prog: "

killproc -p $pidfile $prog -HUP

echo

}

configtest() {

$nginx -t -c $NGINX_CONF_FILE

}

configtest_q() {

$nginx -t -q -c $NGINX_CONF_FILE

}

rh_status() {

status $prog

}

rh_status_q() {

rh_status >/dev/null 2>&1

}

# Upgrade the binary with no downtime.

upgrade() {

local oldbin_pidfile="${pidfile}.oldbin"

configtest_q || return 6

echo -n $"Upgrading $prog: "

killproc -p $pidfile $prog -USR2

retval=$?

sleep 1

if [[ -f ${oldbin_pidfile} && -f ${pidfile} ]];  then

killproc -p $oldbin_pidfile $prog -QUIT

success $"$prog online upgrade"

echo

return 0

else

failure $"$prog online upgrade"

echo

return 1

fi

}

# Tell nginx to reopen logs

reopen_logs() {

configtest_q || return 6

echo -n $"Reopening $prog logs: "

killproc -p $pidfile $prog -USR1

retval=$?

echo

return $retval

}

case "$1" in

start)

rh_status_q && exit 0

$1

;;

stop)

rh_status_q || exit 0

$1

;;

restart|configtest|reopen_logs)

$1

;;

force-reload|upgrade)

rh_status_q || exit 7

upgrade

;;

reload)

rh_status_q || exit 7

$1

;;

status|status_q)

rh_$1

;;

condrestart|try-restart)

rh_status_q || exit 7

restart

;;

*)

echo $"Usage: $0 {start|stop|reload|configtest|status|force-reload|upgrade|restart|reopen_logs}"

exit 2

esac

;wq保存退出

赋予文件执行权限:

# chmod 775 /etc/rc.d/init.d/tengine

设置开机启动:

# chkconfig tengine on

重启Tengine:

# service tengine restart

七、隐藏Tengine版本信息

即在tengine配置文件nginx.conf中的

http{

server_tokens off;

server_info off;

server_tag off;

}  中写入上面三句重启服务即可

到此,Tengine编译安装也就完成了,关于Tengine性能上的优化在这就不阐述了,可以参考自己的服务器配置信息及生产环境所需做必要的内核与其他相关参数的修改。

时间: 2024-10-10 14:41:46

Tengine高性能部署之——安装篇的相关文章

zabbix监控之zabbix源码部署 (安装篇)

[本文档所介绍的内容适用于公司测试/生产环境等常见的zabbix监控系统部署] 一:Zabbix部署前环境要求: 1.1相关软件以及系统 系统要求:Centos 6.6 (64位) 运行环境要求: php环境(LAMP或 LNMP) 相关中间件:zabbix-2.4.6.tar.gz 1.2 检查系统自带是否安装Zabbix软件包 rpm -qa | grep zabbix 如有安装,请使用以下命令卸载相关程序 yum remove zabbix 二:zabbix正式部署安装 2.1 zabbi

Tengine高性能部署之—日志分割

一.日志分割的要求 由于 Tengine 的日志都是写在一个文件当中的,因此,我们需要每天零点将前一天的日志存为另外一个文件,这里我们就将 Tengine 位于 logs 目录中的 access.log 存为 access_[yyyy-MM-dd].log 的文件.其实 logs 目录中还有个 error.log 的错误日志文件,这个文件也需要每天切割一个,在这里就说 access.log 了,error.log 的切割方法类似. 二.Linux平台下的日志分割 在 Linux 平台上进行切割,

Tengine高性能部署之—负载均衡配置

负载均衡是我们大流量网站要做的一个东西,下面我来给大家介绍在Tengine服务器上进行负载均衡配置方法,希望对有需要的同学有所帮助哦. 用vim编辑器打开配置文件nginx.conf;在http{ }中间写入 upstream www.vm.cn{ server 192.168.1.116:80 weight=5; server 192.168.1.114:80 weight=5; } .....#上面是代理的内网web服务器ip 再location / { 写入 proxy_pass http

LAMP部署脚本--安装篇

#!/bin/bash # By Stranded 2015-08-20 CMA_V=cmake-2.8.6 APA_V=httpd-2.2.15 MYS_V=mysql-5.5.22 LIB_V=libmcrypt-2.5.8 MHA_V=mhash-0.9.9.9 MCR_V=mcrypt-2.6.8 PHP_V=php-5.3.28 apache(){ # 判断是否有RPM方式安装的httpd.httpd-manual软件包,如果有则卸载 if [ $(rpm -qa | grep htt

Lucene/Solr搜索引擎开发系列 - 第2章 Solr安装与部署(Tomcat篇)

一.安装环境 图1-1 Tomcat和Solr的版本     我本机目前使用的Java版本为JDK 1.8,因为Solr 4.9要求Java版本为1.7+,请注意. 二.Solr部署到Tomcat流程 图1-2 Tomcat安装目录     1.如图1-2所示,为Tomcat的解压目录: 图1-3 Tomcat首页     2.在目录E:\apache-tomcat-8.0.9\bin中,找到startup.bat文件,双击该文件,启动Tomcat服务器,等待几秒钟后,在浏览器中输入http:/

MongoDB安装篇-Win7 X64

介绍 MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案. MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的.他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型.Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引. 它的特点是高性能

SystemTap 学习笔记 - 安装篇

https://segmentfault.com/a/1190000000671438 在安装前,需要知道下自己的系统环境,我的环境如下: uname -r 2.6.18-308.el5 Linux 2.6.18-308.el5 #1 SMP Tue Feb 21 20:06:06 EST 2012 x86_64 x86_64 x86_64 GNU/Linux 安装 为了部署 SystemTap,需要安装以下两个 RPM 包: systemtap systemtap-runtime 以 root

ansible(一)安装篇

研究了一个多礼拜saltstack,这东西除了偶尔不稳定之外,感觉啥活都能干.楼主,趁着没事, 再研究下ansible吧. 打开ansible官网,两行文字映入眼帘. Ansible is the simplest way to automate IT. 意思是ansible是IT管理最简单的方法,简单归简单,不知道干的活有没有saltstack多了?.下面就开始楼主的ansible之旅了. ansible有啥特点呢? 还是官网首页?最下面的三块,简单用楼主的中国式英语翻译下. 简单,ansib

k8s入门系列之扩展组件(一)DNS安装篇

DNS (domain name system),提供域名解析服务,解决了难于记忆的IP地址问题,以更人性可读可记忆可标识的方式映射对应IP地址. Cluster DNS扩展插件用于支持k8s集群系统中各服务之间发现与调用. 组件: ?SkyDNS 提供DNS解析服务 ?Etcd 存储DNS信息 ?Kube2sky 监听kubernetes,当有Service创建时,生成相应的记录到SkyDNS. 本文章的实验环境与<k8s入门系列之集群安装篇>介绍中一致.master(1) + node(4