windows平臺(tái)中配置nginx+php環(huán)境
剛看到nginx這個(gè)詞,我很好奇它的讀法(engine x),我的直譯是"引擎x",一般引"擎代"表了性能,而"x"大多出現(xiàn)是表示"xtras(額外的效果)",那么整個(gè)詞的意思就是類似"極致效果","額外性能"。當(dāng)然這里不是要來嘮嗑,以上是題外話。
nginx相較于我們熟悉的apache,IIS的優(yōu)勢(shì),就我淺入淺出的了解,在于"反向代理"和"負(fù)載均衡"。因此考慮到能夠?yàn)閃eb服務(wù)器節(jié)省資源,它可以代替apache來提供Web服務(wù)。那么上正題了,nginx有這么多優(yōu)勢(shì),那在windows下如何來配置nginx+php環(huán)境?網(wǎng)上看到還是那么多轉(zhuǎn)載來轉(zhuǎn)載去的文章。這里就我配置的過程,來介紹一下:
1、首先需要準(zhǔn)備的應(yīng)用程序包。
nginx:nginx/Windows-1.0.4
php:php-5.2.16-nts-Win32-VC6-x86.zip
RunHiddenConsole:RunHiddenConsole.zip
nginx下php是以FastCGI的方式運(yùn)行,所以我們下載非線程安全也就是nts的php包。
2、安裝與配置。
1)php的安裝與配置。
直接解壓下載好的php包,到D盤wnmp目錄(D:\wnmp),這里把解壓出來的文件夾重命名成php5。進(jìn)入文件夾修改php.ini-recommended文件為php.ini,并用Editplus或者Notepad++打開來。找到
extension_dir = "./ext"
更改為
extension_dir = "D:/wnmp/php5/ext"
往下看,再找到
;extension=php_mysql.dll;extension=php_mysqli.dll
實(shí)際中,可能還要開啟
extension=php_bz2.dll extension=php_curl.dll extension=php_gd2.dll extension=php_mbstring.dll extension=php_exif.dll extension=php_mcrypt.dll extension=php_mhash.dll extension=php_msql.dll extension=php_mssql.dll extension=php_mysql.dll extension=php_mysqli.dll extension=php_openssl.dll extension=php_pdo.dll extension=php_pdo_mssql.dll extension=php_pdo_mysql.dll extension=php_pdo_pgsql.dll extension=php_pdo_sqlite.dll extension=php_snmp.dll extension=php_sockets.dll extension=php_sqlite.dll extension=php_xsl.dll extension=php_zip.dll
前面指定了php的ext路徑后,只要把需要的擴(kuò)展包前面所對(duì)應(yīng)的“;”去掉,就可以了。這里打開php_mysql.dll和php_mysqli.dll,讓php支持mysql。
當(dāng)然不要忘掉很重要的一步就是,把php5目錄下的libmysql.dll文件復(fù)制到C:\Windows目錄下,也可以在系統(tǒng)變量里面指定路徑,當(dāng)然這里我選擇了更為方便的方法^_^。(測(cè)試發(fā)現(xiàn)不復(fù)制也是可以的)
到這里,php已經(jīng)可以支持mysql了。
接下來我們來配置php,讓php能夠與nginx結(jié)合。找到
;cgi.fix_pathinfo=1
我們?nèi)サ暨@里的分號(hào):
cgi.fix_pathinfo=1
這一步非常重要,這里是php的CGI的設(shè)置。
2)nginx的安裝與配置
把下載好的nginx-1.0.4的包同樣解壓到D盤的wnmp目錄下,并重命名為nginx。接下來,我們來配置nginx,讓它能夠和php協(xié)同工作。進(jìn)入nginx的conf目錄,打開nginx的配置文件nginx.conf,找到
location / { root html; #這里是站點(diǎn)的根目錄 index index.html index.htm; }
將root html;改為root D:/wnmp/www;加上index.php,即:
location / { root D:/wnmp/www; #這里是站點(diǎn)的根目錄 index index.php index.html index.htm; }
這里需要注意,路徑分隔符請(qǐng)使用/而不要使用Windows中的\以防歧義。
再往下,找到
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # #location ~ \.php$ { # root html; # fastcgi_pass 127.0.0.1:9000; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; # include fastcgi_params; #}
先將前面的#去掉,同樣將root html;改為root D:/wnmp/www;。再把標(biāo)記為紅色的/scripts改為$document_root,這里的$document_root就是指前面root所指的站點(diǎn)路徑,這是改完后的:
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # location ~ \.php$ { root D:/wnmp/www; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
設(shè)定error.log的存放目錄,將#error_log logs/error.log;的#去處,默認(rèn)error.log是存放在Nginx安裝目錄中l(wèi)ogs目錄下。
保存配置文件,就可以了。
nginx+php的環(huán)境就初步配置好了,來跑跑看。我們可以輸入命令:
php-cgi.exe -b 127.0.0.1:9000 -c D:/wnmp/www/php/php.ini
來啟動(dòng)php,并手動(dòng)啟動(dòng)nginx(可能不可行)。當(dāng)然也可以利用腳本來實(shí)現(xiàn)。
首先把下載好的RunHiddenConsole.zip包解壓到nginx目錄內(nèi),RunHiddenConsole.exe的作用是在執(zhí)行完命令行腳本后可以自動(dòng)關(guān)閉腳本,而從腳本中開啟的進(jìn)程不被關(guān)閉。然后來創(chuàng)建腳本,命名為start_nginx.bat,我們?cè)贜otepad++里來編輯它:
@echo off REM Windows 下無效 REM set PHP_FCGI_CHILDREN=5 REM 每個(gè)進(jìn)程處理的最大請(qǐng)求數(shù),或設(shè)置為 Windows 環(huán)境變量 set PHP_FCGI_MAX_REQUESTS=1000 echo Starting PHP FastCGI... RunHiddenConsole D:/phpsetup/php-5.4.45-nts-Win32-VC9-x86/php-cgi.exe -b 127.0.0.1:9000 -c D:/phpsetup/php-5.4.45-nts-Win32-VC9-x86/php.ini echo Starting nginx... RunHiddenConsole D:/phpsetup/nginx-1.6.0/nginx.exe -p D:/phpsetup/nginx-1.6.0
再另外創(chuàng)建一個(gè)名為stop_nginx.bat的腳本用來關(guān)閉nginx:
@echo off echo Stopping nginx... taskkill /F /IM nginx.exe > nul echo Stopping PHP FastCGI... taskkill /F /IM php-cgi.exe > nul exit
這樣,我們的服務(wù)腳本也都創(chuàng)建完畢了。雙擊start_nginx.bat,再看看進(jìn)程管理器是不是有兩個(gè)nginx.exe的進(jìn)程和一個(gè)php-cgi.exe的進(jìn)程呢?
這樣nginx服務(wù)就啟動(dòng)了,而且php也以fastCGI的方式運(yùn)行了。
到站點(diǎn)目錄下,新建一個(gè)phpinfo.php的文件,在里面編輯
<?php phpinfo(); ?>
保存后,打開瀏覽器輸入http://localhost/phpinfo.php,如果看到
就說明,nginx+php的環(huán)境已經(jīng)配置好了,呵呵~
Nginx 403 forbidden的解決辦法
常見的,引起nginx 403 forbidden有二種原因,一是缺少索引文件,二權(quán)限問題。
1、缺少index.html或者index.php文件
代碼如下:
server { listen 80; server_name localhost; index index.php index.html; root /var/www; }
如果在/var/www下面沒有index.php,index.html的時(shí)候,直接訪問域名,找不到文件,會(huì)報(bào)403 forbidden。
例如:你訪問www.test.com而這個(gè)域名,對(duì)應(yīng)的root指定的索引文件不存在。
權(quán)限問題
對(duì)于PHP而言,如果nginx用戶沒有web目錄的權(quán)限,則會(huì)導(dǎo)致該錯(cuò)誤。
解決辦法:修改web目錄的讀寫權(quán)限,或者是把nginx的啟動(dòng)用戶改成目錄的所屬用戶,重起一下就能解決。 如:
代碼如下(Linux下):
chown -R nginx_user:nginx_user /htdocs
相關(guān)文章
如何給phpcms v9增加類似于phpcms 2008中的關(guān)鍵詞表
本篇文章是對(duì)給phpcms v9增加類似于phpcms 2008中的關(guān)鍵詞表的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-07-07php 編寫安全的代碼時(shí)容易犯的錯(cuò)誤小結(jié)
PHP是個(gè)偉大的web開發(fā)語(yǔ)言,靈活的語(yǔ)言,但是看到php程序員周而復(fù)始的犯的一些錯(cuò)誤。我做了下面這個(gè)列表,列出了PHP程序員經(jīng)常犯的10中錯(cuò)誤,大多數(shù)和安全相關(guān)??纯茨惴噶藥追N2010-05-05PHP最常用的2種設(shè)計(jì)模式工廠模式和單例模式介紹
當(dāng)你在不斷的試圖從你的應(yīng)用程序中發(fā)現(xiàn)新的特征時(shí),你是否發(fā)現(xiàn)你提出的解決方法和一些以前你已經(jīng)實(shí)現(xiàn)的東西是如此的類似呢2012-08-08PHP 刪除一個(gè)目錄及目錄下的所有文件的函數(shù)代碼
PHP刪除一個(gè)目錄及目錄下的文件代碼,即刪除目錄或刪除文件。2010-05-05php數(shù)組合并array_merge()函數(shù)使用注意事項(xiàng)
array_merge()函數(shù)在php中是對(duì)數(shù)組進(jìn)行合并的,可以把多個(gè)數(shù)組合成一個(gè)數(shù)組,并且不改變?cè)瓟?shù)組(www.111cn.net)的值了,但今天我在使用array_merge合并數(shù)組時(shí)碰到幾個(gè)小細(xì)節(jié)上的問題,下面我舉例子給各位朋友看看2014-06-06微信自定義菜單的創(chuàng)建/查詢/取消php示例代碼
這篇文章主要為大家詳細(xì)介紹了微信自定義菜單的創(chuàng)建/查詢/取消php示例代碼,感興趣的小伙伴們可以參考一下2016-08-08如何阻止網(wǎng)站被惡意反向代理訪問(防網(wǎng)站鏡像)
最近有人用小站數(shù)據(jù),利用反向代理技術(shù),做了個(gè)小偷站。用戶訪問的是他的網(wǎng)址,但實(shí)質(zhì)上內(nèi)容數(shù)據(jù)確是我的,這是一起惡意反向代理事件2014-03-03PHP實(shí)現(xiàn)單文件、多個(gè)單文件、多文件上傳函數(shù)的封裝示例
這篇文章主要介紹了PHP實(shí)現(xiàn)單文件、多個(gè)單文件、多文件上傳函數(shù)的封裝,結(jié)合實(shí)例形式詳細(xì)分析了php文件上傳的原理及針對(duì)文件上傳函數(shù)的封裝相關(guān)操作技巧,需要的朋友可以參考下2019-09-09php讀取二進(jìn)制流(C語(yǔ)言結(jié)構(gòu)體struct數(shù)據(jù)文件)的深入解析
本篇文章是對(duì)php讀取二進(jìn)制流(C語(yǔ)言結(jié)構(gòu)體struct數(shù)據(jù)文件)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06