歡迎您光臨本站 註冊首頁

移植nginx到Windows上做開發環境的過程

←手機掃碼閱讀     火星人 @ 2014-03-04 , reply:0

移植nginx到Windows上做開發環境的過程

我的電腦的內存不多,跑apache久了感覺很吃力,Nginx吃內存就像記事本吃那麼點,所以我自己編譯一個來做開發用

安裝前提:
安裝好cygwin,並安裝了gcc和g++  (安裝見http://www.xueler.com/docs/tool/%E5%AE%89%E8%A3%85cygwin)
gzip 模塊需要 zlib 庫
rewrite 模塊需要 pcre 庫  
安裝nginx前先將pcre和zlib裝好
如果要使用ssl,還要openssl庫
[*]1、從nginx.net 下載源碼 nginx-0.7.24.tar.gz 存放到D:\linux\下[*]2、使用cygwin把nginx安裝到d:/server/nginx安裝命令cd /cygdrive/d/linux
tar zxvf nginx-0.7.24.tar.gz
cd nginx-0.7.24
./configure --prefix=/cygdrive/d/server/nginx --with-cc-opt="-D FD_SETSIZE=2048"
make && make install如果不加–with-cc-opt=」-D FD_SETSIZE=2048」的話,你裝好nginx后運行會出現

  2008/01/12 16:34:56 2496#0: the maximum number of files supported by select() is 64的錯誤提示,這表示FD_SETSIZE的值比nginx配置文件中worker_connections指令所指定的值,你可以把nginx.conf里的worker_connections選項改小一些,比如44,加了–with-cc-opt=」-DFD_SETSIZE=2048」后就不會碰到這問題

[*]3、從cygwin的bin目錄中把 cygcrypt-0.dll,cygpcre-0.dll,cygwin1.dll,cygz.dll拷貝到D:\server\nginx\sbin中用cygwin編譯的nginx要獨立於cygwin運行的時候需要這幾個擴展

到這裡就安裝完成了,下面來配置。
php和MySQL什麼裝這裡就不說了,我用的php解壓在D:\server\php
如果沒有裝php和mysql,nginx這樣的安裝與配置照樣能跑靜態文件

[*]4、配置nginx+php+MySQL我要打開一個cgi進程來監聽處理php腳本(在windows下開發打開一個cgi進程已經能解決問題了)
我要啟動nginx,MySQL,讓nginx把對腳本的請求轉發給php-cgi處理
我還要方便的關閉php-cgi、nginx和MySQL

打開在d:/server/nginx/conf/nginx.conf
這個配置文件里給我們創建了一個默認的虛擬主機localhost,文檔根目錄在d:/server/nginx/html/
找到 index  index.html index.htm;
改成 index  index.html index.htm index.php;
添加了nginx支持默認的php首頁
把內容類似下面幾行配置的內容前的註釋去掉並改成

location ~ \.php$ {
    root           html;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  D:/server/nginx/html$fastcgi_script_name;
    include        fastcgi_params;
}[*]5/製作nginx啟動關閉腳本在d:/server/nginx下創建start.bat和stop.bat
內容分別為:
d:/server/nginx/start.bat@echo off
echo php-cgi 正在啟動 ...
start /b D:\server\php\php-cgi.exe -b 127.0.0.1:9000 -c d:\server\php\php.ini
echo php-cgi 啟動完成 ...

echo nginx 正在啟動 ...
d:/server/nginx/sbin/nginx.exe
echo nginx 啟動完成 ...

net start mysql
echo 啟動完成d:/server/nginx/stop.bat@echo off
echo php-cgi 正在關閉 ...
tskill php-cgi
echo php-cgi 關閉完成

echo nginx 正在關閉 ...
tskill nginx
echo nginx 關閉完成

net stop mysql
echo 關閉MySQL完成打開d:/server/nginx/start.bat和d:/server/nginx/stop.bat就可以分別啟動和關閉nginx+php+mysql(cgi)了

儘管是編譯安裝nginx,但是nginx代碼不是很多,編譯安裝完成所需時間比安裝Dreamweaver CS4要快多了
因為使用的是cygwin環境來把unix軟體編譯到window下運行,所以這裡有個問題是:我們只能在D:/server/nginx內創建虛擬主機目錄,在D:/server/nginx之外將無法讀取到裡面的web文檔文件
把 configure改成./configure --prefix=/cygdrive --http-fastcgi-temp-path=d/server/fastcgi_temp --http-proxy-temp-path=d/server/proxy_temp --http-client-body-temp-path=d/server/client_body_temp --http-log-path=d/server/logs/access.log --error-log-path=d/server/logs/error.log --pid-path=d/server/logs/nginx.pid --sbin-path=d/server/sbin/nginx --conf-path=d/server/conf/nginx.conf --with-cc-opt="-D FD_SETSIZE=2048"可以讓nginx讀到nginx prefix以外的分區,但分區名中不能帶: 並且只能用/,不能用\
比如把root設置到e:\web要寫成 root     e/web

下載我編譯和配置好的nginx0.7.24,編譯后的文件很小,裡面占空間的是安裝流程文件
這篇帖子在這裡更新
《解決方案》

以cgi形式運行,不能用於大型應用吧?
《解決方案》

我下載了你的安裝文件,直接裝在了d盤的d:\server\nginx  可是無法讀取到其他盤裡面的web文檔文件
按照你說的 root  e/web設置了還是找不到啊
我的系統是win2003伺服器
《解決方案》

你看下nginx錯誤日誌就明白了
在ngxin安裝目錄/logs下
《解決方案》

原帖由 jiedushi 於 2008-12-19 14:03 發表 http://bbs2.chinaunix.net/images/common/back.gif
我下載了你的安裝文件,直接裝在了d盤的d:\server\nginx  可是無法讀取到其他盤裡面的web文檔文件
按照你說的 root  e/web設置了還是找不到啊
我的系統是win2003伺服器
如果你要把目錄設置為 E:\webroot目錄的話
那你在nginx.conf配置文件中需要寫成       /cygdrive/e/webroot
前面必須加/cygdrive/ 才能表示是從盤符開始。

感覺nginx比apache好的地方就是 修改配置文件是實時生效不需要重啟服務。

[火星人 ] 移植nginx到Windows上做開發環境的過程已經有1079次圍觀

http://coctec.com/docs/service/show-post-24299.html