第二講:win7下nginx-rtmp-module的編譯方法

這是nginx-rtmp-module系列的第二講层坠,主要介紹在windows環(huán)境下編譯與使用的方法。

章節(jié)目錄:

  1. 準備工作
  2. nginx在win7下的編譯過程
  3. nginx-rtmp-modul模塊的編譯方法
  4. 另一種nginx的獲取方式

nginx在Linux和mac上的安裝方法有很多刁笙,我通過這篇文檔主要講一下在windows下的應用方法破花,主要是介紹編譯過程,以及編譯過程中經常出現(xiàn)的問題采盒。最后我會介紹一種直接安裝的方法旧乞。

nginx-rtmp-module的編譯過程主要就是nginx的編譯,其依賴環(huán)境和編譯步驟官網有說明,詳細的內容可見:
Building nginx on the Win32 platform with Visual C

如果您的英文不好也沒關系,可以通過以下鏈接了解稍坯。
http://tengine.taobao.org/nginx_docs/cn/docs/howto_build_on_win32.html

如果還嫌官方的麻煩恩静,也可以跟著我的步驟來做从媚,我這有最簡單的實現(xiàn)方式和完整的依賴環(huán)境蝌蹂。

一款慨、準備工作

在window下的編譯過程并不復雜胖烛,由于依賴的安裝包可能被墻挫以,我把這些內容備份到百度網盤者蠕,如果有需要可以一并下載。

網盤地址
密碼:hhni

在windows環(huán)境下編譯nginx的條件是:


準備內容

代碼庫的使用方法我會在編譯過程中介紹掐松,除此之外的軟件安裝就不細說了踱侣,但我提幾點注意事項,防止我們在編譯的時候出各種不必要的問題大磺。

1抡句、MSYS安裝后的多bash問題。

Installing MSYS
MSYS Setup

MSYS的安裝本來不會出什么問題杠愧,下一步點下去就安完了待榔。但我們的主機環(huán)境是多種多樣的,比如在Git的bin目錄流济,也有bash.exe锐锣。如果您只是簡單地在path中增加msys/bin的路徑,那真正運行的時候您注意下绳瘟,當前啟動的bash到底是哪個雕憔?

避免這種情況的方法也很簡單,cd到msys/bin目錄下稽荧,運行當前環(huán)境即可橘茉。我在安裝包中附了一份MSYS綠色版,解壓運行即可姨丈。
MSYS_MinGW-w64_GCC_710_x86-x64_Full.7z

問題就說到這,如果環(huán)境都準備妥當擅腰,就可以進入編譯環(huán)節(jié)了蟋恬。

二、nginx在win7下的編譯過程

nginx的編譯步驟官網已經說的很詳細的趁冈,它是這么描述的:


nginx build steps

但為什么我們還是出各種各樣的問題呢歼争?我認為它主要出在環(huán)境切換上,確切地說是 “configure”與“build”脫節(jié)渗勘。我根據官網的步驟沐绒,整理出一份更符合我們國情的編譯過程,編譯的步驟是:

  1. clone nginx代碼旺坠;
  2. 準備代碼庫乔遮;
  3. 編譯配置
  4. 正式編譯

1、clone nginx 代碼

理論上不管用什么方法取刃,把源碼抓下來就行蹋肮。官網主推的是Mercurial出刷,我覺得還是Git更普遍一些。

git clone https://github.com/nginx/nginx.git

2坯辩、準備代碼庫

需要openssl馁龟、zlib和pcre三個庫,您可以從官網上下載漆魔,也可以從我的網盤里抓坷檩。都可以,如果從官網下載需要注意的就是版本號改抡,在configure的時候注意版本調整即可淌喻。

步驟簡單,將三個tar包加壓到新建的目錄objs\lib 中雀摘。


目錄層次關系

注意目錄層次裸删,openssl-1.1.0g、pcre-8.41和zlib-1.2.11均為最后一級阵赠,里邊就是源碼涯塔。

3、編譯配置

到msys的bin目錄中啟動bash.exe清蚀。其他方法也行匕荸,不強求,但要保證exe啟對了枷邪。
切換到nginx目錄下榛搔,運行:

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 --with-cc-opt=-DFD_SETSIZE=1024  --with-openssl-opt=no-asm --with-select_module --with-openssl=objs/lib/openssl-1.1.0g --with-openssl-opt=no-asm --with-zlib=objs/lib/zlib-1.2.11 --with-pcre=objs/lib/pcre-8.41

為了方便拷貝運行,這段腳本我就不做斷行了东揣,如果您想清晰地看到每一組參數(shù)践惑,可以自行處理。當出現(xiàn)如下界面的時候嘶卧,那恭喜你尔觉,你離編譯成功只有一步之遙。

配置成功

如果失敗芥吟,尤其是sh崩潰侦铜,注意運行時sh.exe的位置,是不是我們安裝的msys\bin目錄钟鸵!

注意Configure時的運行環(huán)境

4钉稍、正式編譯

關于build,官網只有一句話棺耍,就是nmake贡未。確實只需要nmake,但在什么環(huán)境下make呢?它沒說羞秤!

正確的nmake缸托,是在Visual Studio 環(huán)境下,當前的bash是不行的瘾蛋。雖然當前bash也有make俐镐,但您運行之后會是這樣。


bash下的make崩潰

好吧哺哼,啟動你的Visual Studio Command 佩抹,切換到nginx目錄,讓nmake 跑起來取董。


經過漫長的等待棍苹,nginx的編譯就這樣成功了。


編譯成功

三茵汰、nginx-rtmp-modul模塊的編譯方法

