转自:http://bbs.chinaunix.net.fastcdn.com/viewthread.php?tid=1328536
我的电脑的内存不多,跑apache久了感觉很吃力,Nginx吃内存就像记事本吃那么点,所以我自己编译一个来做开发用
安装前提:
安装好cygwin,并安装了gcc和g++ (安装见http://www.xueler.com/docs/tool/å®è£
cygwin)
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
CODE:
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
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 [emerg] 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中
到这里就安装完成了,下面来配置。
php和MySQL什么装这里就不说了,我用的php解压在D:\server\php
如果没有装php和mysql,nginx这样的安装与配置照样能跑静态文件
- 4、配置nginx+php+MySQL
我要启动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
CODE:
@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 启动完成
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
CODE:
@echo off
echo php-cgi 正在关闭 ...
tskill php-cgi
echo php-cgi 关闭完成
echo nginx 正在关闭 ...
tskill nginx
echo nginx 关闭完成
net stop mysql
echo 关闭MySQL完成
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改成
CODE:
./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,编译后的文件很小,里面占空间的是安装流程文件