實現nginx&php服務器配置的非主流配置方法
2024-08-30 12:27:19
供稿:網友
實現php&nginx服務器配置的非主流配置方法
這種方法并非以前所流行的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與libxml-dev這倆個軟件包,因為php默認會將xml的功能編譯進去,所以xml的支持是必不可少的。還有一個就是autoconf這條命令了,在編譯擴展的時候,phpize會調用系統中的這個命令來生成擴展包的 configure文件,沒有它你就不能作擴展了,這一點也是要記住的,畢竟linux下的php不像windows版那樣事先把所有的擴展都編譯好了。