Nginx 在 windows 环境下编译
参考文档: https://nginx.org/en/docs/howto_build_on_win32.html。
1. 环境准备
1.1 安装perl
安装地址: https://strawberryperl.com/, 选择msi安装程序安装即可。
1.2 安装sed for windows
从 sourceforge 上下载安装程序。
https://sourceforge.net/projects/gnuwin32/files/sed/
执行安装程序结束后,需要将安装包bin目录配置到环境变量下。
1.3 安装MSYS2
参考 https://www.msys2.org/ 下 installation 内容下载安装即可。
1.4 安装visual studio 2022环境
过程省略,主要使用其中的nmake环境。
1.5 下载源码、依赖库
- 源码下载: http://hg.nginx.org/nginx 网站下下载zip包;
- pcre2 源码下载地址:https://www.pcre.org/(注:部分版本需要下载pcre https://sourceforge.net/projects/pcre/)
- zlib 下载地址: https://zlib.net/
- openssl 下载地址:https://www.openssl.org/
2. 编译
2.1 解压源码
- 解压nginx源码
- 使用MSYS2 中解压zlib、openssl、pcre2
MSYS ~
$ cd /d/devPath/nginx/nginx-ee40e2b1d083/
MSYS /d/devPath/nginx/nginx-ee40e2b1d083
$ mkdir objs
MSYS /d/devPath/nginx/nginx-ee40e2b1d083
$ mkdir objs/lib
MSYS /d/devPath/nginx/nginx-ee40e2b1d083
$ cd objs/lib/
2.2 生成MAKEFILE文件
在nginx 源码根目录下执行auto命令
auto/configure \
--with-cc=cl \
--with-debug \
--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 \
--http-scgi-temp-path=temp/scgi_temp \
--http-uwsgi-temp-path=temp/uwsgi_temp \
--with-cc-opt=-DFD_SETSIZE=1024 \
--with-pcre=objs/lib/pcre2-10.39 \
--with-zlib=objs/lib/zlib-1.3 \
--with-openssl=objs/lib/openssl-3.0.12 \
--with-openssl-opt=no-asm \
--with-http_ssl_module
2.3 执行编译命令
注: 执行nmake命令需要安装好 perl 和 sed for windows
使用x86_x64 Cross Tools Command Prompt for VS 2022 命令行工具执行编译。
进入nginx源代码根目录并执行nmake命令。这个过程稍长一些,需要5-10分钟左右,安装成功后如图所示:
3. 测试nginx
安装结束后会在 objs下生成nginx.exe可执行程序。其中conf 需要从根目录下拷贝到objs下。
使用 nginx.exe -t -c conf\nginx.conf
或者 nginx.exe -t
命令测试nginx.conf 文件,根据提示分别在根目录下手动创建logs
、temp
目录
使用 start nginx
命令启动nginx服务,服务启动成功。