CentOS6.4 配置Tengine


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、其他

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM