国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

nginx 負載均衡搭建

endiat / 1351人閱讀

摘要:客戶請求頭緩沖大小默認會用這個來讀取值,如果設定通過上傳文件的大小磁盤和之間互相拷貝數據或任意兩個文件描述符。

環境說明

192.168.1.208    Nginx負載服務器
192.168.1.210    webA服務器 PHP memcache xcache mysql
192.168.1.211    webB服務器 PHP memcache xcache

webA/webB 服務器PHP環境配置

# 注意:freetype在生成驗證碼圖片需要用,所以必須要安裝的
[root@iZ23g4snm6gZ soft]# yum install openssl-devel  libxml2 libxml2-devel curl-devel  libevent
[root@iZ23g4snm6gZ soft]# yum install libpng libpng-devel libjpeg libjpeg-devel freetype-devel gd gd-devel mysql-devel

# 源碼包安裝libiconv
tar zxvf libiconv-1.14.tar.gz
cd libiconv-1.14/
./configure --prefix=/usr/local/libiconv
make
make install

# 源碼包安裝libiconv
tar zxvf libmcrypt-2.5.8.tar.gz
cd libmcrypt-2.5.8/
./configure --prefix=/usr/local/libmcrypt/
make
make install

# 開始編譯PHP
tar -zxvf php-5.6.3.tar.gz
cd php-5.6.3

./configure --prefix=/usr/local/php/ 
--with-config-file-path=/usr/local/php/etc/ 
--enable-fpm 
--with-fpm-user=nginx 
--with-fpm-group=nginx 
--with-zlib 
--with-libxml-dir 
--enable-sockets 
--with-curl 
--with-jpeg-dir 
--with-png-dir 
--with-gd 
--with-iconv-dir=/usr/local/libiconv 
--with-freetype-dir= 
--enable-gd-native-ttf 
--with-xmlrpc 
--with-openssl 
--with-mhash 
 --with-mcrypt=/usr/local/libmcrypt/ 
--with-pear 
--enable-mbstring 
--enable-sysvshm 
--enable-zip 
--with-mysql 
--with-mysqli 
--with-mysql-sock 
--with-pdo-mysql 
--disable-fileinfo 

# 安裝配置
make
make install

配置php-fpm.conf文件

#! /bin/sh
 
### BEGIN INIT INFO
# Provides:          php-fpm
# Required-Start:    $remote_fs $network
# Required-Stop:     $remote_fs $network
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts php-fpm
# Description:       starts the PHP FastCGI Process Manager daemon
### END INIT INFO
 
prefix=/usr/local/php
exec_prefix=${prefix}
 
php_fpm_BIN=${exec_prefix}/sbin/php-fpm
php_fpm_CONF=${prefix}/etc/php-fpm.conf
php_fpm_PID=${prefix}/var/run/php-fpm.pid
 
php_opts="--fpm-config $php_fpm_CONF"
 
wait_for_pid () {
    try=0
 
    while test $try -lt 35 ; do
 
        case "$1" in
            "created")
            if [ -f "$2" ] ; then
                try=""
                break
            fi
            ;;
 
            "removed")
            if [ ! -f "$2" ] ; then
                try=""
                break
            fi
            ;;
        esac
 
        echo -n .
        try=`expr $try + 1`
        sleep 1
 
    done
 
}
 
