Windows下编译Nginx超详细教程

Nginx在Linux下表现不用多说,在Windows下Nginx的表现还欠佳,但在Web应用性能整体要求不高的情况下,把Nginx作为一个反向和少量请求逻辑处理的应用还是很方便的。

网络上介绍的文章不少包括nginx的官网也有介绍,但是介绍都比较简单对于一些细节并没有提到,所以我把我摸索的一些经验写下来,希望可以帮助到正在找资料到人。


默认的nginx已经包含了很多通用的模块,详见:
但是如果需要增加一些第三方的模块的话(比如淘宝的combo 模块:https://github.com/alibaba/nginx-http-concat)则需要下载nginx的源码并加入新的模块重新编译。下面我就来介绍下如何在windows下编译nginx并添加combo模块的。

需要准备的工具:

0.安装MSYS

下载mingw-get-setup.exe直接执行直接下一步即可,安装完成之后找到文件bin/mingw-get.exe打开,用这个来安装msys点击左侧的Basic Setup右侧选择mingw32-base和msys.base只有点击菜单isntallation-》Apply Changes 开始下载,完成之后点击左侧All Packages-》MSYS-》MSY Base System检查右侧菜单的选中组件中是否有msys-make、msys-tar因为这两个组件会在接下来用到。

1.下载nginx源码和依赖模块

首先安装Mercurial并在环境变量中添加C:\Program Files\Mercurial\目录,因为我们需要在命令行中使用hg命令来获取nginx的源码。

hg clone http://hg.nginx.org/nginx

下载到本地,需要注意的是不知道是不是我的网络问题下载过程很不稳定,如果不成功多试几次!
下载nginx的依赖模块就放到nginx源码的同级目录中,包括combo的源码:

nginx lib ---openssl-1.0.1s.tar.gz ---pcre-8.37.tar.gz ---zlib-1.2.8.tar.gz ---nginx-http-concat 2.解压依赖组件包下载

在nginx目录中新建build文件夹做为我们编译目录,并在build中新增lib存放依赖包解压目录。

nginx ---build ------lib

打开MSYS安装目录下的msys.bat命令行工具,cd到nginx/build/lib目录下执行:

tar -xzf ../../lib/openssl-1.0.1s.tar.gz tar -xzf ../../lib/pcre-8.37.tar.gz tar -xf ../../lib/zlib-1.2.8.tar.gz

zlib下载了后好像不是gzip格式的所以不能用-z参数,combo模块因为是源码直接拷贝到nginx/build/lib下即可
目前目录呈现这样子:

nginx ---build ------lib ---------openssl-1.0.1s ---------pcre-8.37 ---------zlib-1.2.8 ---------nginx-http-concat 3.配置nginx生成Makefile文件

如果打包的系统是x64的话需要在生成Makefile之前把openssl模块的配置修改为x64的,到nginx/build/lib/openssl-1.0.1s目录下,找到INSTALL.W64文件,用编辑器打开,找到类似如下文字:

To build for Win64/x64: > perl Configure VC-WIN64A > ms\do_win64a > nmake -f ms\ntdll.mak > cd out32dll > ..\ms\test

在cmd命令行中cd到目录下分别执行前两句:

> perl Configure VC-WIN64A > ms\do_win64a

执行成功即可。
接下来。。。

启动msys.bat并cd到nginx源码目录下执行:

auto/configure --with-cc=cl --builddir=build --prefix= \ --conf-path=conf/nginx.conf --pid-path=logs/nginx.pid \ --http-log-path=logs/access.log --error-log-path=logs/error.log \ --sbin-path=nginx.exe --http-client-body-temp-path=temp/client_body_temp \ --http-proxy-temp-path=temp/proxy_temp \ --http-fastcgi-temp-path=temp/fastcgi_temp \ --with-cc-opt=-DFD_SETSIZE=1024 --with-pcre=build/lib/pcre-8.37 \ --with-zlib=build/lib/zlib-1.2.8 --with-openssl=build/lib/openssl-1.0.1s \ --with-select_module --with-http_ssl_module --with-ipv6 \ --with-http_sub_module \ --add-module=build/lib/nginx-http-concat

执行完毕之后在build目录下会生成一堆文件,其中Makefile就是我们生成的编译批处理文件了。

接下来继续执行命令:

nmake -f build/Makefile

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/229ab8e681f59920ebc285b10521afb3.html