歡迎您光臨本站 註冊首頁

nginx利用upstream實現php fcgi負載均衡

←手機掃碼閱讀     火星人 @ 2014-03-04 , reply:0

nginx利用upstream實現php fcgi負載均衡

nginx利用upstream實現php fcgi負載均衡


nginx是高性能的web伺服器,在國外、國內的大型網站都有運用!nginx在處理靜態文件方面是一個不折不扣的龍頭老大,在處理動態php方面也是不錯的黑馬!
nginx的php方面主要是通過代理給fcgi來處理的,而其fcgi在php處理方面也很不錯,但是fcgi畢竟有不穩定的一面,有時可能會莫名其妙的的崩潰,所以我在生產環境中嘗試跑兩種不同的fcgi來處理可能出現的莫名其妙的崩潰!

架構圖:





1。安裝
安裝順序:必須先安裝php-fpm版本的lemp平台,然後再另外編譯spawn-fcgi
1.1 php-fpm版本的lemp參考:http://bbs.linuxtone.org/thread-1582-1-1.html
1.2 spawn-fcgi:
下載:http://www.lighttpd.net/download/spawn-fcgi-1.6.3.tar.gz
解壓安裝:
#tar zvxf spawn-fcgi-1.6.3.tar.gz
#cd spawn-fcgi-1.6.3
#./configure && make && make install

2。配置fcgi
2.1 php-fpm:
配置:參考http://bbs.linuxtone.org/thread-1582-1-1.html的配置皆可
啟動: /usr/local/php-fcgi/sbin/php-fpm start
2.2 spawn-fcgi:
新建啟動腳本:
#vi /usr/local/php-fcgi/sbin/spawn-fcgi
#! /bin/sh

set -e

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DESC="spawn-fcgi daemon"
NAME=spawn-fcgi
DAEMON=/usr/local/bin/$NAME

# Gracefully exit if the package has been removed.
test -x $DAEMON || exit 0

d_start() {
   $DAEMON -a 127.0.0.1 -p 9001 -C 64 -u www -g www -f /usr/local/php-fcgi/bin/php-cgi > /dev/null 2>&1 || echo -n " already running"
}

d_stop() {
   pgrep php-cgi |xargs kill -9 > /dev/null 2>&1 || echo -n " not running"
}
   
case "$1" in
   start)
         echo -n "Starting $DESC: $NAME"
         d_start
         echo "."
         ;;
   stop)
         echo -n "Stopping $DESC: $NAME"
         d_stop
         echo "."
         ;;
   restart)
         echo -n "Restarting $DESC: $NAME"
         d_stop
         sleep 1
         d_start
         echo "."
         ;;
   *)
           echo "Usage: $SCRIPTNAME {start|stop|restart}" >&2
           exit 3
         ;;
esac

exit 0#chmod u+x /usr/local/php-fcgi/sbin/spawn-fcgi
#/usr/local/php-fcgi/sbin/spawn-fcgi start
2.3 檢查php-cgi啟動埠:#netstat -untlp

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 127.0.0.1:9000              0.0.0.0:*                   LISTEN      10414/php-cgi      
tcp        0      0 127.0.0.1:9001              0.0.0.0:*                   LISTEN      10238/php-cgi  
3。配置nginx
3.1 nginx.conf加入   upstream  php-cgi  {
           server   127.0.0.1:9000 weight=8 max_fails=0 fail_timeout=30s;
           server   127.0.0.1:9001 weight=8 max_fails=0 fail_timeout=30s;
        }3.2 php-cgi:
#vi /usr/local/nginx/conf/enable_php5.conf
#fastcgi_pass  127.0.0.1:9000;
fastcgi_pass  php-cgi;
fastcgi_index index.php;

fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
fastcgi_param  SERVER_SOFTWARE    nginx;

fastcgi_param  QUERY_STRING       $query_string;
fastcgi_param  REQUEST_METHOD     $request_method;
fastcgi_param  CONTENT_TYPE       $content_type;
fastcgi_param  CONTENT_LENGTH     $content_length;

fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
fastcgi_param  REQUEST_URI        $request_uri;
fastcgi_param  DOCUMENT_URI       $document_uri;
fastcgi_param  DOCUMENT_ROOT      $document_root;
fastcgi_param  SERVER_PROTOCOL    $server_protocol;

fastcgi_param  REMOTE_ADDR        $remote_addr;
fastcgi_param  REMOTE_PORT        $remote_port;
fastcgi_param  SERVER_ADDR        $server_addr;
fastcgi_param  SERVER_PORT        $server_port;
fastcgi_param  SERVER_NAME        $server_name;

#for test
fastcgi_param HTTP_ACCEPT_ENCODING gzip,deflate;

# PHP only, required if PHP was built with --enable-force-cgi-redirect
#fastcgi_param  REDIRECT_STATUS    200;3.3 虛擬主機:
#vi  /usr/local/nginx/conf/vhosts/bbs.linuxtone.org.conf
        location ~ .*\.php?$
                {
                        include /usr/local/nginx/conf/enable_php5.conf;
                }

[火星人 ] nginx利用upstream實現php fcgi負載均衡已經有565次圍觀

http://coctec.com/docs/service/show-post-5093.html