schips

Windows 编译安装 nginx 服务器 + rtmp 模块

本人的有关博客:《Windows 编译安装 nginx 服务器 + rtmp 模块》、《Ubuntu 编译安装 nginx》、《Arm-Linux 移植 Nginx

背景:

公司产品有使用 nginx+ rtmp 的技术要求,本人在 arm、Ubuntu都配置过。为了配合同事开发,所以尝试在Windows搭建这样的生产环境。

注意:虽然官网上有提供编译好的windows版本的nginx ,但凡需要添加删除模块的,都需要通过nginx源码进行编译。

Host    :Windows-10,core-i7

MinGW  :网络版

VS    : VS-2017(Community)

Mercurial  :5.02

pcre    : 8.30

编译之前的环境搭建

以下软件的安装,路径不要出现中文字符与空格

安装 MinGW

下载好MinGW以后,安装时勾选以下选项

  • mingw-devloper-toolkit
  • mingw32-base
  • mingw32-gcc-g++
  • msys-base

安装完成以后按住Win+R 打开cmd,输入gcc --version 测试是否成功

C:\Users\Schips>gcc --version

gcc (x86_64-posix-seh, Built by strawberryperl.com project) 8.3.0
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

下面是 msys的根目录,运行 msys.bat可以打开 MinGW 的shell窗口(待会会用到)

img

安装 mercurial

mercurial用于下载 nginx-win版本的源码,安装没有任何其他需要注意的地方

安装完成以后按住Win+R 打开cmd,输入hg 测试是否成功

img

安装 strawberryperl

Strawberry Perl是Windows环境的一个Perl环境,它的目的是尽可能接近UNIX系统上的Perl环境,在编译nginx及其依赖库的时候需要用到。

安装 nasm

NASM全称The Netwide Assembler,是一款基于80x86和x86-64平台的汇编语言编译程序,其设计初衷是为了实现编译器程序跨平台和模块化的特性,在编译nginx的时候可能需要对编译脚本进行修改的时候会用到。

安装完成后,需要将其安装路径加入到PATH环境变量。

下载有关的源码

nginx-win32-src 下载

在cmd中执行命令

hg clone http://hg.nginx.org/nginx nginx-win32-src

编译运行环境依赖

下载这些文件

rcre          : 8.30

zlib         :1.2.11

openssl       : 1.0.2t

nginx 额外的模块(可选)

nginx-rtmp-module   :zip

编译nginx

解压

解压上面下载的源码,放置到自己喜欢的地方(建议是放到 msys/1.0/home/$USER/下面)

img

配置

在 MinGW 的 msys程序,来到 nginx-win32-src 源码根目录

根据自身的实际情况修改下方配置,并保存为一个.bat脚本文件

auto/configure --with-cc=cl --builddir=objs --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-select_module \
--with-debug \
--with-http_ssl_module \
--with-pcre=../pcre-8.30 --with-zlib=../zlib-1.2.11 --with-openssl=../openssl-1.0.2t \
--add-module=../nginx-rtmp-module-1.1.11 

配置成功的结果如下:

img

这里会发现有一个异样的提示,auto/cc/msvc: line 117: [: : integer expression expected ,只要修改文件 $nginx源码目录\auto\cc\msvc 即可,

echo " + cl version: $NGX_MSVC_VER" 的前面加入一行 NGX_MSVC_VER=15.00 ,当然不修改也不会影响后续的编译。

如果需要指定后续编译nginx时禁用优化,则将其中的 CFLAGS="$CFLAGS -O2"修改为 CFLAGS="$CFLAGS -Od"

到此为止,不再需要 msys(如果此后的步骤依旧使用msys的话,会出现找不到头文件等问题)

修修补补

修改一处会导致编译异常的错误

打开文件 $nginx源码目录\auto\lib\openssl\makefile.msvc,修改如下地方:

ms\do_ms  

分类:

技术点:

相关文章:

  • 2022-01-21
  • 2021-08-27
  • 2021-12-18
  • 2021-07-11
  • 2021-12-08
  • 2021-07-07
  • 2021-09-19
猜你喜欢
  • 2021-12-28
  • 2021-11-05
  • 2021-07-19
  • 2021-10-08
  • 2021-11-04
  • 2021-09-27
相关资源
相似解决方案