淘寶Tengine安裝指南

淘寶Tengine安裝指南javascript

 

前期準備:php

服務器IP:192.168.200.129css

配置yum倉庫:html

[root@crushlinux ~]# mount /dev/cdrom /mnt
[root@crushlinux ~]# cat /etc/yum.repos.d/yum.repo
[server]
name=server
baseurl=file:///mnt/Server
enable=1
gpgcheck=0

下載軟件:java

[root@crushlinux ~]# cd /usr/src/
[root@crushlinux src]# wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.33.tar.gz
[root@crushlinux src]# wget http://labs.frickle.com/files/ngx_cache_purge-2.1.tar.gz
[root@crushlinux src]# wget http://tengine.taobao.org/download/tengine-1.5.1.tar.gz

1、安裝pcre:node

[root@crushlinux src]# tar zxvf pcre-8.33.tar.gz
[root@crushlinux src]# cd pcre-8.33
[root@crushlinux pcre-8.33]# ./configure --prefix=/usr/local/pcre
[root@crushlinux pcre-8.33]# make && make install

2、解壓proxy_cache插件linux

[root@crushlinux pcre-8.33]# cd ../
[root@crushlinux src]# tar zxvf ngx_cache_purge-2.1.tar.gz

3、安裝Tenginenginx

[root@crushlinux src]# yum install openssl openssl-devel -y
[root@crushlinux src]# tar zxvf tengine-1.5.1.tar.gz
[root@crushlinux src]# cd tengine-1.5.1
[root@crushlinux tengine-1.5.1]# ./configure --add-module=/usr/src/ngx_cache_purge-2.1 --prefix=/usr/local/nginx --with-http_stub_status_module --with-pcre=/usr/src/pcre-8.33
[root@crushlinux tengine-1.5.1]# make && make install

注意:web

--prefix=/usr/local/nginx指定安裝路徑後端

--with-pcre=/usr/src/pcre-8.33 指定pcre的解壓路徑

--add-module=/usr/src/ngx_cache_purge-2.1 指定加載緩存插件模塊


報錯解決方案:

一 ./configure: error: the HTTP SSL module requires OpenSSL library

解決:yum -y install openssl-devel

二 ./configure: error: the HTTP rewrite module requires the PCRE library.

解決:yum -y install pcre-devel


4、設置Tengine啓動啓動腳本

在/etc/init.d/下建立一個文件名稱隨意(建議起名爲:nginx)

[root@crushlinux tengine-1.5.1]# cat /etc/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

[root@crushlinux tengine-1.5.1]# chmod +x /etc/init.d/nginx 爲腳本添加執行權限

[root@crushlinux tengine-1.5.1]# chkconfig nginx on設置爲開機自啓

[root@crushlinux tengine-1.5.1]# chkconfig --list nginx查看

nginx      0:關閉 1:關閉 2:啓用 3:啓用 4:啓用 5:啓用 6:關閉


[root@crushlinux tengine-1.5.1]# service nginx start啓動Tengine

啓動 nginx:                        [肯定]


5、配置Tengine

1)配置前先備份nginx配置文件

[root@crushlinux tengine-1.5.1]# mv /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.bak

2)建立nginx程序用戶www

[root@crushlinux tengine-1.5.1]# groupadd www

[root@crushlinux tengine-1.5.1]# useradd -g www -s /sbin/nologin www

3)編輯主配置文件:

[root@crushlinux tengine-1.5.1]# cd /usr/local/nginx/conf/

[root@crushlinux conf]# vi nginx.conf添加時請刪除漢字註釋信息