case "$1" in
    start)
        echo -n "Starting php-fpm "
 
        $php_fpm_BIN $php_opts
 
        if [ "$?" != 0 ] ; then
            echo " failed"
            exit 1
        fi
 
        wait_for_pid created $php_fpm_PID
 
        if [ -n "$try" ] ; then
            echo " failed"
            exit 1
        else
            echo " done"
        fi
    ;;
 
    stop)
        echo -n "Gracefully shutting down php-fpm "
 
        if [ ! -r $php_fpm_PID ] ; then
            echo "warning, no pid file found - php-fpm is not running ?"
            exit 1
        fi
 
        kill -QUIT `cat $php_fpm_PID`
 
        wait_for_pid removed $php_fpm_PID
 
        if [ -n "$try" ] ; then
            echo " failed. Use force-quit"
            exit 1
        else
            echo " done"
        fi
    ;;
 
    force-quit)
        echo -n "Terminating php-fpm "
 
        if [ ! -r $php_fpm_PID ] ; then
            echo "warning, no pid file found - php-fpm is not running ?"
            exit 1
        fi
 
        kill -TERM `cat $php_fpm_PID`
 
        wait_for_pid removed $php_fpm_PID
 
        if [ -n "$try" ] ; then
            echo " failed"
            exit 1
        else
            echo " done"
        fi
    ;;
 
    restart)
        $0 stop
        $0 start
    ;;
 
    reload)
 
        echo -n "Reload service php-fpm "
 
        if [ ! -r $php_fpm_PID ] ; then
            echo "warning, no pid file found - php-fpm is not running ?"
            exit 1
        fi
 
        kill -USR2 `cat $php_fpm_PID`
 
        echo " done"
    ;;
 
    *)
        echo "Usage: $0 {start|stop|force-quit|restart|reload}"
        exit 1
    ;;
 
esac

# 開機自啟動配置
mv php-fpm /etc/init.d/               // 移動php-fpm腳本到init.d目錄下
chmod a+x /etc/init.d/php-fpm         // 添加執行權限
chkconfig --add php-fpm               // 添加開機啟動配置
chkconfig --level 2345 php-fpm on     // 配置開機啟動權限級別

Nginx 服務器配置安裝

# 擴展包安裝
yum install libcom_err pkgconfig -y
yum install libselinux krb5-libs libcom_err-devel libsepol-devel libselinux-devel e2fsprogs-libs libss keyutils-libs-devel krb5-devel e2fsprogs libselinux-utils -y
yum -y install zlib zlib-devel openssl openssl-devel make gcc gcc-c++ ncurses-devel pcre-devel

# 安裝Nginx# 安裝pcre (支持nginx偽靜態)
ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.30.tar.gz
cd /usr/local/src
mkdir /usr/local/pcre                  // 創建安裝目錄
tar  zxvf pcre-8.30.tar.gz
cd pcre-8.30
./configure  --prefix=/usr/local/pcre  // 配置
make
make install

# 安裝Nginx
[root@admin local]# groupadd  www  #添加www組
[root@admin local]# useradd -g  www www -s /bin/false  // 不允許www用戶直接登錄系統

wget http://nginx.org/download/nginx-1.8.1.tar.gz
tar -zxf /data/soft/nginx/nginx-1.8.1.tar.gz
cd /data/soft/nginx/nginx-1.8.1

# 開始配置Nginx
./configure --prefix=/usr/local/nginx 
--with-pcre 
--with-http_ssl_module 
--with-http_realip_module 
--with-http_addition_module 
--with-http_sub_module 
--with-http_dav_module 
--with-http_flv_module 
--with-http_mp4_module 
--with-http_gzip_static_module 
--with-http_random_index_module 
--with-http_secure_link_module 
--with-http_degradation_module 
--with-http_stub_status_module 
--with-ipv6 
--with-mail 
--with-mail_ssl_module 
--conf-path=/usr/local/nginx/conf/nginx.conf 
--group=wwww 
--user=www 
--error-log-path=/usr/local/nginx/logs/error.log 
--http-log-path=/usr/local/nginx/logs/access.log 
--pid-path=/usr/local/nginx/logs/nginx.pid 
--lock-path=/usr/local/nginx/logs/lock.txt 
make
make install

# nginx安裝第三方擴展
tar -zxf /data/soft/nginx/ngx_http_accounting_module-master.tar.gz
cp -rf ngx_http_accounting_module-master /usr/local/
# 切換到nginx源碼包目錄執行
./configure --prefix=/usr/local/nginx --add-module=/usr/local/ngx_http_accounting_module-master/
make
make install

配置nginx支持php

#user  nobody;
user www www;

