Ubuntu中Nginx的安裝與配置

原文地址:http://www.cnblogs.com/languoliang/archive/2013/04/01/nginx.html


1.Nginx介紹

     Nginx是一個非常輕量級的HTTP服務器,Nginx,它的發音爲“engine X”, 是一個高性能的HTTP和

反向代理服務器,同時也是一個IMAP/POP3/SMTP 代理服務器。

2.對PHP支持

     目前各種web 服務器對PHP的支持一共有三種:

   (1)通過web 服務器內置的模塊來實現,例如Apache的mod_php5,類似的Apache內置的mod_perl

可以對perl支持。

   (2)通過CGI來實現,這個就好比之前perl的CGI,該種方式的缺點是性能差,因爲每次服務器遇到

這些腳本都需要重新啓動腳本解析器來執行腳本然後將結果返回給服務器;

另一方面就是不太安全;該方面幾乎很少使用了。

   (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 ]

  }

  這裏你還要對正則表達式有一定的瞭解!!!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章