移植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好的地方就是 修改配置文件是實時生效不需要重啟服務。