CentOS 7.4 Tengine安装配置详解(一)

一、安装配置Tengine

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

演示环境:

?  OS:CentOS 7.4 x86_64

?  IP:192.168.1.222

1、安装开发环境:# yum -y groupinstall "Development Tools" "Server Platform Development"

2、安装依赖程序包:

# yum -y install libxml2-devel libxslt-devel gd-devel GeoIP-devel google-perftools-devel libatomic_ops-devel cmake

3、解压pcreperl兼容的正则表达式库,下载地址:https://ftp.pcre.org/pub/pcre/):

# tar -xf pcre-8.42.tar.gz -C /usr/src  # ls /usr/src/pcre-8.42

4、解压openssl(安全套接字层密码库,下载地址:https://www.openssl.org/source/):

# tar -xf openssl-1.0.2o.tar.gz -C /usr/src  # ls /usr/src/openssl-1.0.2o

5、解压zlib(提供数据压缩用的函式库,下载地址:http://www.zlib.net/):

# tar -xf zlib-1.2.11.tar.gz -C /usr/src  # ls /usr/src/zlib-1.2.11

6、使用TCMalloc优化Tengine性能:

TCMalloc是谷歌开发的开源工具google-perftools中的一员,与标准的glibc库的Malloc相比,TCMalloc库在内存分配效率和速度上要高很多,这在很大程度上提高了服务器在高并发情况下的性能,从而降低了系统的负载。要安装TCMalloc库,需要安装libunwind库(32位操作系统不需要安装)和google-perftools程序包,libunwind库为基于64位CPU和操作系统的程序提供了基本函数调用链和函数调用寄存器功能。

(1)编译安装libunwind库(下载地址:http://download.savannah.nongnu.org/releases/libunwind/):

# tar -xf libunwind-1.2.tar.gz -C /usr/src

# cd /usr/src/libunwind-1.2

# ./configure

# make && make install

(2)编译安装google-perftools(下载地址:https://github.com/gperftools/gperftools/releases):

# tar -xf gperftools-2.7.tar.gz -C /usr/src

# cd /usr/src/gperftools-2.7

# ./configure --enable-libunwind --enable-frame-pointers --enable-emergency-malloc

# make && make install

//为google-perftools添加线程目录,并修改目录权限

# mkdir -pv /tmp/tcmalloc

# chmod -R 0777 /tmp/tcmalloc

7、安装淘宝分布式文件系统TFS所需的yajl库(开源的JSON库,下载地址http://lloyd.github.io/yajl/):

# tar -xf lloyd-yajl-2.1.0-0-ga0ecdde.tar.gz -C /usr/src

# cd /usr/src/lloyd-yajl-66cb08c

# ./configure

# make && make install

# ln -sv /usr/local/lib/libyajl.so.2 /usr/lib64/libyajl.so.2

8、添加Tengine用户和组:

# groupadd -r tengine  # useradd -g tengine -r -s /sbin/nologin tengine  # id tengine

9、编译安装Tengine

# tar -xf tengine-2.2.2.tar.gz -C /usr/src

# cd /usr/src/tengine-2.2.2

# ./configure --prefix=/usr/local/tengine --user=tengine --group=tengine --with-threads --with-file-aio --with-force-exit --with-mail --with-pcre-jit --with-libatomic --http-log-path=/usr/local/tengine/logs/access.log --with-google_perftools_module --with-pcre=/usr/src/pcre-8.42 --with-openssl=/usr/src/openssl-1.0.2o --with-zlib=/usr/src/zlib-1.2.11

备注:按上述方法configure,编译安装Tengine后,/usr/local/tengine/modules目录为空,所有模块均以静态方式编译。

# make && make install            //所需时间较长

10、显示Tengine帮助信息:# /usr/local/tengine/sbin/nginx -h

说明:

?  -h:显示帮助信息

?  -v:显示Tengine版本

?  -m:显示所有静态编译的模块

?  -l:显示所有可配置的指令

?  -V:显示版本、编译安装时的选项、所有静态编译的模块

?  -t:检查Tengine配置文件语法

?  -s [stop | quit | reopen | reload]:关闭 | 退出 | 重新打开 | 重载Tengine

11、配置Tengine

(1)导出二进制程序目录至PATH环境变量中:

# vim /etc/profile.d/tengine.sh  -->  export PATH=/usr/local/tengine/sbin:$PATH

# . /etc/profile.d/tengine.sh

# echo $PATH

(2)导出头文件:# ln -sv /usr/local/tengine/include /usr/include/tengine-2.2.2

(3)修改目录权限:# chown -R tengine.tengine /usr/local/tengine

(4)加载google-perftools:

修改配置文件/usr/local/tengine/conf/nginx.conf,在#pid  logs/nginx.pid;下新增如下代码:

google_perftools_profiles /tmp/tcmalloc;

12、启动Tengine,并验证上述配置:

(1)启动Tengine:# nginx -t  # nginx  # ss -tunlp | grep :80  # ps aux | grep nginx

由于配置文件中worker_processes的值为1,所以默认只开启一个worker进程

(2)浏览器中输入http://192.168.1.222

(3)测试tcmalloc:# yum -y install lsof  # lsof -n | grep tcmalloc

备注:因为只开启了一个worker线程,每个线程会有一行记录,每个线程文件后的数值就是启动的Tengine的PID值。

二、配置文件nginx.conf常见配置项优化:

# cd /usr/local/tengine/conf

# cp nginx.conf nginx.conf.bak

# vim nginx.conf

======================================================================================

user tengine;                    # 运行worker进程的用户

worker_processes auto;           # worker进程的个数,命令ps aux | grep nginx可查看启动的worker进程数量

worker_cpu_affinity auto;         # worker进程绑定在哪些CPU上,减少由于上下文切换导致的CPU消耗

worker_rlimit_nofile 65535;       # worker进程能够打开的最大文件数限制

error_log logs/error.log error;     # 指定Tengine错误日志的存放路径和级别

pid logs/nginx.pid;              # 指定Tengine进程的pid文件路径

google_perftools_profiles /tmp/tcmalloc;   # tcmalloc保存路径,命令lsof -n | grep tcmalloc验证运行状态

events {

accept_mutex on;           # 让多个worker进程轮流地、序列化地响应新请求

multi_accept on;            # Tengine接收到一个新连接通知后,调用accept()来接收尽可能多的连接

worker_connections 65535;   # 单个worker进程所能响应的最大并发连接数

# 此处没有指定use epoll;指令,让Tengine自动选择合适的事件处理模型

}

http {

server_tokens off;           # 隐藏Tengine版本号

include mime.types;         # MIME是网络资源的媒体类型,使用include指令导入mime.types文件

default_type application/octet-stream;   # 指定默认类型

# 自定义访问日志格式,名称为main,指定要保存的日志内容

# ====================================================

# $remote_addr$http_x_forwarded_for含义相同:客户端的IP地址

# $remote_user:记录客户端用户名称

# $time_local:通用日志格式下的本地服务器时间

# $request:记录请求的URLHTTP协议

# $status:响应状态码,成功是200

# $body_bytes_sent:发送给客户端HTTP响应的主体内容的字节数大小,不包括响应首部的大小

# $http_referer:记录从哪个页面链接访问过来的

# $http_user_agent:记录客户端浏览器相关信息

# ====================================================

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

                  '$status $body_bytes_sent "$http_referer" '

                 '"$http_user_agent" "$http_x_forwarded_for"';

access_log off;       # 关闭访问日志,提高磁盘的I/O性能

sendfile on;          # 开启高效文件传输模式,调用sendfile()进行数据复制,sendfile()复制数据是在内核级别完成的,所以会比一般的read()write()更高效,sendfile()可以在磁盘和TCP socket之间互相拷贝数据

tcp_nopush on;      # 开启后服务器的响应头部信息产生独立的数据包发送,即一个响应头信息一个包。在一个数据包里发送所有头文件,而不是一个接一个的发送,用于防止网络阻塞,必须先开启sendfile模式

keepalive_timeout 65; # 客户端keep-alive连接超时时长,服务器将在这个超时时长过后关闭连接,单位秒

charset UTF-8;      # 定义头文件默认字符集

gzip on;                      # 采用gzip压缩形式发送数据,将页面压缩后传输更节省带宽

gzip_disable "msie6";           # IE6的浏览器禁用gzip功能

gzip_proxied any;              # 指定对客户端请求的所有资源启用压缩功能

gzip_min_length 1k;            # 指定对数据启用压缩的最少字节数,如果请求小于1K的文件,不要压缩,压缩小数据会降低处理此请求的所有进程速度

gzip_comp_level 6;             # 指定数据的压缩等级,这个等级可以是1~9之间的任意数值,1压缩比最小但处理速度最快,9处理最慢但压缩比最大,CPU消耗也越大

gzip_buffers 16 8k;             # 指定压缩响应的缓冲区的数量和大小

gzip_vary on;                 # 允许把"Vary: Accept-Encoding"插入响应首部

gzip_http_version 1.1;          # 指定识别HTTP协议版本,默认是1.1

gzip_types text/plain text/css text/xml text/javascript application/json application/x-javascript application/xml application/xml+rss;               # 指定需要压缩的资源类型

reset_timedout_connection on;       # 关闭不响应的客户端连接,释放客户端所占的内存空间

client_body_buffer_size 8k;         # 指定用于读取客户端请求主体的缓冲区大小

client_header_buffer_size 1k;       # 指定用于读取客户端请求首部的缓冲区大小

large_client_header_buffers 4 8k;    # 指定用于读取客户端请求中较大首部的缓冲区的最大数量和大小

client_max_body_size 1m;          # 指定用于客户端请求主体的最大大小

client_header_timeout 30s;         # 指定用于读取客户端请求报文首部的超时时长,单位秒

client_body_timeout 30s;           # 指定用于读取客户端请求报文主体的超时时长,单位秒

send_timeout 30s;                 # 指定用于向客户端发送响应报文的超时时长,单位秒

}

======================================================================================

# nginx -t  # nginx -s reload  # ps aux | grep nginx  # lsof -n | grep tcmalloc

原文地址:http://blog.51cto.com/qiuyue/2114716

时间: 2024-10-12 14:45:29

CentOS 7.4 Tengine安装配置详解(一)的相关文章

CentOS 7.4 Tengine安装配置详解(五)

十四.配置Tengine支持HTTPS 1.演示环境: IP 操作系统 角色 192.168.1.222 CentOS   7.4 Tengine服务器 192.168.1.145 CentOS   6.9 自建CA服务器 备注:Tengine和CA可以部署于同一台服务器 2.修改配置文件nginx.conf,创建基于主机名的虚拟主机: server { listen 80; server_name web.vhosts.com; location / { root /vhosts/web; i

CentOS 7.4 Tengine安装配置详解(六)

十五.反向代理: 1.演示环境: IP 操作系统 节点 角色 192.168.1.222 CentOS 7.4 node1 Tengine服务器 192.168.1.144 CentOS 6.9 node2 Apache服务器 2.node2安装Apache服务,并创建测试页: # yum -y install httpd # mkdir -pv /var/www/html/bbs # echo "<h3>httpd on node2</h3>" > /v

CentOS 7.4 Tengine安装配置详解(二)

三.配置虚拟主机: 1.配置基于端口的虚拟主机: (1)在http{}配置段中新增如下server: server { listen 8000; server_name localhost; access_log /usr/local/tengine/logs/localhost8000-access.log main; location / { root /vhosts/web; index index.html index.htm; } } (2)创建测试页:# mkdir -pv /vho

CentOS 7.4 Tengine安装配置详解(三)

九.根据HTTP响应状态码自定义错误页: 1.未配置前访问一个不存在的页面:http://192.168.1.222/abc/def.html,按F12后刷新页面 2.在server{}配置段中新增如下location: server { listen 80; server_name localhost; location /bbs { root /vhosts/bbs; error_page 404 404/404.html; } } 3.创建目录,并上传自定义错误页:# mkdir -pv

CentOS 7.4 Tengine安装配置详解(四)

十三.将请求的URL基于正则表达式进行rewrite重写 使用Tengine提供的全局变量或自定义变量,结合正则表达式和标志位实现URL重写以及重定向,通常可以实现http跳转至https.域名1跳转至域名2.URL1跳转至URL2等功能. 1. Perl兼容正则表达式: ?  .:匹配除换行符\n以外的任意单个字符 ?  ?:匹配之前的字符0次或1次 ?  +:匹配之前的字符至少1次 ?  *:匹配之前的字符任意次 ?  \d:匹配数字 ?  ^:匹配字符串的开始 ?  $:匹配字符串的结尾

CentOS 7.4 Tengine安装配置详解(七)

十六.缓存及缓存清理 1.修改node1配置文件nginx.conf: (1)在http配置段中增加如下代码: proxy_cache_path /usr/local/tengine/cache levels=1:1:2 keys_zone=mycache:200m inactive=15d max_size=100g; 备注: ?  levels=1:1:2表示1个字符的一级缓存目录和二级缓存目录,2个字符的三级缓存目录 ?  keys_zone=mycache:200m表示缓存名称为myca

samba 4.7.16 安装配置详解

系统:Centos 7.4 x64位 服务版本:samba-4.7.1.samba-client-4.7 Samba 简介 Samba 是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成. Samba最大的功能就是可以用于Linux与windows系统直接的文件共享和打印共享,Samba既可以用于windows与Linux之间的文件共享,也可以用于Linux与Linux之间的资源共享. Samba由两个主要程序组成,它们是smbd和nmbd.这两个守护进程在服务

使用LVS实现负载均衡原理及安装配置详解

转:http://www.cnblogs.com/liwei0526vip/p/6370103.html 使用LVS实现负载均衡原理及安装配置详解 负载均衡集群是 load balance 集群的简写,翻译成中文就是负载均衡集群.常用的负载均衡开源软件有nginx.lvs.haproxy,商业的硬件负载均衡设备F5.Netscale.这里主要是学习 LVS 并对其进行了详细的总结记录. 一.负载均衡LVS基本介绍 LB集群的架构和原理很简单,就是当用户的请求过来时,会直接分发到Director

使用 LVS 实现负载均衡原理及安装配置详解

使用 LVS 实现负载均衡原理及安装配置详解 来源:肖邦linux 发布时间:2017-02-19 阅读次数:106 0 负载均衡集群是 load balance 集群的简写,翻译成中文就是负载均衡集群.常用的负载均衡开源软件有nginx.lvs.haproxy,商业的硬件负载均衡设备F5.Netscale.这里主要是学习 LVS 并对其进行了详细的总结记录. 一.负载均衡LVS基本介绍 LB集群的架构和原理很简单,就是当用户的请求过来时,会直接分发到Director Server上,然后它把用