應用的最前端是一臺nginx服務器,全部靜態的內容都由nginx來處理,而將全部php的請求都分攤到下游的若干臺運行php fastcgi守護進程的服務器中,這樣能夠以一種廉價的方案來實現對系統負載的分攤,擴展系統的負載能力。php
三臺php fastcgi服務器的ip地址分別爲:前端
172.16.236.110 , 172.16.236.111, 172.16.236.112nginx
運行php fastcgi進程時,須要讓php-cgi監聽到服務器的局域網地址(分別如上所示),而不是以前通常都是監聽的本地地址(127.0.0.1)。以172.16.236.110這臺服務器爲例:服務器
/usr/local/php5/bin/php-cgi -b 172.16.236.110:9000php-fpm
或許你用spawn-fcgi來啓動php-fcgi,那麼就是這樣(供參考,其實也就是修改監聽的地址和端口便可):spa
/usr/local/lighttpd/bin/spawn-fcgi -f /usr/local/php5/bin/php-cgi -a 172.16.236.110 -p 9000server
又或許你是用php-fpm來管理php-fcgi,那麼你須要修改php-fpm的配置進程
vi /usr/local/php5/etc/php-fpm.confip
找到這個配置項(其中的地址可能須要根據你本身環境來調整)io
<value name="listen_address">127.0.0.1:9000</value>
修改成:
<value name="listen_address">172.16.236.110:9000</value>
修改完畢後,重啓你的php-fpm進程。
而後按照上面的步驟,依次修改其餘php fastcgi服務器。
php方面的工做暫時就是這些,下面修改nginx。
vi /usr/local/nginx/conf/nginx.conf
在配置文件的http段內增長相似以下的配置:
upstream myfastcgi {
server 172.16.236.110 weight=1;
server 172.16.236.111 weight=1;
server 172.16.236.112 weight=1;
}
我這裏三臺php fastcgi服務器的權重是相同的,因此其中的weight值都是1,若是你的php fastcgi服務器須要分主次,那麼能夠經過調整其weight值來達到目的。好比以第一臺服務器爲主,其餘兩臺爲輔,則就是這樣:
upstream myfastcgi {
server 172.16.236.110 weight=1;
server 172.16.236.111 weight=2;
server 172.16.236.112 weight=2; }
而後找到原來nginx關於php fastcgi配置的部分,好比:
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params; }
將其中的fastcgi_pass那一段改成:
fastcgi_pass myfastcgi;
其中的myfastcgi也就是上面剛剛配置的php fastcgi均衡器的名字了。
完了之後,重啓nginx便可