Nginx-rtmpのWindows版バイナリをビルドする　実行ファイルのリンク先を追記しました

##背景
　1）会社拠点間で複数ユーザーにライブ中継
　　　　※Skype、Teams会議では接続不十分であったため
　2)Docker+Nginx+Rtmpモジュールが利用できなかった
　　　　※会社のPCにDockerインスートル；Hyper-Vが使用できない
　3)Windows版は商用のものがあるが、セキュリティ面、コンプラ面から避けた

以上から、自前でコンパイルすることになった

活用の仕方を追記　2020/12/7
<https://estima5633.hateblo.jp/entry/2020/12/07/005025>

GitHubに実行ファイルを置きました　リンク修正
<https://github.com/czh00361/Nginx-Rtmp-for-Windows>

##参考にしたページ
参考１；Nginx　<http://nginx.org/en/docs/howto_build_on_win32.html>
参考２；Rtmp　<https://github.com/arut/nginx-rtmp-module>
参考３；インストールガイド<http://blog.loadlimits.info/2011/12/nginx%E3%81%AEwindows%E7%89%88%E3%83%90%E3%82%A4%E3%83%8A%E3%83%AA%E3%82%92%E3%83%93%E3%83%AB%E3%83%89%E3%81%99%E3%82%8B/>

##大まかな流れ
手順１．参考１をベースにVisual Studio 2010 ;以下VS(+ Microsoft SDKs)
手順２．Nginx , nginx-rtmp-module-masterをダウンロード
　　　　StrawberryPerl　64bitをダウンロードとインストール
　　　　pcre、openssl、zlibをダウンロード
手順３．MinGWをインストール
手順４．Nginxのモジュールを配置.さらに下にobjs/libフォルダーを作成し、
　　　　pcre、openssl、zlibを解凍して配置
　　　　arut/nginx-rtmp-moduleをobjs/libに配置
手順５．VS　コマンドプロンプトよりc:\MinGW配下のmsys.batを起動
　　　　コンパイル環境が整っているか確認　msysでwhich perl , which link.exe・・・
手順６．Nginxのconfigureのオプションを入力　auto/cofigure --with-- ・略・
　　　　続けて、ライブラリのpathを通す
手順７．nmake -f objs/Makefile　後、objフォルダー内に「nginx.exe」が完成
手順８．nginx.conf設定やhtmlの設定内容はネット検索し、適宜配置
手順９．nginx.exe　管理者権限で実行

##詳細手順　私の環境
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/251482/39ea8951-cbcd-ff25-41e6-3cf9ad50c5e2.png)


##手順１　Visual Studio 2010のインストール
　Visual Studio 2010 Express　Visual Studio 2010 SDK　をダウンロードし
　　　　インストール（他記を事参照ください）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/251482/54aae6fc-6b21-39c8-db6c-95bc30d6773b.png)

##手順２　必要なモノをダウンロード
Nginx , nginx-rtmp-module-masterをダウンロード
Nginxモジュール　<http://hg.nginx.org/nginx/tags>
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/251482/ea165a7e-271a-c569-baa9-04c83202738a.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/251482/a6b2e662-4dcd-524b-4f6a-9e4736fda04d.png)

nginx-rtmp-module-master　<https://github.com/arut/nginx-rtmp-module>
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/251482/b0f5ce16-fa99-2c99-dafa-f604f830b4fc.png)

strawberry-perl-5.30.2.1-64bit.msi　ダウンロードとインストール
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/251482/20e2f40d-74d8-4090-5bb1-2e59a1943615.png)

以下をダウンロード
pcre-8.44　<https://sourceforge.net/projects/pcre/postdownload>
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/251482/12466b5f-d151-57ca-6d95-b582ad93446d.png)

openssl-1.0.0e　<https://www.openssl.org/>
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/251482/7554da3f-6fb1-a2b9-dadf-8c11cbc5d433.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/251482/dbc6fbf8-c161-32e7-aadb-c650a00092a1.png)


zlib-1.2.11　<https://zlib.net/>
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/251482/8c3816c2-2c8b-494c-c258-394e0eebb0cc.png)


##手順３　MinGWをインストール
　MinGW　<http://www.mingw.org/>　をダウンロード
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/251482/abc15063-b1f0-e3bf-0e49-9fb681210e36.png)


