免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 8195 | 回复: 4
打印 上一主题 下一主题

[Web] 移植nginx到Windows上做开发环境的过程 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-12-06 17:45 |只看该作者 |倒序浏览
我的电脑的内存不多,跑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
安装命令
  1. cd /cygdrive/d/linux
  2. tar zxvf nginx-0.7.24.tar.gz
  3. cd nginx-0.7.24
  4. ./configure --prefix=/cygdrive/d/server/nginx --with-cc-opt="-D FD_SETSIZE=2048"
  5. 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中
用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
  1. @echo off
  2. echo php-cgi 正在启动 ...
  3. start /b D:\server\php\php-cgi.exe -b 127.0.0.1:9000 -c d:\server\php\php.ini
  4. echo php-cgi 启动完成 ...

  5. echo nginx 正在启动 ...
  6. d:/server/nginx/sbin/nginx.exe
  7. echo nginx 启动完成 ...

  8. net start mysql
  9. echo 启动完成
复制代码
d:/server/nginx/stop.bat
  1. @echo off
  2. echo php-cgi 正在关闭 ...
  3. tskill php-cgi
  4. echo php-cgi 关闭完成

  5. echo nginx 正在关闭 ...
  6. tskill nginx
  7. echo nginx 关闭完成

  8. net stop mysql
  9. 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改成
  1. ./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,编译后的文件很小,里面占空间的是安装流程文件
这篇帖子在这里更新

论坛徽章:
0
2 [报告]
发表于 2008-12-08 01:24 |只看该作者
以cgi形式运行,不能用于大型应用吧?

论坛徽章:
0
3 [报告]
发表于 2008-12-19 14:03 |只看该作者
我下载了你的安装文件,直接装在了d盘的d:\server\nginx  可是无法读取到其他盘里面的web文档文件
按照你说的 root  e/web设置了还是找不到啊
我的系统是win2003服务器

论坛徽章:
0
4 [报告]
发表于 2008-12-20 15:10 |只看该作者
你看下nginx错误日志就明白了
在ngxin安装目录/logs下

论坛徽章:
0
5 [报告]
发表于 2009-02-25 14:25 |只看该作者
原帖由 jiedushi 于 2008-12-19 14:03 发表
我下载了你的安装文件,直接装在了d盘的d:\server\nginx  可是无法读取到其他盘里面的web文档文件
按照你说的 root  e/web设置了还是找不到啊
我的系统是win2003服务器

如果你要把目录设置为 E:\webroot目录的话
那你在nginx.conf配置文件中需要写成       /cygdrive/e/webroot
前面必须加/cygdrive/ 才能表示是从盘符开始。

感觉nginx比apache好的地方就是 修改配置文件是实时生效不需要重启服务。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP