nginx+php的配置

來源:互聯網
上載者:User
作了N多次php環境的搭建,網上的方法還真是多,但是實際操作起來總有一些大大小小的出入,很多錯誤經常讓我糾結不已.久病成醫,漸漸地我自己就總結出了一些經驗。自我感覺良好。

這種方法並非以前所流行的apache 加 php_module 的方式運行,我是採用nginx 作為web伺服器,以fastcgi的方式運行php。

linux下編譯:

nginx我還是習慣選擇8.54的版本,它的編譯依賴以下幾個軟體包,解壓這些源碼包,在configure中設定好這些源碼的路徑,nginx在編譯的時候會自己將他們編譯進去的:

   pcre: 主要用於rewrite等模組

   zlib: 這個不用說了

   openssl: 如果你還知道https這個東西,那麼你懂的~~~(當然你可以不需要這個功能)

   md5 /sha1: 這兩者都是用於產生資訊摘要的希哈演算法,這倆個東西不是必須的,但是我發現如果不選擇其中一個那麼openssl是不會成功地編譯進nginx的

下面是我自己寫的一個安裝指令碼,有temp-path字樣的編譯選項所設定都是nginx在運行時產生的臨時檔案的路徑,pid-path,lock-path也是臨時檔案路徑,log-path是記錄檔路徑,我因為自己機子上一些許可權的問題所以要設定一下.一般情況下其實這些是不必要的,nginx預設會統統把產生的這些檔案放在自己的安裝目錄下.

tmp=/tmp/nginx

log=/home/jsckdao/log

pcre=~/Downloads/pcre-8.02

zlib=~/Downloads/zlib-1.2.5-src

openssl=~/Downloads/openssl-0.9.8q

md5=~/Downloads/md5-1.3.0

./configure --prefix=/usr/local/nginx \

--http-proxy-temp-path=${tmp}/nginx-proxy.tmp \

--http-fastcgi-temp-path=${tmp}/nginx-fcgi.tmp \

--http-uwsgi-temp-path=${tmp}/nginx-uwsgi.tmp \

--http-scgi-temp-path=${tmp}/nginx-scgi.tmp \

--http-client-body-temp-path=${tmp}/nginx-client.tmp \

--pid-path=${tmp}/nginx.pid \

--lock-path=${tmp}/nginx.lock \

--http-log-path=${log}/http.log \

--error-log-path=${log}/http-error.log \

--with-pcre=$pcre \ #pcre 源碼包的路徑

--with-zlib=$zlib \ #zlib 源碼包的路徑

--with-http_ssl_module \ #起用ssl支援

--with-openssl=$openssl #openssl 源碼包路徑

make

make install

php(5.2)的編譯可以複雜點,也可以簡單點,因為我們編譯php時主要目的是編譯它的指令碼引擎和一些核心庫,很多外圍的東西不一定非要在編譯php的時候加進去,可以在需要的時候將它們編譯成擴充庫再修改設定檔來載入它們。

我的編譯代碼如下:

./configure --prefix=/usr/local/php \

--with-mysql=/usr/local/mysql \#設定mysql的安裝路徑

--enable-fastcgi \ #開啟fastcgi支援

--enable-debug #支援調試

make

make install

其實關於mysql的那一句都是可以不要的,只是我懶得再編譯一次mysql擴充,所以就這樣把它直接編譯進php了,這樣做的前提是你必須先安裝mysql。

令外還有一些注意事項:編譯php時必須確保系統中擁有libxml2與libxml2-dev這倆個軟體包,因為php預設會將xml的功能編譯進去,所以xml的支援是必不可少的。還有一個就是autoconf這條命令了,在編譯擴充的時候,phpize會調用系統中的這個命令來產生擴充包的configure檔案,沒有它你就不能作擴充了,這一點也是要記住的,畢竟linux下的php不像windows版那樣事先把所有的擴充都編譯好了。

至於window下nginx,php的安裝就沒有什麼難度了,下個zip包,解壓就能用,只要稍微配置就可以了.

配置:

如果只是想讓php能啟動並執行話那麼直接輸入命令:

./php-cgi -b 3344

這樣就開啟了php的fastcgi進程了,-b參數是綁定該進程的偵聽連接埠,隨便找個沒用的連接埠填就可以了,這裡綁定的是3344.

然後在nginx的設定檔中加上這麼幾行:

location ~ \.php$ {

  root    /home/jsckdao/www; #這是你網站的根目錄

  fastcgi_pass  127.0.0.1:3344; #這裡指定了fastcgi進程偵聽的連接埠,nginx就是通過這裡與php互動的

  fastcgi_index  index.php;

  fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;

  include    fastcgi_params;

}

如果要改nginx的偵聽連接埠的話找到"listen"這麼一項,改就是了.運行nginx,在/home/jsckdao/www目錄中寫一個測試檔案test.php:

phpinfo();

?>

訪問http://localhost:8080/test.php,如果顯示了php所以的配置資訊,那麼就基本沒什麼問題,已經可以用這個環境寫些php代碼了.

至於php的調試器我選擇xdebug,不為什麼,習慣所致。載入xdebug時,在設定檔中的寫法根據系統的不同好像也有點不同。linux下是:zend_extension_debug=,window中載入的dll有兩種,一種檔案名稱會帶有ts的尾碼,這種要這要樣寫:zend_extension_ts=另外一種就這樣:zend_extension=,path一定要寫絕對路徑。雖然ts為何意我也不是很清楚,但是這些設定是一定不可以搞錯的。

設定好後重新運行php-cgi,然後重新訪問test.php,如果有xdebug的那一塊出現了,那麼就成功了.

當然這是一個很簡單的配置,只能讓你運行php,要想真正做成你需要的開發環境,還需要你根據自己的需要修改php和nginx的設定檔,這些配置內容很多,我自己也在學習中,就不好多講了.

另外有一點需要注意,php的設定檔在它的源碼包中有兩個:php.ini-dist和php.ini-recommended,分別是針對產生環境和開發環境的配置.你需要把其中一個改名為php.ini.重啟後查看phpinfo()的頁面,靠上的地方有一項" Loaded Configuration File",它的值如果就是你的php.ini的路徑,那麼就沒問題了,如果不是話,就看看上面一項" Configuration File (php.ini) Path",你把你的php.ini檔案移到這個目錄下在重啟就可以了.因為php預設會在這個路徑下尋找php.ini的.當然你也可以在運行php-cgi的時候設定你的php.ini路徑,比如這樣:

php-cgi -b 3344 -c /home/jsckdao/php.ini

這樣就是把/home/jsckdao/php.ini這個檔案作為設定檔了.

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.