依托nginx搭建rtmp媒體服務器枢里,nginx-rtmp-module模塊是關鍵,如何能順利編譯這個模塊蹂午?官方是這樣介紹的:

build nginx-rtmp-modul

沒毛怖覆颉!該有的都有了豆胸,但您要想編譯成功奥洼,得琢磨!
我還是給大家整理一份更簡單晚胡、準確的編譯過程吧灵奖。通過第二章的了解,nginx的編譯大家都熟悉了估盘。一個完整的nginx是包含它組件和模塊的瓷患,通過nginx -V 命令,可以方便的看到這些內容忿檩。

比如最新版nginx組件關系是這樣的:


1.13.8版本

而一個非常豐富的版本尉尾,它的組件與模塊也可以是這樣的:


1.7.11.3

我把1.7.11.3版本中的信息整理一下,你能看到:


主要有兩類:

  • --with
  • --add-module

我們稱第一類為組件燥透,第二類為模塊。今天要編譯的nginx-rtmp-module模塊辨图,就是其中一類班套。讓大家明白這層關系,是為了能夠一通百通故河,舉一反三吱韭。當您掌握nginx-rtmp-module 的編譯方法之后,其他nginx擴展就都不是事兒了!
好了理盆,在nginx編譯成功的基礎上痘煤,nginx-rtmp-module的編譯步驟是:

  1. clone 代碼;
  2. 編譯配置
  3. 正式編譯

1猿规、clone 代碼

注意 clone 后代碼的位置

如圖所示衷快,在objs/lib目錄下,clone nginx-rtmp-module代碼姨俩。
https://github.com/arut/nginx-rtmp-module

2蘸拔、編譯配置

與nginx時完全相同,到msys的bin目錄中啟動bash.exe环葵,切換到nginx目錄下運行:

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 --with-cc-opt=-DFD_SETSIZE=1024  --with-openssl-opt=no-asm --with-select_module --with-openssl=objs/lib/openssl-1.1.0g --with-openssl-opt=no-asm --with-zlib=objs/lib/zlib-1.2.11 --with-pcre=objs/lib/pcre-8.41 --add-module=objs/lib/nginx-rtmp-modu1

3调窍、正式編譯

啟動Visual Studio Command ,切換到nginx目錄张遭,nmake again邓萨!
編譯成功后,通過nginx -V 查看擴展內容菊卷,您會看到:

add-module

一個支持RTMP多媒體服務的nginx缔恳,就已經編譯完成了。

四的烁、另一種獲取方法

您可以通過配置環(huán)境褐耳、編譯,一步步的拿到自己輸出渴庆,包含RTMP服務的nginx铃芦。除此之外,從網上下載一份現(xiàn)成的nginx襟雷,也是一種更快的方法刃滓。

不是自己編譯的就一定比線上的好,把這個服務用好才是真的好耸弄!

從nginx官網上下載的版本是不帶rtmp模塊的咧虎,但您可以通過:
http://nginx-win.ecsds.eu/

注意version.txt中的內容,并不是所有的版本都有rtmp :)
http://nginx-win.ecsds.eu/download/Readme%20nginx-win%20version.txt

后記:

這篇博客到這就結束了计呈,nginx和nginx-rtmp-module的編譯過程還是非常順利的砰诵,只要環(huán)境整明白了,配置和編譯都不會出什么大障礙捌显。這不像nginx-http-flv-module這種庫茁彭,維護的人少,編譯bug還超多扶歪!

好了理肺,祝大家在nginx編譯上一切順利:)
如果有問題,可以給我留言,我們下一講見妹萨。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末年枕,一起剝皮案震驚了整個濱河市乎完,隨后出現(xiàn)的幾起案子熏兄,更是在濱河造成了極大的恐慌,老刑警劉巖囱怕,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件典格,死亡現(xiàn)場離奇詭異耍缴,居然都是意外死亡挽霉,警方通過查閱死者的電腦和手機侠坎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進店門实胸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來钢属,“玉大人淆党,你說我怎么就攤上這事染乌∧浇常” “怎么了?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵减宣,是天一觀的道長贼邓。 經常有香客問我塑径,道長统舀,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任烹吵,我火速辦了婚禮年叮,結果婚禮上只损,老公的妹妹穿的比我還像新娘。我一直安慰自己艾栋,他們只是感情好携冤,可當我...
    茶點故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布渴杆。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪幔托。 梳的紋絲不亂的頭發(fā)上穴亏,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天,我揣著相機與錄音重挑,去河邊找鬼嗓化。 笑死,一個胖子當著我的面吹牛谬哀,可吹牛的內容都是我干的刺覆。 我是一名探鬼主播,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼史煎,長吁一口氣:“原來是場噩夢啊……” “哼谦屑!你這毒婦竟也來了驳糯?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤伦仍,失蹤者是張志新(化名)和其女友劉穎结窘,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體充蓝,經...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年喉磁,在試婚紗的時候發(fā)現(xiàn)自己被綠了谓苟。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,503評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡协怒,死狀恐怖涝焙,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情孕暇,我是刑警寧澤仑撞,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站妖滔,受9級特大地震影響隧哮,放射性物質發(fā)生泄漏。R本人自食惡果不足惜座舍,卻給世界環(huán)境...
    茶點故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一沮翔、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧曲秉,春花似錦采蚀、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至亥鸠,卻和暖如春妆够,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背读虏。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工责静, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人盖桥。 一個月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓灾螃,卻偏偏與公主長得像,于是被迫代替她去往敵國和親揩徊。 傳聞我的和親對象是個殘疾皇子腰鬼,可洞房花燭夜當晚...
    茶點故事閱讀 45,512評論 2 359