worker_processes       auto;
# ginx要開啟的進程數 一般等于cpu的總核數,沒必要開那么多,1個nginx內存消耗10兆左右
#worker_processes       4;
# 為每個進程分配cpu,上例中將4 個進程分配到4個cpu,當然可以寫多個,或者將一 個進程分配到多個cpu
#worker_cpu_affinity    00000001 00000010 00000100 00001000;

# 開啟nginx錯誤日志
error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

pid        logs/nginx.pid;

# 每個nginx進程打開文件描述符最大數目 配置要和系統的單進程打開文件數一
# 致,linux 2.6內核下開啟文件打開數為65535,worker_rlimit_nofile就相應,應該填寫65535  
# nginx調度時分配請求到進程并不是那么的均衡,假如超過會返回502錯誤。我這里寫的大一點
worker_rlimit_nofile   819200;


events {
    # 設置用于復用客戶端線程的輪詢方法。如果你使用Linux 2.6+,你應該使用epoll。
    # 如果你使用*BSD,你應該使用kqueue。
    # 值得注意的是如果你不知道Nginx該使用哪種輪詢方法的話,它會選擇一個最適合你操作系統的
    use                            epoll;

    # 每個工作進程允許最大的同時連接數(Maxclient = work_processes * worker_connections)
    # 默認1024
    worker_connections             40960;
}


