1.Nginx介紹php
Nginx是一個很是輕量級的HTTP服務器,Nginx,它的發音爲「engine X」, 是一個高性能的HTTP和html
反向代理服務器,同時也是一個IMAP/POP3/SMTP 代理服務器。mysql
2.對PHP支持nginx
目前各類web 服務器對PHP的支持一共有三種:web
(1)經過web 服務器內置的模塊來實現,例如Apache的mod_php5,相似的Apache內置的mod_perl正則表達式
能夠對perl支持。sql
(2)經過CGI來實現,這個就比如以前perl的CGI,該種方式的缺點是性能差,由於每次服務器遇到apache
這些腳本都須要從新啓動腳本解析器來執行腳本而後將結果返回給服務器;ubuntu
另外一方面就是不太安全;該方面幾乎不多使用了。瀏覽器
(3)最新出現一種叫作FastCGI。所謂FastCGI就是對CGI的改進。它通常採用C/S結構,通常腳本處理器
會啓動一個或者多個daemon進程,每次web 服務器遇到腳本的時候,直接交付給FastCGI的進程來執行,而後
將獲得的結果(一般爲html)返回給瀏覽器。
2.1 Apache+mod_php模式
咱們好久一段時間使用經典的Apache+mod_php。
Apache對PHP的支持是經過Apache的模塊來支持的。若是從源代碼編譯安裝PHP的話,若是但願Apache支持
PHP的話,在./configure步驟須要指定--with-apxs2=/usr/local/apache2/bin/apxs 表示告訴編譯器經過
Apache的mod_php5/apxs來提供對PHP5的解析;並且在最後一步make install的時候咱們會看到將動態連接庫
libphp5.so拷貝到apache2的安裝目錄的modules目錄下,而且還須要在httpd.conf配置文件中添加LoadModule
語句來動態將libphp5.so模塊加載進來,從而實現Apache對php的支持。
2.2 Nginx+FastCGI模式
Nginx徹底是輕量級的,必須藉助第三方的FastCGI處理器才能夠對PHP進行解析,所以其實這樣看來Nginx是
很是靈活的,它能夠和任何第三方提供解析的處理器實現鏈接從而實現對PHP的解析(在nginx.conf中很容易設置)。
Nginx可使用spwan-fcgi。在早期版本中須要安裝lighttpd,可是在9.10版本之後直接安裝spawn-fcgi就能夠。
如今出現了新的第三方的PHP的FastCGI處理器,叫作PHP-FPM,能夠了解一下。本文是基於spawn-fcgi實現對
PHP模塊的支持。
2.3 安裝FastCGI
/usr/bin/spawn-fcgi這個文件來管理 FastCGI,它原屬於lighttpd這個包裏面,但 9.10 後,spawn-fcgi
被分離出來單獨成包。
(1)使用apt-get在線安裝命令以下:
$sudo apt-get install spawn-fcgi
(2)源代碼安裝以下,下載地址爲:
http://www.lighttpd.net/download/spawn-fcgi-1.6.3.tar.gz
解壓縮之後,進入目錄下執行以下安裝命令:
$./configure
$make
$make install
安裝以後,spawn-fcgi命令就能夠直接使用了,它的可執行文件在/usr/local/bin/spawn-fcgi。
3.Nginx安裝
3.1 安裝Nginx
(1)在線安裝
$sudo apt-get install nginx
Nginx的版本是1.2.1
ubuntu安裝Nginx以後的文件結構大體爲:
全部的配置文件都在/etc/nginx下,而且每一個虛擬主機已經安排在了/etc/nginx/sites-available下
啓動程序文件在/usr/sbin/nginx
日誌放在了/var/log/nginx中,分別是access.log和error.log
並已經在/etc/init.d/下建立了啓動腳本nginx
默認的虛擬主機的目錄設置在了/usr/share/nginx/www
(2)源代碼安裝
下載地址:http://nginx.org/download/
我這裏下載的是 nginx-1.3.9.tar.gz,安裝過程很簡單,以下:
$./configure
$make
$make install
安裝成功以後,nginx放置在/usr/local/nginx目錄下,主要的配置文件爲conf目錄下的nginx.conf,
nginx的啓動文件在sbin目錄下的nginx文件。
3.2 啓動Nginx
(1)在線安裝的啓動過程
$sudo /etc/init.d/nginx start
(2)源代碼安裝的啓動過程
$cd /usr/local/nginx
$sbin/nginx
而後就能夠訪問了,http://localhost/ , 一切正常!若是不能訪問,先不要繼續,看看是什麼緣由,
解決以後再繼續。
若是你的機器同時安裝了Apache,那上面的訪問方式就不能使用了,並且nginx都可能啓動不了,這是
由於它們都是用了80這個端口。咱們這裏將nginx的端口修改成8080,
這裏主要修改nginx的配置文件nginx.conf,將一下這一行
listen 80;
修改成
listen 8080;
而後就能夠訪問了,http://localhost:8080/ 。
3.3 安裝PHP和MySQL
$sudo apt-get install php5-cli php5-cgi mysql-server php5-mysql
3.4 測試Nginx對PHP的支持
(1)從新啓動nginx:
$/etc/init.d/nginx restart
(2)啓動FastCGI:
$spawn-fcgi -a 127.0.0.1 -p 9000 -C 10 -u www-data -f /usr/bin/php-cgi
spawn-fcgi啓動出現錯誤時,查看php-cgi是否安裝,若是麼有的話,安裝php5-cgi。
$sudo apt-get install php5-cgi
(3)測試
打開http://localhost/phpinfo.php
4.Nginx配置
Nginx的配置文件是/etc/nginx/nginx.conf,其中設置了一些必要的參數,咱們發現其中這樣的語句:
include /etc/nginx/sites-enabled/*
能夠看出/etc/nginx/sites-enabled/default文件也是一個核心的配置文件,其中包含了主要的配置信息,
如服務器跟目錄、服務器名稱、location信息和server信息。
對於源代碼安裝的nginx,配置文件爲/usr/local/nginx/conf/nginx.conf。
下面主要說明location的匹配規則:
(1)= 前綴的指令嚴格匹配這個查詢。若是找到,中止搜索。
(2)剩下的常規字符串,最長的匹配優先使用。若是這個匹配使用 ^~ 前綴,搜索中止。
(3)正則表達式,按配置文件裏的順序,第一個匹配的被使用。
(4)若是第三步產生匹配,則使用這個結果。不然使用第二步的匹配結果。
在location中可使用常規字符串和正則表達式。
若是使用正則表達式,你必須使用如下規則:
(1)~* 前綴選擇不區分大小寫的匹配
(2)~ 選擇區分大小寫的匹配
例子:
location = / {
# 只匹配 / 查詢。
[ configuration A ]
}
location / {
# 匹配任何查詢,由於全部請求都以 / 開頭。
# 可是正則表達式規則和長的塊規則將被優先和查詢匹配。
[ configuration B ]
}
location ^~ /images/ {
# 匹配任何以 /images/ 開頭的任何查詢而且中止搜索。
# 任何正則表達式將不會被測試。
[ configuration C ]
}
location ~* \.(gif|jpg|jpeg)$ {
# 匹配任何以 gif、jpg 或 jpeg 結尾的請求。
# 然而全部 /images/ 目錄的請求將使用 Configuration C。
[ configuration D ]
}
這裏你還要對正則表達式有必定的瞭解!!!