画面下部の「download/install」などからmingw-get-setup.exeをダウンロード
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/251482/8fddb562-eb2c-8ad8-f299-7ef0971080e4.png)


minge-get-setup.exeを実行し、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/251482/8e7fbe71-bfca-27a1-9e06-ebf3d1171133.png)

"C:\MinGW"にインストール
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/251482/a5050c80-a6c2-1491-6cf5-01ff003dd5dc.png)

以下の緑モジュールを選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/251482/36c3c9f8-c6c6-5bb7-4f4f-755198f6ad8f.png)

##手順４　モジュールを配置
Nginxモジュールを配置　c:\MinGW\msys\1.0\home\(自分のユーザー名）\Nignx
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/251482/00ba2e7e-75af-2de6-0c7e-395278315d4e.png)


その下にobjs/libフォルダーを作成し、nginx-rtmp-module-masterと
pcre-8.44、openssl-1.0.0e、zlib-1.2.11を解凍して配置
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/251482/623e3b68-b8c1-3d11-d8cb-501420c796f5.png)

##手順５　コマンドプロンプトを立ち上げ
visual studioのコマンドプロンプトを立ち上げる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/251482/144c55c9-8bfd-7796-1e8d-5542328d4c28.png)

C:\MinGW\msys\1.0　へ移動し、msys.batを立ち上げ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/251482/835e4c33-6abf-d8ab-87e0-8eb27e9361ac.png)

cd nginx 移動と、コンパイル環境が整っているか確認　msysでwhich perl , which openssl which link.exe , which openssl で確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/251482/3042aa2e-8e47-76e7-78bf-164b83825d53.png)



##手順６　ビルド（コンパイル前）
Nginxのconfigureのオプションを入力
```
auto/configure \
    --with-cc=cl \
    --with-debug \
    --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 \
    --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.0.0e \
    --with-openssl-opt=no-asm \
    --with-http_ssl_module \
    --add-module=objs/lib/nginx-rtmp-module-master
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/251482/29c783c2-63bf-7114-1b8d-cae60dbe5ffe.png)



続けて、ライブラリのpathを通す
pathは実ファイルの位置、名前を変更すること
自分の場合は、v7.1Aの名前がV7.0Aであったり、フォルダーの位置が違っていた
```
export LIB="C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\lib;C:\\Program Files (x86)\\Microsoft SDKs\\Windows\\v7.0A\\Lib”
```
```
export INCLUDE="C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\include;C:\\Program Files (x86)\\Microsoft SDKs\\Windows\\v7.0A\\Include”
```
```
export PATH="$PATH:/C:/Strawberry/perl/bin:/c/Program Files (x86)/Microsoft Visual Studio 10.0/VC/bin:/c:/Program Files (x86)/Microsoft Visual Studio 10.0/Common7/IDE:/c/Program Files (x86)/Microsoft SDKs/Windows/v7.0A/Bin”
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/251482/556e12b6-8a6f-6466-32cb-ade22824f131.png)


##手順７　コンパイル
ビルド（コンパイル）する
nmake -f objs/Makefile
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/251482/6723b85e-3636-80b7-cb6a-0fd6b145b480.png)


後、objフォルダー内に「nginx.exe」が完成。（rtmpモジュール入りがわかるようnginx-rtmp.exeに変更しました）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/251482/5def574a-0e36-3dd1-6033-a4e2762f9cab.png)

##手順８　実行ファイルを配置
出来たモジュールを以下のように（例えば、Cドライブ直下）配置
nginx-1.18.0をダウンロードより、conf, html, logs, tempをコピー
nginx.conf設定やhtmlの設定内容はネット検索し、適宜配置

参考　<https://www.yukkuriikouze.com/2019/03/09/2403/>
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/251482/dd31be02-ed3f-3885-9532-52644e484936.png)

##手順９　実行
nginx.exe　管理者権限で実行
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/251482/6ba29b85-76a8-dabb-6de8-6331cf2068be.png)

タスクマネージャーで起動できているか確認。起動できていない場合は
nginx.confファイルの記述、html内index.htmlの記述が問題あり
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/251482/1a29784c-fd52-ee74-978c-1102a6c785d2.png)

以上です