Nginx+php+fastcgi在win7下的配置

首先裝載php
一、從www.php.net上下載php對應版本
二、解壓以後放到c盤下(其實放哪無所謂,Apache會有配置指向,可是Nginx不用)
三、由於用的5.3.17版本,已經有了php-cgi.exe這個,不用作其餘的事情因此開始更改php的配置,先把php.ini-development這個文件改名爲php.ini,也有的版本ini後面跟的是別的,都改爲.ini
四、打開php.ini文件,修改:
配置:
extension_dir = "這裏寫你的ext文件夾路徑"     ;這個路徑是指向擴展庫的路徑
upload_tmp_dir = "這裏寫你的上傳緩存目錄"     ;上傳圖片之類的緩存這裏
session.save_path = "這裏寫你的session緩存目錄"    ;這個是以文件形式儲存sission,若是以數據庫存儲session則須要另外配置
 
打開如下擴展:
extension=php_curl.dll
extension=php_gd2.dll
extension=php_mbstring.dll
extension=php_mysql.dll
extension=php_mysqli.dll
extension=php_pdo_mysql.dll
extension=php_pdo_odbc.dll
extension=php_pdo_sqlite.dll
extension=php_xmlrpc.dll
 
定義所在時區(本人定義的是上海時區):
date.timezone = Asia/Shanghai
 
因爲Nginx要求cgi方式的php,還要修改如下配置
enable_dl = On
cgi.force_redirect = 0
cgi.fix_pathinfo=1
fastcgi.impersonate = 1
cgi.rfc2616_headers = 1  
 
配置Nginx:
一、從 http://nginx.org上下載Nginx,總之從官網上下個,無論官網是否是改地址了,貌似1.3.7版本沒有分32位仍是64位。
二、解壓以後放c盤下(放別處應該也成,習慣了……)
三、打開conf,更改nginx.conf
打開log目錄:
error_log logs/error.log;
更改其餘配置
server {
        listen       8080;#由於裝了Apache已經佔用了80接口
        server_name  localhost;
        charset utf-8;#默認文件編碼
        #charset koi8-r;
 
        #access_log  logs/host.access.log  main;
 
        location / {
            root   d:/nginxWeb;#這裏改爲你本身的虛擬目錄,注意!Nginx1.3.7及如下版本不支持文件路徑中間有空格也不支持中文!!!這個以上的版本不知道會不會支持,不過這個如下是不支持的……雖然Apache支持啊……
            index  index.html index.htm index.php;#注意這裏添加了index.php,若是沒有添加這個有可能報403錯誤,這個是win下的,linux或者其餘系統是否會有此問題未知。
autoindex on;#若是文件不存在,列出目錄樹結構
        }
        #error_page  404              /404.html;
 
        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
 
        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}
 
        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        location ~ \.php$ {
            fastcgi_pass   127.0.0.1:9000;#fastcgi監聽的端口,與php的cgi啓動時指定的要一致
            fastcgi_index  index.php;#默認首頁
            fastcgi_param  SCRIPT_FILENAME  D:/nginxWeb$fastcgi_script_name;#啓動路徑,這裏只須要將「D:/nginxWeb」這部分改成你的安裝路徑就能夠了
            include        fastcgi_params;
        }
 
        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }
 
運行:
一、先要運行起php的cgi,因爲本人用的win7系統,因此cmd先進的c盤(以前全扔c盤這就簡單了~),訪問到php路徑中,輸入
php-cgi.exe -b 127.0.0.1:9000
注意這裏的-b 127.0.0.1:9000是指定cgi的監聽端口,與上文中的Nginx配置要一致,若是有其餘配置不記得以前php-cgi是那個端口,可使用php-cgi.exe -h命令來查看配置(查看-b 後面的<address:port>)。想要查看全部被監聽的端口則輸入netstat -na
 
二、運行Nginx
另開啓一個終端,訪問到nginx文件夾下,輸入nginx.exe
 
保持兩個終端不關閉,訪問由瀏覽器訪問虛擬目錄下的文件。
 
運行後自動關閉cmd的方法:
一、下載RunHiddenConsole.exe(http://redmine.lighttpd.net/attachments/660/RunHiddenConsole.zip)
二、建立start_php.bat,來啓動php,文件內容以下:
@echo off
echo Starting PHP FastCGI...
RunHiddenConsole.exe d:\php\php-cgi.exe -b 127.0.0.1:9000 -c d:\php\php.ini
三、建立stop_nginx.bat,來關閉php和nginx進程,文件內容以下:
@echo off
echo Stopping nginx...
taskkill /F /IM nginx.exe > nul
echo Stopping PHP FastCGI...
taskkill /F /IM php-cgi.exe > nul
exit
 
相關問題:
一、403錯誤:在nginx.conf中的index配置未加入index.php是致使403錯誤的其中一個緣由
二、cmd中運行Nginx.exe產生錯誤多是Nginx的路徑中有中文、特殊符號、空格——雖然windows容許這樣命名,可是nginx會報錯(如以前吐槽的,Apache能夠,爲何Apache要把精力放在容許空格和中文做路徑上而不是改善其餘的啊……費解),還有多是Nginx的虛擬路徑中存儲了中文名稱的文件,也可能致使nginx沒法運行。
三、Nginx能夠運行並而且解析HTML可是沒法解析PHP,這個時候要看php-cgi.exe是否起來了,還要看nginx.conf中的監聽端口和php-cgi的監聽端口是否一致,如同上文配置中寫到的,有不少方法查看。
相關文章
相關標籤/搜索