2019独角兽企业重金招聘Python工程师标准>>>
1、目的
利用tengine作为代理服务器,实现多个端口代理,例如:同一个功能模块在单个服务器有3个tomcat实例,可以通过tengine代理,统一使用80端口作为负载端口,并对外输出。
如下以www.anderschow.com配置为例,线上单台服务器有三个tomcat实例【端口为10001、11001、12001】为该域名提供服务。
2、软件版本
os: centos6.4
tengine: 2.1.1
pcre: 8.31
3、安装步骤
前提
如果没有【yum list 包名称看是否有安装】,请安装如下基础库
yum install -y gcc gcc-c++
yum install openssl openssl-devel
1)安装pcre
tar zxvf pcre-8.31.tar.gz
cd pcre-8.31
./configure --prefix=/usr/local/pcre
make
make install
2)安装tengine2.1.1
cd /usr/local/src
wget http://tengine.taobao.org/download/tengine-2.1.1.tar.gz
tar zxvf tengine-2.1.1.tar.gz
cd tengine-2.1.1
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-pcre=/usr/local/src/pcre-8.31
make
make install
3)设置启动项
vim /etc/rc.local
#添加
/usr/local/nginx/sbin/nginx
4)日志分割脚本及计划任务
tengine访问日志默认只有一个不可配置按天或按小时切割,所以需要另建任务,完成按小时切割的需求。
vim /data/tengine/2.1.1/sh/backup_tengine_access_log_per_hour.sh
#文件中添加如下内容,并保存
log_dir="/data/tengine/2.1.1/logs/anderschow"
date_dir=`date +%Y-%m-%d-%H`
mv ${log_dir}/access.log ${log_dir}/access.log.${date_dir}
kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
#添加计划任务及脚本
crontab -e
#添加如下脚本
0 */1 * * * /data/tengine/2.1.1/sh/backup_tengine_access_log_per_hour.sh
说明:日志分割其他方法参考【http://www.tuicool.com/articles/BF36rq】
4、配置信息
1)tengine主要配置信息
路径:/usr/local/nginx/conf/nginx.conf
内容:
worker_processes 10;
worker_rlimit_nofile 65535;
error_log /data/tengine/2.1.1/logs/error.log error;
pid /usr/local/nginx/logs/nginx.pid;events {use epoll;worker_connections 65535;
}http {include mime.types;default_type application/json;log_format accesslog '$remote_addr ''$time_local ''$request_method ''$request_uri ''$status ''$body_bytes_sent ''$http_referer ''$request_time ''$upstream_response_time ''$host ''$upstream_addr ''$http_user_agent ';sendfile on;keepalive_timeout 30;include /usr/local/nginx/conf/upstreams/*.conf;include /usr/local/nginx/conf/servers/*.conf;
}
2)server配置信息
路径:/usr/local/nginx/conf/servers/anderschow.conf
内容:
server {listen 80;server_name www.anderschow.com;access_log /data/tengine/2.1.1/logs/anderschow/access.log accesslog;location / {root html;index index.html index.htm;proxy_pass http://www.anderschow.com;}}
3)upstream 配置信息
路径:/usr/local/nginx/conf/upstreams/anderschow.conf
内容:
upstream www.anderschow.com {server 127.0.0.1:10001 weight=60;server 127.0.0.1:11001 weight=60;server 127.0.0.1:12001 weight=60;}
5、常用命令
1)验证tengine配置信息是否正常
/usr/local/nginx/sbin/nginx -t
2)重载tengine配置信息
/usr/local/nginx/sbin/nginx -s reload
3)启动tengine
/usr/local/nginx/sbin/nginx
4)平缓停止tengine
/usr/local/nginx/sbin/nginx -s quit
5)停止tengine
/usr/local/nginx/sbin/nginx -s stop
6、过程中发现的异常
1、如果因为server_name过多导致报错【友人提供,谢谢!】
解决办法:添加server_names_hash_bucket_size配置项。
2、upstream的name建议用域名,否则容易存在未知的错,如404,端口无法跳转。【友人提供,谢谢!】