热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

CentOS6.4配置Tengine(转)

CentOS6.4配置Tengine1、安装Nginx所需的pcre-devel库yuminstall-ygccgcc-c++wgetftp:ftp.csx.cam.ac.ukpu

1、安装Nginx所需的pcre-devel库

yum install -y gcc gcc-c++
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.33.tar.gz
tar zxvf pcre-8.33.tar.gz
cd pcre-8.33
./configure --prefix=/usr/local/pcre make
make install
 

 2、安装Tengine

 
yum install openssl openssl-devel
wget http://tengine.taobao.org/download/tengine-1.5.1.tar.gz
tar zxvf tengine-1.5.1.tar.gz
cd tengine-1.5.1
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-pcre=/usr/local/pcre-8.33
make
make install
 

注意:--with-pcre=/usr/local/software/pcre-8.33 指定的是源码包解压的路径
3、配置Tengine

创建用户组和用户

groupadd www
useradd -g www www

编辑主配置文件

vi /usr/local/nginx/conf/nginx.conf
 
user www www;   #指定运行的用户和用户组
worker_processes  4;    #指定要开启的进程数,一般为CPU的核心数或两倍
error_log  logs/error.log  crit;        #全局日志 debug|info|notice|warn|error|crit
pid        logs/nginx.pid;      #指定进程id的存储文件位置
worker_rlimit_nofile 65535;

events {
    use epoll;  #对于Linux系统epoll工作模式是首选
    worker_connections  65536;  #每个进程的最大连接数
    #在执行操作系统命令"ulimit -n 65536"后worker_connections的设置才能生效
}


http {
    include       mime.types;
    default_type  application/octet-stream;
    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  logs/access.log  main;
    charset  utf-8;

    server_names_hash_bucket_size 256;
    client_header_buffer_size 32k;
    large_client_header_buffers 4 128k; #最大缓存为4个128KB
    client_max_body_size 20m;   #允许客户端请求的最大的单个文件字节数

    sendfile on;        #开启高效文件传输模式
    tcp_nopush on;      #用于防止网络阻塞
    tcp_nodelay on;     #用于防止网络阻塞

    keepalive_timeout  60;      #超过这个时间之后服务器会关闭该连接
    client_header_timeout 10;   #客户端请求头读取超时时间,超过这个时间客户端还没发数据NGINX就返回408错误
    client_body_timeout 10;     #客户端请求主体读取超时时间,超过这个时间客户端还没发数据NGINX就返回408错误

    server_tokens on;   #不显示nginx版本信息

    include gzip.conf;  #HttpGzip的配置文件
    include proxy.conf; #配置代理文件
    include vhost.conf; #虚拟主机的配置文件
    include backend.conf;       #配置后端的服务器列表文件

}
 

limit_req_zone $binary_remote_addr zOne=req_one:10m rate=1r/s;
#10m是会话状态存储空间 rate=1r/s是每个地址每秒只能请求一次   (在vhost.conf还有配置)
limit_conn_zone $binary_remote_addr zOne=req_one:10m;
#设置IP并发  (在vhost.conf还有配置)
编辑HttpGzip的配置文件

vi /usr/local/nginx/conf/gzip.conf
 
gzip on;
gzip_min_length 1k;     #设置允许压缩的页面最小字节数。
gzip_buffers 4 16k;     #用来存储gzip的压缩结果
gzip_http_version 1.1;  #识别HTTP协议版本
gzip_comp_level 2;      #设置gzip的压缩比 1-9 1压缩比最小但最快 9相反
gzip_types text/plain application/x-Javascript text/css application/xml;        #指定压缩类型
gzip_proxied any;       #无论后端服务器的headers头返回什么信息,都无条件启用压缩
gzip_vary on;
gzip_disable "MSIE [1-6].";     #禁用IE6的gzip压缩
 

编辑代理文件

vi /usr/local/nginx/conf/proxy.conf
 
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_body_buffer_size  512k;
proxy_connect_timeout 30;
proxy_read_timeout 30;
proxy_send_timeout 30;
proxy_buffer_size 32k;
proxy_buffers 4 64k;
proxy_busy_buffers_size 128k;
 

编辑虚拟主机的配置文件

vi /usr/local/nginx/conf/vhost.conf
 
server {
    listen 80;
    server_name localhost;
    index index.jsp index.htm index.html;
    root /usr/local/tomcat7/webapps/ROOT;

    location / {
proxy_pass http://backend; proxy_pass_header Set-COOKIE; } location /NginxStatus { stub_status on; access_log off; auth_basic "NginxStatus"; } }

location ~ .*\.(zip|thumb)$ {
        root /usr/local/download;
    limit_conn req_one 1;    #IP下载并发为1  req_one在nginx.conf中配置的 limit_conn_zone $binary_remote_addr zOne=req_one:10m;
        limit_rate 500k;        #限速500k
        expires 30d;
    }

limit_req zOne=req_one burst=100; #req_one在nginx.conf中有配置,当超过rate时请求就会放到burst中burst也满了就503 req_one在nginx.conf中配置的 llimit_req_zone $binary_remote_addr zOne=req_one:10m rate=100r/s;

limit_rate_after 3m;
limit_rate 512k;    这两句话的意思是先以最快的速度下载3MB,然后再以512KB的速度下载。

将扩展名为zip,thumb的静态文件都交给Nginx处理,root为静态文件的目录,而expires用为指定静态文件的过期时间30天。

location ~ ^/(upload|download)/ {
        root /usr/local;
        expires 30d;
}

将upload,download下的所有文件都交给Nginx处理,upload和download目录包含在/usr/local目录中

编辑后端的服务器列表文件

vi /usr/local/nginx/conf/backend.conf
upstream backend {
    ip_hash;
    server 127.0.0.1:8080 max_fails=1 fail_timeout=60s;
}

4、设置Tengine开机启动 

vi /etc/rc.d/init.d/nginx 
 
#!/bin/bash
# Tengine Startup script# processname: nginx
# chkconfig: - 85 15
# description: nginx is a World Wide Web server. It is used to serve
# pidfile: /var/run/nginx.pid
# config: /usr/local/nginx/conf/nginx.conf
nginxd=/usr/local/nginx/sbin/nginx
nginx_cOnfig=/usr/local/nginx/conf/nginx.conf
nginx_pid=/usr/local/nginx/logs/nginx.pid
RETVAL=0
prog="nginx"
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0
[ -x $nginxd ] || exit 0
# Start nginx daemons functions.
start() {
if [ -e $nginx_pid ];then
echo "tengine already running...."
exit 1
fi
echo -n $"Starting $prog: "
daemon $nginxd -c ${nginx_config}
RETVAL=$?
echo
[ $RETVAL = 0 ] && touch /var/lock/subsys/nginx
return $RETVAL
}
# Stop nginx daemons functions.
stop() {
echo -n $"Stopping $prog: "
killproc $nginxd
RETVAL=$?
echo
[ $RETVAL = 0 ] && rm -f /var/lock/subsys/nginx /usr/local/nginx/logs/nginx.pid
}
reload() {
echo -n $"Reloading $prog: "
#kill -HUP `cat ${nginx_pid}`
killproc $nginxd -HUP
RETVAL=$?
echo
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
reload)
reload
;;
restart)
stop
start
;;

status)
status $prog
RETVAL=$?
;;
*)
echo $"Usage: $prog {start|stop|restart|reload|status|help}"
exit 1
esac
exit $RETVAL
 

保存退出

chmod 775 /etc/rc.d/init.d/nginx   #赋予文件执行权限
chkconfig  --level 012345 nginx on   #设置开机启动
service nginx start

 5、其他

技术分享

技术分享

CentOS6.4 配置Tengine(转)


推荐阅读
  • 如何在PHP中安装Xdebug扩展
    本文介绍了如何从PECL下载并编译安装Xdebug扩展,以及如何配置PHP和PHPStorm以启用调试功能。 ... [详细]
  • 我的读书清单(持续更新)201705311.《一千零一夜》2006(四五年级)2.《中华上下五千年》2008(初一)3.《鲁滨孙漂流记》2008(初二)4.《钢铁是怎样炼成的》20 ... [详细]
  • 本文探讨了程序员这一职业的本质,认为他们是专注于问题解决的专业人士。文章深入分析了他们的日常工作状态、个人品质以及面对挑战时的态度,强调了编程不仅是一项技术活动,更是个人成长和精神修炼的过程。 ... [详细]
  • 在1995年,Simon Plouffe 发现了一种特殊的求和方法来表示某些常数。两年后,Bailey 和 Borwein 在他们的论文中发表了这一发现,这种方法被命名为 Bailey-Borwein-Plouffe (BBP) 公式。该问题要求计算圆周率 π 的第 n 个十六进制数字。 ... [详细]
  • 本文介绍了SIP(Session Initiation Protocol,会话发起协议)的基本概念、功能、消息格式及其实现机制。SIP是一种在IP网络上用于建立、管理和终止多媒体通信会话的应用层协议。 ... [详细]
  • 二维码的实现与应用
    本文介绍了二维码的基本概念、分类及其优缺点,并详细描述了如何使用Java编程语言结合第三方库(如ZXing和qrcode.jar)来实现二维码的生成与解析。 ... [详细]
  • 在日常生活中,支付宝已成为不可或缺的支付工具之一。本文将详细介绍如何通过支付宝实现免费提现,帮助用户更好地管理个人财务,避免不必要的手续费支出。 ... [详细]
  • 本文探讨了在一个物理隔离的环境中构建数据交换平台所面临的挑战,包括但不限于数据加密、传输监控及确保文件交换的安全性和可靠性。同时,作者结合自身项目经验,分享了项目规划、实施过程中的关键决策及其背后的思考。 ... [详细]
  • 本文将详细介绍如何在二进制和十六进制之间进行准确的转换,并提供实际的代码示例来帮助理解这一过程。 ... [详细]
  • empty,isset首先都会检查变量是否存在,然后对变量值进行检测。而is_null只是直接检查变量值,是否为null,因此如果变量未定义就会出现错误!检测一个变量是否是null ... [详细]
  • 在处理大数据量的SQL分页查询时,通常需要执行两次查询来分别获取数据和总记录数。本文介绍了一种优化方法,通过单次查询同时返回分页数据和总记录数,从而提高查询效率。 ... [详细]
  • 本文通过一个具体的实例,介绍如何利用TensorFlow框架来计算神经网络模型在多分类任务中的Top-K准确率。代码中包含了随机种子设置、模拟预测结果生成、真实标签生成以及准确率计算等步骤。 ... [详细]
  • 嵌套列表的扁平化处理
    本文介绍了一种方法,用于遍历嵌套列表中的每个元素。如果元素是整数,则将其添加到结果数组中;如果元素是一个列表,则递归地遍历这个列表。此方法特别适用于处理复杂数据结构中的嵌套列表。 ... [详细]
  • 本文详细探讨了BCTF竞赛中窃密木马题目的解题策略,重点分析了该题目在漏洞挖掘与利用方面的技巧。 ... [详细]
  • 1#include2#defineM1000103#defineRGregister4#defineinf0x3f3f3f3f5usingnamespacestd;6boolrev ... [详细]
author-avatar
伤心怪人_234
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有