http {
    # 打開accunting日志分析
    http_accounting                on;
    http_accounting_name           "JGsrv";
    http_accounting_time           30;

    # 文件頭信息
    include       mime.types;

    # 默認類型
    default_type  application/octet-stream;

    # 限制連接模塊
    limit_req_zone $binary_remote_addr zone=allips:10m rate=20r/s;


    # 保存服務器名字的hash表是由指令server_names_hash_max_size 和server_names_hash_bucket_size所控制的。
    # 參數hash bucket size總是等于hash表的大小,并且是一路處理器緩存大小的倍數
    server_names_hash_bucket_size  128;

    # 客戶端請求頭部的緩沖區大小,這個可以根據你的系統分頁大小來設置,
    # 一般一個請求的頭部大小不會超過1k,不過由于一般系統分頁都要大于1k,
    # 所以這里設置為分頁大小。分頁大小可以用命令getconf PAGESIZE取得。
    client_header_buffer_size      32k;

    # 客戶請求頭緩沖大小
    # nginx默認會用client_header_buffer_size這個buffer來讀取header值,如果
    large_client_header_buffers    4 32k;

    # 設定通過nginx上傳文件的大小
    client_max_body_size           64m;

    # 磁盤和TCP socket之間互相拷貝數據(或任意兩個文件描述符)。
    # Pre-sendfile是傳送數據之前在用戶空間申請數據緩沖區
    sendfile                       on;

    # 告訴nginx在一個數據包里發送所有頭文件,而不一個接一個的發送
    tcp_nopush                     on;
    
    # 告訴nginx不要緩存數據,而是一段一段的發送,
    # 當需要及時發送數據時,就應該給應用設置這個屬性,這樣發送一小塊數據信息時就不能立即得到返回值。
    tcp_nodelay                    on;

    # 并不會讓nginx執行的速度更快,但它可以關閉在錯誤頁面中的nginx版本數字,這樣對于安全性是有好處的
    server_tokens                  off;

    # keepalive超時時間
    keepalive_timeout              65;

    # 優化fastcgi
    fastcgi_connect_timeout        120;
    fastcgi_send_timeout           120;
    fastcgi_read_timeout           120;
    fastcgi_buffer_size            64k;
    fastcgi_buffers                4 64k;
    fastcgi_busy_buffers_size      128k;
    fastcgi_temp_file_write_size   128k;
    fastcgi_intercept_errors       on;

    # 開啟gzip壓縮
    gzip                           on;

    # 默認值: 0 ,不管頁面多大都壓縮
    gzip_min_length                1k;

    # 設置系統獲取幾個單位的緩存用于存儲gzip的壓縮結果數據流
    # 例如 4 4k 代表以4k為單位,按照原始數據大小以4k為單位的4倍申請內存
    gzip_buffers                   4 16k;


    gzip_http_version              1.0;
    gzip_comp_level                2;
    gzip_types                     text/plain application/x-javascript text/css application/xml;
    gzip_vary                      on;


    # 這個將為打開文件指定緩存,默認是沒有啟用的,max 指定緩存數量,建議和打開文件數一致,
    # inactive 是指經過多長時間文件沒被請求后刪除緩存
#    open_file_cache                max=409600 inactive=10s;

    # 這個是指多長時間檢查一次緩存的有效信息
#    open_file_cache_valid          5s;

    # open_file_cache 指令中的inactive 參數時間內文件的最少使用次數,
    # 如果超過這個數字,文件描述符一直是在緩存中打開的,
    # 如上例,如果有一個文件在inactive 時間內一次沒被使用,它將被移除
#    open_file_cache_min_uses       2;

    log_format access_logs "$upstream_response_time $request_time $status $body_bytes_sent $remote_addr $time_local "$http_user_agent" "$request" "$http_referer" "$http_x_forwarded_for"";

    # Nginx負載均衡配置
    upstream phpServer{
        # 服務器內網地址,weight:權重,負載越大   max_fails:允許請求失敗的次數   fail_timeout:次失敗后,暫停的時間
        server 172.20.17.210:9000 weight=1 max_fails=2 fail_timeout=3;
        server 172.20.17.211:9000 weight=1 max_fails=2 fail_timeout=3;
    }


    # 配置虛擬主機,過個server就復制多個
    include vhost/*.conf;


}

Vhost目錄下的虛擬機配置文件

server {
    listen       80;
    server_name  jt018.com www.jt018.com;
    root   /data/www/jt018.com/;

    #access_log  logs/host.access.log  main;

    # 配置域名重定向
    #if ($host != "www.jt018.com" ) {
    #    rewrite ^/(.*)$ http://www.yphp.cn/$1 permanent;
    #}

    location / {

        # 配置rewrite
        if (!-e $request_filename) {
            rewrite  ^(.*)$  /index.php?$1  last;
            break;
        }

        # include  /usr/local/nginx/html/yphp/.htaccess;
        # rewrite ^/(.+)/(.+)[/]?$ /index.php?m=$1&a=$2 last;

        # 配置默認訪問文件
        index  index.php index.html index.htm;
    }


    # 靜態文件緩存30天
    location ~ .*.(gif|jpg|jpeg|png|bmp|swf|ico)$
    {
        expires 30d;
        # access_log off;
    }
    
    # js,css文件緩存15個小時
    location ~ .*.(js|css)?$
    {
        expires 15d;
        # access_log off;
    }


    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    #location = /50x.html {
    #    root   html;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ .php$ {
        #fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_intercept_errors on;
        fastcgi_pass   phpServer;    # 修改為upstream定義的名稱
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }

}

Nginx 開機啟動配置

#!/bin/bash
# nginx     This shell script takes care of starting and stopping
#           nginx
#
# chkconfig: - 13 68
# description: nginx is a web server
### BEGIN INIT INFO
# Provides: $named
# Short-Description: start|stop|status|restart|configtest 
### END INIT INFO
#variables
NGINX_BIN="/usr/local/nginx/sbin/nginx"
NGINX_CONF="/usr/local/nginx/conf/nginx.conf"
NGINX_PID="/usr/local/nginx/logs/nginx.pid"
NETSTAT="/bin/netstat"
alter=$1
prog=nginx
#load system function
. /etc/rc.d/init.d/functions
#function:echo ok or error
function if_no {
if [ $2 == 0 ]; then
echo -n $"$1 ${prog}:" && success && echo
else
echo -n $"$1 ${prog}:" && failure && echo
fi
}
#start nginx
function start {
rm -f ${NGINX_PID} 2>/dev/null
if [ -s ${NGINX_PID} ]; then
echo "nginx already running" 
else
if [ `${NETSTAT} -tnpl | grep nginx | wc -l` -eq 0 ]; then
rm -f ${NGINX_PID} 2>/dev/null
${NGINX_BIN} -c ${NGINX_CONF} 
if_no start $?
        else
${NETSTAT} -tnpl | grep nginx | awk "{ print $7}" | cut -d "/" -f 1 > ${NGINX_PID}
if_no start $?
fi
fi
}
#stp nginx
function stop {
if [ -s ${NGINX_PID} ]; then
cat ${NGINX_PID} | xargs kill -QUIT
if_no stop $?
else
        if [ `${NETSTAT} -tnpl | grep nginx | wc -l` -eq 0 ]; then
rm -f ${NGINX_PID} 2>/dev/null
if_no stop 0
else
rm -f ${NGINX_PID} 2>/dev/null
kill `${NETSTAT} -tnpl | grep nginx | awk "{ print $7}" | cut -d "/" -f 1`
if_no stop $?
fi
fi
}
function restart {
if [ -s ${NGINX_PID} ]; then
cat ${NGINX_PID} | xargs kill -HUP
if_no restart $?
else
stop
sleep 1
start
fi
}
function status {
${NETSTAT} -tnpl | grep nginx | grep LISTEN
[ $? == 0 ] && echo "nginx is running" || echo "nginx is not running"
}
function configtest {
${NGINX_BIN} -t
}
case $alter in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
status)
status
;;
configtest)
configtest
;;
*)
echo "use:${NGINX} {start|stop|restart|status|configtest}"
;;
esac

# 配置Nginx自啟動腳本
chmod +x /etc/init.d/nginx
/etc/init.d/nginx start 或 service nginx start         // 啟動nginx
/etc/init.d/nginx stop 或 service nginx stop          // 關閉nginx
/etc/init.d/nginx restart 或 service nginx restart       // 重啟nginx
chkconfig --add nginx
chkconfig --level 2345 nginx on

# 重啟服務器
/etc/init.d/nginx stop         # 停止nginx 服務
/etc/init.d/nginx start        # 啟動nginx 服務

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/30370.html

相關文章

  • 使用Nginx反向代理和負載均衡搭建多人測試環境

    摘要:反向代理和負載均衡通過判斷不同的,我們可以通過反向代理轉發到不同的機器和端口,這里同一臺測試機可以轉發到本機的不同的端口,監聽不同的端口設置不同的網站目錄。 showImg(https://segmentfault.com/img/bVG4E4?w=1328&h=874); 假如我們使用 git 進行版本控制,在一個大型網站中,開發人員在不同的分支上開發不同的需求,當一個需求開發完成需...

    DDreach 評論0 收藏0
  • React搭建個人博客(二)consul-template+nginx+docker實現負載均衡

    摘要:前兩個數據業務相關的服務即下圖的,第三個項目就是的實現的負載均衡。這里后臺,前臺項目各啟動了三個實例,用戶訪問的時候,就會根據配置的負載均衡的策略,訪問其中一個。這一部分與之前我轉發的實現服務發現及網關其實也只是差了個網關和負載均衡。 一.簡介 上一篇只講了博客的前端問題,這一篇講一下后端的微服務搭建。項目的后端使用的thinkjs框架,在我之前的博客中已經寫過,這里就不重點說明了。后...

    Coding01 評論0 收藏0
  • Nginx+Redis實現session共享的均衡負載

    摘要:于是乎,,,搜到最多的詞就是均衡負載,搭配的一般都是。回頭再看看,先換個瀏覽器首次訪問再次訪問帶上首次訪問帶上再次次訪問可見的確是達到了均衡負載同時共享的目的。 前言 大學三年多,也做個幾個網站和APP后端,老是被人問到,如果用戶多了服務器會不會掛,總是很尷尬的回答:哈哈,我們的用戶還少,到了服務器撐不住的時候,估計都上市了吧。說是這么說,但是對于有強迫癥的我,這個問題一直回響在我腦海...

    ZHAO_ 評論0 收藏0

發表評論

0條評論

endiat

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<