歡迎您光臨本站 註冊首頁

nginx+php的兩種模式筆記

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

nginx+php的兩種模式筆記

實驗環境:VMware Workstation  RHEL5.5
一、軟體安裝:
為簡潔,這裡選擇Apache和php為系統自帶安裝,沒裝的話直接yum全部安裝即可。自帶軟體幾乎不用配置,即可完成apache到php的解析,並且php-cgi也是安裝上了的。
Nginx包:nginx-0.9.3.tar.gz
首先為nginx建立一個用戶:
#groupadd nginx
#useradd –shell=/sbin/nologin –g nginx nginx –M
安裝nginx:
#tar zxvf nginx-0.9.3.tar.gz
#cd nginx-0.9.3
#./configure -–prefix=/usr/local/nginx --user=nginx –-group=nginx
#make && make install

二、第一種方式,即nginx--proxy--apache--php
1)、首先配置apache解析php。
編輯httpd.conf,主要修改如下:
DocumentRoot "/usr/local/nginx/html/"  網頁文件根目錄
<Directory "/usr/local/nginx/html/">
DirectoryIndex   index.php index.html index.html.var
這裡保持apache監聽80埠,默認不變,重啟apache。系統自帶安裝的apache和php只需修改以上地方,即可解析php。
在/usr/local/nginx/html目錄,已存在一個index.html,這個是nginx安裝留下的,再在裡面手動建立一個index.php,內容如下:
<?php
        echo 「This is the apache to php」;
?>
瀏覽器輸入本機ip即可訪問。
2)、配置nginx。
修改nginx配置文件
#vi /usr/local/nginx/conf/nginx.conf  主要修改如下:
user  nginx;  #這裡一定要是一個存在的用戶,即剛才建立的那個nginx用戶
#在http大括弧內,一個server即為一個虛擬主機,這裡只設一個,即只修改保留一個#server即可
server {
        listen       8000;   #這裡設置nginx監聽8000埠
        server_name  localhost;   #虛擬主機名為localhost,即為本機
        location / {
            root   html;  #這裡為網頁文件根目錄,即/usr/local/nginx/html
            index  index.html index.php index.htm;
        }
                #這段location處理純靜態html,下面的location才是處理php
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#這是配置文件裡面的解釋,意思就是凡是以.php結尾的文件,都送到127.0.0.1上
#的80埠,也就是前面配置的apache伺服器。
                location ~ \.php$ {   #這裡表示匹配以.php結尾的文件
            proxy_pass   http://127.0.0.1:80;
        }
}
保存修改,啟動nginx:
#/usr/local/nginx/sbin/nginx
瀏覽器輸入http://127.0.0.1:8000 即可訪問nginx的靜態index.html頁面,
輸入http://127.0.0.1:8000/index.php ,即可訪問前面建立的index.php頁面,
如果瀏覽器返回正確的內容,即表示解析成功。


三、第二種方式,即nginx-fastcgi-php
Fastcgi是管理CGI解釋器的,它把CGI解釋器保存到內存中,來提高性能。原本CGI一次請求完畢就會結束,如果再次請求,就要重新載入到內存,這種模式似的對php的解釋變得很慢,fastcgi將CGI保持在內存中,即使一次請求完畢,也不會退出,下次請求,無需載入即可立即解釋,這樣就能很好的提高訪問性能,代價就是消耗更多的內存。
這裡無需用到apache,可以把apache停掉。
1)、配置nginx
#vi /usr/local/nginx/conf/nginx.conf 這裡保持前面的配置不變,只在上面做修改即可
#location ~ \.php$ {
#            proxy_pass   http://127.0.0.1:80;
#       }
將上面這段註釋掉,採用另一種方式來解析php
location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            include        fastcgi.conf;
        }
服務地址埠為127.0.0.1:9000,即為本機的9000埠,意思是所有以.php為結尾的文件,都送到本機9000埠由php-cgi來處理。
包含fastcgi.conf配置文件,下面對fastcgi.conf做修改,主要修改如下:
# vi /usr/local/nginx/conf/fastcgi.conf
fastcgi_param  SERVER_SOFTWARE    nginx;  #改為nginx,其他都默認即可
保存退出。
2)、啟動php-cgi
# php-cgi -b 127.0.0.1:9000 &  
指定伺服器的地址和埠,這裡為前面配置文件裡面配置過的地址和埠,並放在後台運行。
再重新啟動nginx即可

3)、測試
關掉apache,這時瀏覽器輸入127.0.0.1是不能訪問的
瀏覽器里輸入http://127.0.0.1:8000
即可訪問nginx的靜態頁面
輸入http://127.0.0.1:8000/index.php
如果成功放回php頁面的結果,則表示解析成功


以上為nginx+php的最簡配置,apache和php都是系統自帶安裝的,只有nginx是編譯安裝,配置文件都是在默認配置文件裡面做的修改,其他都保持默認,實驗只是想學習nginx+php的工作原理,沒有做任何的優化,甚至資料庫也沒有。
更詳細系統的nginx的配置優化,參見:
張宴《實戰nginx:取代apache的高性能web伺服器》一書。


本筆記根據實時實驗回憶而作,不足之處請指出,謝謝。
主要參考《實戰nginx:取代apache的高性能web伺服器》一書。


最後介紹個QQ群:139570407  裡面都是熱愛學習的學生,上班族,希望熱愛技術熱愛學習的都能加入,一起討論技術,學習,生活,謝謝!!

[火星人 ] nginx+php的兩種模式筆記已經有465次圍觀

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