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