windows下配置nginx+php環境

windows下配置nginx+php環境

  剛看到nginx這個詞,我很好奇它的讀法(engine x),個人直譯是「引擎x」,通常引「擎代」表了性能,而「x」大多出現是表示「xtras(額外的效果)」,那麼整個詞的意思就是相似「極致效果」,「額外性能」。固然這裏不是要來嘮嗑,以上是題外話。php

  nginx相較於咱們熟悉的apache、IIS的優點,就我淺入淺出的瞭解,在於「反向代理」和「負載均衡」。所以考慮到可以爲Web服務器節省資源,它能夠代替apache來提供Web服務。那麼上正題了,nginx有這麼多優點,那在windows下如何來配置nginx+php環境?網上看到仍是那麼多轉載來轉載去的文章。這裏就我配置的過程,來介紹一下:html

一、首先須要準備的應用程序包。mysql

  nginx:nginx/Windows-1.0.4nginx

  php:php-5.2.16-nts-Win32-VC6-x86.zip (nginx下php是以FastCGI的方式運行,因此咱們下載非線程安全也就是nts的php包)sql

  (還會用到)RunHiddenConsole:RunHiddenConsole.zipapache

二、安裝與配置。windows

 1)php的安裝與配置。瀏覽器

  直接解壓下載好的php包,到D盤wnmp目錄(D:\wnmp),這裏把解壓出來的文件夾重命名成php5。進入文件夾修改php.ini-recommended文件爲php.ini,並用Editplus或者Notepad++打開來。找到安全

extension_dir = "./ext"

更改成服務器

extension_dir = "D:/wnmp/php5/ext"

往下看,再找到

;extension=php_mysql.dll
;extension
=php_mysqli.dll

前面指定了php的ext路徑後,只要把須要的擴展包前面所對應的「;」去掉,就能夠了。這裏打開php_mysql.dll和php_mysqli.dll,讓php支持mysql。固然不要忘掉很重要的一步就是,把php5目錄下的libmysql.dll文件複製到C:\Windows目錄下,也能夠在系統變量裏面指定路徑,固然這裏我選擇了更爲方便的方法^_^。

到這裏,php已經能夠支持mysql了。

  接下來咱們來配置php,讓php可以與nginx結合。找到

;cgi.fix_pathinfo=1

咱們去掉這裏的封號。

cgi.fix_pathinfo=1

這一步很是重要,這裏是php的CGI的設置。

 2)nginx的安裝與配置。

  把下載好的nginx-1.0.4的包一樣解壓到D盤的wnmp目錄下,並重命名爲nginx。接下來,咱們來配置nginx,讓它可以和php協同工做。進入nginx的conf目錄,打開nginx的配置文件nginx.conf,找到

location / {
     root   html;      #這裏是站點的根目錄
     index  index.html index.htm;
}

root  html;改成root   D:/wnmp/www;

再往下,找到

複製代碼

# 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;。再把標記爲紅色的/scripts改成「$document_root」,這裏的「$document_root」就是指前面「root」所指的站點路徑,這是改完後的:

複製代碼

# 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
;
}

複製代碼

保存配置文件,就能夠了。

  nginx+php的環境就初步配置好了,來跑跑看。咱們能夠輸入命令 

來啓動php,並手動啓動nginx,固然也能夠利用腳原本實現。

  首先把下載好的RunHiddenConsole.zip包解壓到nginx目錄內,RunHiddenConsole.exe的做用是在執行完命令行腳本後能夠自動關閉腳本,而從腳本中開啓的進程不被關閉。而後來建立腳本,命名爲「start_nginx.bat」,咱們在Notepad++裏來編輯它

複製代碼

@echo off
REM Windows 下無效
REM
set PHP_FCGI_CHILDREN=5

REM 每一個進程處理的最大請求數,或設置爲 Windows 環境變量
set PHP_FCGI_MAX_REQUESTS=1000

echo Starting PHP FastCGI...
RunHiddenConsole
D:/program/php5/php-cgi.exe -b 127.0.0.1:9000 -c D:/program/php5/php.ini

echo Starting nginx...
cd D:/program/nginx-1.7.9/
D:\projectFiles\wodemaya\script\RunHiddenConsole nginx.exe
cd D:\projectFiles\wodemaya\script\

複製代碼

再另外建立一個名爲stop_nginx.bat的腳本用來關閉nginx

@echo off
echo Stopping nginx...  
taskkill
/F /IM nginx.exe > nul
echo Stopping PHP FastCGI...
taskkill
/F /IM php-cgi.exe > nul
exit

作好後,是這樣的

這樣,咱們的服務腳本也都建立完畢了。雙擊start_nginx.bat看看進程管理器是否是有兩個nginx.exe的進程和一個php-cgi.exe的進程呢?

這樣nginx服務就啓動了,並且php也以fastCGI的方式運行了。

到站點目錄下,新建一個phpinfo.php的文件,在裏面編輯

<?php
   
phpinfo();
?>

保存後,打開瀏覽器輸入「http://localhost/phpinfo.php」,若是看到

就說明,nginx+php的環境已經配置好了,呵呵~


=======================================================================

nginx.conf僞靜態配置

替換project爲工程名稱,替換D:/data/www爲根目錄。

server {

listen 80;

server_name localhost;

root D:/data/www;

index index.php index.html index.htm;

autoindex on;

location /project/ {       

if (!-e $request_filename) {

#rewrite  ^/(.*)$  /index.php/$1  last;

rewrite  ^/project/(.*)$  /project/index.php/$1  last;

break;

}

fastcgi_pass   127.0.0.1:9000;

            fastcgi_index  index.php;

            fastcgi_param  SCRIPT_FILENAME  $document_root/$fastcgi_script_name;

            include        fastcgi_params;

}


location ~ .+\.php($|/) {

set $path_info "";

set $real_script_name $fastcgi_script_name;

if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {

set $real_script_name $1;

set $path_info $2;

}


fastcgi_param  HTTPS on;

fastcgi_pass 127.0.0.1:9000;

#fastcgi_index  index.php;

fastcgi_param SCRIPT_FILENAME  D:/data/www$fastcgi_script_name;

include fastcgi_params;

fastcgi_param SCRIPT_NAME $real_script_name;

fastcgi_param PATH_INFO $path_info;

}

}

相關文章
相關標籤/搜索