user  www www;          #定義運行用戶及運行組
worker_processes  4;    #定義工做進程數,一般爲CPU的核心數或者兩倍
error_log   logs/error.log  crit;   #定義全局錯誤日誌文件
日誌的級別以下:crit爲輸出日誌最少的
# debug|info|notice|warn|error|crit
pid        logs/nginx.pid; #定義進程ID的存儲文件位置
#Specifies the value for maximum file descriptors that can be opened by this process.
worker_rlimit_nofile 65535;
events {
use epoll;                      #Linux下最經常使用支持大併發的工做模式
worker_connections  65535;      #定義每一個進程的最大鏈接數
}
http {
include       mime.types;       #定義mime類型,類型由mime.type文件定義
default_type  application/octet-stream;
charset  utf-8;     #設置字符集
log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';     #指定Nginx日誌輸出格式
access_log  logs/access.log  main;
#設定請求緩衝
server_names_hash_bucket_size 256;    #增長,原爲128
client_header_buffer_size 256k;       #增長,原爲32k
large_client_header_buffers 4 256k;   #增長,原爲32k
#size limits
client_max_body_size          50m;      #定義客戶端請求的最大的單個文件字節數
client_header_timeout         3m;       #定義客戶端請求頭讀取超時時間
client_body_timeout           3m;       #定義客戶端請求主體讀取時間,默認60秒
send_timeout                  3m;       #定義響應客戶端的超時時間
sendfile                      on;       #開啓高效文件傳輸模式
tcp_nopush                    on;       #定義什麼時候將緩存輸出到最終用戶(客戶端)
keepalive_timeout             60;       #定義客戶端鏈接保持活動的超時時間
tcp_nodelay                   on;       #定義操做系統如何處理網絡緩存
server_tokens                 on;       #不顯示nginx版本信息
limit_conn_zone $binary_remote_addr zone=perip:10m; #添加limit_zone,限制同一IP併發數
#fastcgi_intercept_errors on;           #開啓錯誤頁面跳轉
include  gzip.conf;                     #壓縮配置文件
include  proxy.conf;                    #proxy_cache參數配置文件
include  vhost/*.conf;                  #nginx虛擬主機包含文件目錄
include  mysvrhost.conf;                #後端WEB服務器列表文件
}

4)編輯代理配置文件:

[root@crushlinux conf]# mkdir vhost

[root@crushlinux conf]# vi proxy.conf添加時請刪除漢字註釋信息

#注:proxy_temp_path和proxy_cache_path指定的路徑必須在同一分區
proxy_temp_path   /tmp/proxy_temp;
#設置Web緩存區名稱爲cache_one,內存緩存空間大小爲500MB,1天沒有被訪問的內容自動清除,硬盤緩存空間大小爲30GB。
proxy_cache_path  /tmp/proxy_cache levels=1:2 keys_zone=cache_one:500m inactive=1d max_size=30g;
client_body_buffer_size  512k;     #原爲512k
proxy_connect_timeout    50;       #代理鏈接超時
proxy_read_timeout       600;      #代理髮送超時
proxy_send_timeout       600;      #代理接收超時
proxy_buffer_size        128k;     #代理緩衝大小,原爲32k
proxy_buffers           16 256k;   #代理緩衝,原爲4 64k
proxy_busy_buffers_size 512k;      #高負荷下緩衝大小,原爲128k
proxy_temp_file_write_size 1024m;  #proxy緩存臨時文件的大小原爲128k
#proxy_ignore_client_abort  on;    #不容許代理端主動關閉鏈接
proxy_next_upstream error timeout invalid_header http_500 http_503 http_404 http_502 http_504;

5)編輯主機配置文件:

[root@crushlinux conf]# vi /usr/local/nginx/conf/mysvrhost.conf 添加時請刪除漢字註釋信息

upstream cn100 {
ip_hash;  #會話保持
server 127.0.0.1:8080  max_fails=1 fail_timeout=60s;
server 127.0.0.1:9080 max_fails=1 fail_timeout=60s;
}

6)編輯壓縮配置文件:

[root@crushlinux conf]# vi /usr/local/nginx/conf/gzip.conf添加時請刪除漢字註釋信息

#網頁GZIP壓縮設置
#2012.4.2
#可經過http://tool.chinaz.com/Gzips/檢測壓縮狀況
#啓動預壓縮功能,對全部類型的文件都有效
#gzip_static on;    #開啓nginx_static後,對於任何文件都會先查找是否有對應的gz文件
#找不到預壓縮文件,進行動態壓縮
gzip on;
gzip_min_length   1k;  #設置最小的壓縮值,單位爲bytes.超過設置的min_length的值會進行壓縮,小於的不壓縮.
gzip_comp_level   3;   #壓縮等級設置,1-9,1是最小壓縮,速度也是最快的;9恰好相反,最大的壓縮,速度是最慢的,消耗的CPU資源也多
gzip_buffers      16 64k;   #設置系統的緩存大小,以存儲GZIP壓縮結果的數據流,它能夠避免nginx頻煩向系統申請壓縮空間大小
gzip_types text/plain application/x-javascript text/css text/javascript;
#關於gzip_types,若是你想讓圖片也開啓gzip壓縮,那麼用如下這段吧:
#gzip_types text/plain application/x-javascript text/css text/javascript application/x-httpd-php p_w_picpath/jpeg p_w_picpath/gif p_w_picpath/png;
#gzip公共配置
gzip_http_version 1.1;      #識別http的協議版本(1.0/1.1)
gzip_proxied      any;      #設置使用代理時是否進行壓縮,默認是off的
gzip_vary         on;       #和http頭有關係,加個vary頭,代理判斷是否須要壓縮
gzip_disable "MSIE [1-6]."; #禁用IE6的gzip壓縮

7)編輯配置文件:

[root@crushlinux conf]# vi /usr/local/nginx/conf/vhost/cn100.conf 添加時請刪除漢字註釋信息

server {
listen 80;
server_name localhost;
#默認啓動文件
index index.html index.htm;
#配置發佈目錄爲/usr/local/tomcat1/webapps/ROOT
root /usr/local/tomcat1/webapps/ROOT;
location /
{
#若是後端的服務器返回50二、50四、執行超時等錯誤,自動將請求轉發到upstream負載均衡池中的另外一臺服務器,實現故障轉移。
proxy_next_upstream http_502 http_504 error timeout invalid_header;
proxy_cache cache_one;
#對不一樣的HTTP狀態碼設置不一樣的緩存時間
proxy_cache_valid  200 304 12h;
#以域名、URI、參數組合成Web緩存的Key值,Nginx根據Key值哈希,存儲緩存內容到二級緩存目錄內
proxy_cache_key $host$uri$is_args$args;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://cn100;
#對用戶傳輸Set-Cookie的http頭,否則沒法支持一些包含cookie的應用,好比個人typecho
proxy_pass_header Set-Cookie;
#過時時間3天
expires 3d;
}
#用於清除緩存,假設一個URL爲http://192.168.8.42/test.txt,經過訪問http://192.168.8.42/purge/test.txt就能夠清除該URL的緩存。
location ~ /purge(/.*)
{
#設置只容許指定的IP或IP段才能夠清除URL緩存。
allow            127.0.0.1;
allow            192.168.0.0/16;
deny             all;
proxy_cache_purge    cache_one   $host$1$is_args$args;
}
# 查看nginx的併發鏈接數配置
location /NginxStatus
{
stub_status on;
access_log off;
auth_basic "NginxStatus";
}
#定義Nginx輸出日誌的路徑
#access_log /data/logs/nginx_wugk/access.log main;
#error_log /data/logs/nginx_wugk/error.log crit;
#access_log off; #根據本身的須要選擇是否啓用access日誌,註釋掉表明啓用
error_page 404 /404.html;
error_page 500 502 503 504 /404.html;
location = /404.html {
root html;
}
limit_conn perip 50; #同一ip併發數爲50,超過會返回503
}

8)爲Tengine配置系統的TCP設置

[root@crushlinux conf]#  vi /etc/sysctl.conf
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
net.ipv4.tcp_max_tw_buckets = 6000
net.ipv4.tcp_sack = 1
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_rmem = 4096 87380 4194304
net.ipv4.tcp_wmem = 4096 16384 4194304
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.core.netdev_max_backlog = 262144
net.core.somaxconn = 262144
net.ipv4.tcp_max_orphans = 3276800
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_mem = 94500000 915000000 927000000
net.ipv4.tcp_fin_timeout = 1
net.ipv4.tcp_keepalive_time = 30
net.ipv4.ip_local_port_range = 1024 65000
使配置生效:
[root@crushlinux conf]# /sbin/sysctl -p

9)重Tengine

 service nginx restart

10) 測試:

[root@crushlinux ~]# elinks --dump http://192.168.200.129

相關文章
相關標籤/搜索