日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

Windows10下编译Nginx源码

發(fā)布時間:2023/12/14 windows 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Windows10下编译Nginx源码 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Windows10 + VS2017 + Nginx-1.20.2源碼 + nginx-http-flv-module-master編譯出Windows版本的Nginx

  • 背景
  • 環(huán)境準備
  • 源碼準備
    • 1、下載nginx-1.20.2-code.tar.gz
    • 2、下載nginx-http-flv-module-master.zip
    • 3、下載openssl-1.1.1l.tar.gz
    • 4、下載pcre-8.44.zip
    • 5、下載zlib-1.2.11.tar.gz
  • 編譯準備
  • 開始編譯
    • 1、Makefile生成
    • 2、編譯nginx源碼
  • 編譯完成后續(xù)
  • 部署
  • 工具和源碼下載

背景

因為之前使用的帶有http-flv模塊的Nginx版本是直接從網(wǎng)上下載別人編譯好的,原因是一直編譯不過去Windows版本的Nginx,所以使用人家編譯好的,就懶得再研究,但是Nginx近期一直被項目掃描出有漏洞,不得不編譯出一個新的出來,編譯期間太多曲折,所以記錄下,方便以后回顧。

環(huán)境準備

1、準備一臺Windows10的電腦;
2、安裝VS2017,記得選擇安裝社區(qū)版的vs_Community_2017.exe;
3、安裝ActivePerl,我這邊使用的版本是ActivePerl-5.28.msi,這是為了編譯OpenSSL準備的;
4、安裝msys2,我這邊使用的版本是msys2-x86_64-20211130.exe;
5、安裝sed-4.2.1-setup.exe。
安裝的過程就不多做講解了,需要注意的是,安裝完后,要確保安裝目錄都有加入到系統(tǒng)環(huán)境變量里面。

源碼準備

1、下載nginx-1.20.2-code.tar.gz

注意:Nginx源碼一定要到這個地址http://hg.nginx.org/nginx,不能到這個地址下載http://nginx.org/en/download.html,我就是因為從這里下載的源碼沒有WIN32的部分了,所以一直編譯出問題。
我下載的是下圖這個版本的,當前最新最穩(wěn)定的版本,你們也可以根據(jù)需要下載其他版本。我們點擊nginx-1.20.2-RELEASE進去下載。

2、下載nginx-http-flv-module-master.zip

我這邊使用的是未央千城所維護的http-flv模塊的源碼,可以進入他的GitHub進行下載,直接下載zip即可。

3、下載openssl-1.1.1l.tar.gz

我選擇的OpenSSL版本是openssl-1.1.1l,原因是,我在下載Nginx源碼的時候,看到nginx-1.20.2之前基于Windows編譯的有更新了OpenSSL版本,我看到里面的版本是openssl-1.1.1l,所以選擇此版本(底下的pcre和zlib也同理)。但是網(wǎng)上也有人說openssl-1.1.1的版本會導致nginx編譯不過,后面會有說如何解決。

4、下載pcre-8.44.zip

pcre我用的版本是pcre-8.44。

5、下載zlib-1.2.11.tar.gz

zlib我用的版本是zlib-1.2.11。

編譯準備

解壓nginx-1.20.2-code.tar.gz,并把文件夾重命名成nginx-1.20.2-code(強迫癥行為)。
進入nginx-1.20.2-code目錄,創(chuàng)建objs/lib,并把依賴的四個源碼壓縮包拷進去分別進行解壓,如下圖。

開始編譯

1、Makefile生成

打開MSYS,進入到nginx-1.20.2源碼目錄。


執(zhí)行configure進行Makefile文件的生成,可以使用如下命令:

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/pcre-8.44 --with-zlib=objs/lib/zlib-1.2.11 --with-openssl=objs/lib/openssl-1.1.1l --with-openssl-opt=no-asm --with-http_ssl_module --with-http_sub_module --with-http_auth_request_module --add-module=objs/lib/nginx-http-flv-module-master

注意:我這邊是有加入–with-http_auth_request_module,可以根據(jù)需要是否添加此模塊;還有我這邊的–prefix= 是沒有帶路徑的,因為帶了路徑后面就得把conf、logs、temp等文件夾拷貝進去這個路徑,不然會運行出錯。

開始生成Makefile,需要等到一段時間,直到出現(xiàn)如下畫面,證明已經(jīng)成功,可以在源碼目錄和objs目錄下看到有Makefile生成。

2、編譯nginx源碼

打開VS2017的命令行工具,進入到nginx源碼目錄,執(zhí)行nmake:


這時候你就會遇到出錯了。
1、如果遇到這樣的報錯:Can’t locate Win32/Console.pm in @INC,找到C:\Perl64\site\lib\ActivePerl目錄下的Config.pm,打開文件,注釋掉如下的代碼后保存文件。

2、解決openssl部分編譯不過的坑
打開D:\nginx\nginx-1.20.2-code\auto\lib\openssl目錄下的makefile.msvc文件,修改如下部分:

3、修改Makefile
修改D:\nginx\nginx-1.20.2-code\objs\Makefile中的CFLAGS字段,去掉-W4 -WX的編譯選項,添加-W3的編譯選項

重新執(zhí)行nmake編譯
執(zhí)行完上面的全部操作后,再回到VS2017命令行執(zhí)行nmake就會開始編譯,大概需要等十幾分鐘才會編譯完成。編譯成功的調試如下:

此時再回到objs目錄下,會看到nginx.exe就是我們編譯出來的。

編譯完成后續(xù)

編譯完成后,我們再去nginx官網(wǎng)下載一個Windows版本的nginx-1.20.2的程序。

解壓下載下來的nginx-1.20.2.zip,把我們編譯的nginx.exe替換進去,然后找到D:\nginx\nginx-1.20.2-code\objs\lib\nginx-http-flv-module-master\test下的nginx.conf替換到D:\nginx\nginx-1.20.2\conf目錄下。打開cmd進行測試,執(zhí)行nginx.exe -t 命令,出現(xiàn)如下調試證明編譯出來的Windows版本的nginx可用。

部署

至此,我們就可以和FFmpeg進行一些rtmp推流和http-flv拉流的部署操作,我的其他博客有講解這方面的內容,不再詳解。

工具和源碼下載

全套編譯工具和源碼:download
直接編譯好可用的nginx:nginx-1.20.2

總結

以上是生活随笔為你收集整理的Windows10下编译Nginx源码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。