程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> nginx+php(FastCGI模式)

nginx+php(FastCGI模式)

編輯:PHP綜合
我實驗中是將nginx和php分裝在兩台虛擬機上 nginx我安裝在192.168.2.187 PHP程序安裝在192.168.2.189
這樣的好處是,將壓力分開,如果nginx,PHP和MySQL在一起,壓力過大。
若想使用memcached做cache,需要安裝memcached和memcache,此處不做memcached的配置。詳見:
http://blog.sina.com.cn/s/blog_5dc960cd0100j0at.Html
  我這裡只記錄一下需要修改的地方:
情況下Nginx和PHP他倆之間是一點感覺沒有的。在之前,很多朋友都搭建過Apache+PHP,apache+PHP編譯後生成的是模塊文件,而Nginx+PHP需要PHP生成可執行文件才可以,所以要利用fastcgi技術來實現Nginx與PHP的整合,這個只要我們安裝是啟用FastCGI即可。此次我們安裝PHP不僅使用了FastCGI,而且還使用了PHP-FPM這麼一個東東,PHP-FPM說白了是一個管理FastCGI的一個管理器,它作為PHP的插件存在,在安裝PHP要想使用PHP-FPM時就需要把PHP-FPM以補丁的形式安裝到PHP中,而且PHP要與PHP-FPM版本一致,這是必須的,切記!
安裝PHP,需要打補丁:
tar -zxvf PHP-5.2.8.tar.gz
gzip -cd php-5.2.8-fpm-0.5.10.diff.gz | patch -d PHP-5.2.8 -p1
cd PHP-5.2.8
./configure --prefix=/usr/local/PHP --enable-fastCGI --enable-fpm(只編譯了幾個必須的參數)
cp php.ini-dist /usr/local/php/etc/PHP.ini
cd /usr/local/PHP/etc/
完成後,修改php-fpm配置文件: vi PHP-fpm.conf 修改的地方如下:
1.#這裡將127.0.0.1改為真實服務器監聽地址,如果nginx和PHP程序在一台機器上則不用修改。
<value name="listen_address">192.168.2.189:9000</value> 2.打開注釋的進程屬組和屬主 Unix user of processes
  <value name="user">nobody</value>   Unix group of processes
  <value name="group">nobody</value>            #將這裡的注釋打開3.允許連接php的IP,將nginx的IP加上,如果nginx和PHP程序在一台機器上則不用修改。 <value name="allowed_clIEnts">192.168.2.187,127.0.0.1</value>
注意:
配置中max_children=進程個數,一個進程占有30M左右(視負載等情況會有波動,網上多為20M。我測試30較為接近)。進程多php響應快,但是如果把內存占滿,則會出現cpu使用率很低,但負載卻非常高的情況。所以配置此值得時候需考慮cpu、load average、mem的情況。   4.在/www目錄下加入文件index.php   <?PHP
  PHPinfo();
  ?>
5./usr/local/php/sbin/php-fpm start 啟動PHP   nginx中修改:   server     listen       80;
    server_name  www.test.com;
    index index.Html index.PHP;
    root  Html;     location ~ .*\.(php|php5)?$       root /www;              php在本機的話,PHP文件放在此目錄下
      fastCGI_pass  192.168.2.189:9000;        
     #fastcgi_pass  127.0.0.1:9000;   如果php也同樣安裝在本機的話,這裡可以寫上面的php-fpm.conf配置同       fastCGI_index index.PHP;
      fastcgi_param  SCRIPT_FILENAME  /www/$fastCGI_script_name;
      include fastCGI_params;
    } 訪問 出現php的信息頁,說明nginx將PHP的請求轉給了192.168.2.189   記錄我在這出的錯誤,
一:nginx配置錯誤,找不到index.php,返回404。nginx.conf為:     location ~ .*\.(php|php5)?$       fastcgi_pass  192.168.2.189:9000;           fastCGI_index index.PHP;
      fastcgi_param  SCRIPT_FILENAME  $document_root$fastCGI_script_name;
      include fastCGI.conf;
1.$document_root應改為192.168.2.189上php的真實目錄,如果php也在本機那就無所謂了 2.不應該使用fastcgi.conf,因為在這配置中第一行就為fastcgi_param  SCRIPT_FILENAME    $document_root$fastCGI_script_name; 所以也導致訪問不到遠端真實文件二:PHP-fpm.conf配置錯誤
忘記將 <value name="listen_address">127.0.0.1:9000</value>這裡的127.0.0.1改成真實的服務器IP地址,導致訪問成502錯誤。這裡僅完成了nginx和PHP的基本功能,其余:Tcmalloc Zend Eaccelerator等請參考
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved