之前在使用nginx和nginx-rtmp-module搭建流媒體服務(wù)器的時候遇到一個很尷尬的問題,就是在把nginx-rtmp-module模塊添加到nginx中去的時候,我最開始采取的做法是先卸載原來的nginx,再下載nginx和nginx-rtmp-module的源碼重新編譯并安裝.重裝完之后我測試了一下流媒體服務(wù)器是正常的,但是接下來問題來了,由于我有一些WEB工程是部署在之前搭建好的LUMP環(huán)境下的,現(xiàn)在重裝了nginx,這些工程需要重新部署.于是,我又開始重新部署這些WEB工程,但是結(jié)果讓我哭暈在了廁所,因為nginx的目錄結(jié)構(gòu)發(fā)生了很大改變,導(dǎo)致我沒辦法配置原來的WEB工程了.此后我陷入了很長時間的掙扎和徘徊,網(wǎng)上搜尋了很多解決方案,但是這些方案大多都是側(cè)重講如何編譯安裝nginx以及進(jìn)行推拉流測試,沒有涉及到我這方面的問題.后來,我在瀏覽帖子的時候看到有人說把自己編譯的nginx可執(zhí)行文件替換掉原來的nginx共享庫能解決問題,于是立馬試了一把,結(jié)果發(fā)現(xiàn)真的可以!現(xiàn)在的nginx能同時運(yùn)行流媒體服務(wù)和部署WEB工程,魚與熊掌兼得!

  下面簡單介紹一下我的操作過程,希望能為遇到同樣問題的你帶來一些幫助(我的配置環(huán)境:Ubuntu Server 16.04 + nginx1.10.0 + nginx-rtmp-module-master).

  1.先采用apt-get的方式安裝nginx.目前用此方式安裝的nginx的版本號為1.10.0

1 sudo apt-get update2 sudo apt-get install nginx

  2.到你喜歡的目錄下用你喜歡的名字創(chuàng)建一個目錄,用于存放nginx和nginx-rtmp-module的源碼,例如:我在根目錄/softwares(softwares也是我自己創(chuàng)建的)下面創(chuàng)建了nginx目錄,接下來我會把nginx和nginx-rtmp-module下載到nginx目錄下.

1 cd softwares/2 sudo mkdir nginx

  3.進(jìn)入nginx目錄.

1 cd nginx/

  4.下載nginx源碼,注意:下載的源碼版本需要與步驟1安裝的nginx的版本保持一致,以避免不必要的問題.獲取nginx源碼的途徑很多,此處推薦兩種方式.

  方式a:在終端執(zhí)行apt-get source nginx命令,直接獲取到對應(yīng)版本的源碼.

1 sudo apt-get source nginx

  此方式下載完之后會自動解壓,nginx-1.10.0目錄即nginx源碼目錄.

  方式b:在nginx的官網(wǎng)上面找到對應(yīng)版本然后下載.

1 sudo wget http://nginx.org/download/nginx-1.10.0.tar.gz

  此方式下載完之后需要自己手動解壓.解碼命令:

1 sudo tar zxvf nginx-1.10.0.tar.gz

  5.下載nginx-rtmp-module的源碼.

1 sudo wget https://github.com/arut/nginx-rtmp-module/archive/master.zip

  因為nginx-rtmp-module已在GitHub上開源,所以也可以直接從GitHub上獲取.GitHub地址: https://github.com/arut/nginx-rtmp-module.

  6.解壓nginx-rtmp-module源碼的壓縮包.

1 sudo unzip master.zip

  7.進(jìn)入nginx源碼目錄.

1 cd nginx-1.10.0/

  8.查看當(dāng)前nginx的配置信息,并將當(dāng)前配置信息完整保存到一個地方,后面在編譯nginx源碼的時候需要依據(jù)當(dāng)前的配置信息來進(jìn)行配置.

1 nginx -V

  注意命令行中的V是大寫哦,小寫只能看到nginx的版本號.我當(dāng)前的nginx配置信息如下:

Android培訓(xùn),安卓培訓(xùn),手機(jī)開發(fā)培訓(xùn),移動開發(fā)培訓(xùn),云培訓(xùn)培訓(xùn)

--with-cc-opt='-g -O2 -fPIE -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-Bsymbolic-functions -fPIE -pie -Wl,-z,relro -Wl,-z,now' --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-pcre-jit --with-ipv6 --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_addition_module --with-http_dav_module --with-http_geoip_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_image_filter_module --with-http_v2_module --with-http_sub_module --with-http_xslt_module --with-stream --with-stream_ssl_module --with-mail --with-mail_ssl_module --with-threads

Android培訓(xùn),安卓培訓(xùn),手機(jī)開發(fā)培訓(xùn),移動開發(fā)培訓(xùn),云培訓(xùn)培訓(xùn)

  9.配置nginx源碼編譯信息,將nginx-rtmp-module添加到nginx中.

Android培訓(xùn),安卓培訓(xùn),手機(jī)開發(fā)培訓(xùn),移動開發(fā)培訓(xùn),云培訓(xùn)培訓(xùn)

1 sudo ./configure --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-pcre-jit --with-ipv6 --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_addition_module --with-http_dav_module --with-http_geoip_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_v2_module --with-http_sub_module --with-http_xslt_module --with-stream --with-stream_ssl_module --with-mail --with-mail_ssl_module --with-threads --add-module=../nginx-rtmp-module-master

Android培訓(xùn),安卓培訓(xùn),手機(jī)開發(fā)培訓(xùn),移動開發(fā)培訓(xùn),云培訓(xùn)培訓(xùn)

  注意,這一行命令其實是這樣組成的: sudo ./configure <原來的配置信息> --add-module=../nginx-rtmp-module-master.這樣就將nginx-rtmp-module添加到nginx配置里面了,同時將之前保存的nginx配置信息添加到了用于此次編譯的配置信息里面,盡可能地保證了編譯出來的nginx與原來的nginx功能一致.細(xì)心的同學(xué)會發(fā)現(xiàn),其實我在配置nginx信息的時候并沒有將原來所有的配置信息都寫進(jìn)去,原因是如果全部復(fù)制粘貼過去,在編譯的時候會出現(xiàn)一些不太好處理的錯誤,這些錯誤一時半會兒還沒找到好的解決方案,所以就縮減了一些配置信息,縮減之后在功能模塊上并無太大差異,所以可放心使用.

  10.配置完成之后,執(zhí)行make命令開始編譯nginx源碼.編譯完成之后,會在nginx源碼目錄的objs目錄下生成nginx可執(zhí)行文件.

1 sudo make

  11.將生成的nginx可執(zhí)行文件拷貝到/usr/sbin目錄下,替換原來的nginx共享庫文件. 注意: 原來/usr/sbin目錄有一個nginx共享庫文件,我們使用編譯出來的nginx可執(zhí)行文件對其進(jìn)行替換.

1 sudo nginx /usr/sbin

  12.重啟nginx.

1 sudo service nginx restart

  13.再次查看nginx配置信息.

1 nginx -V

  可以看到nginx-rtmp-module模塊已經(jīng)添加到了nginx里面.

Android培訓(xùn),安卓培訓(xùn),手機(jī)開發(fā)培訓(xùn),移動開發(fā)培訓(xùn),云培訓(xùn)培訓(xùn)

1 --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-pcre-jit --with-ipv6 --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_addition_module --with-http_dav_module --with-http_geoip_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_v2_module --with-http_sub_module --with-http_xslt_module --with-stream --with-stream_ssl_module --with-mail --with-mail_ssl_module --with-threads --add-module=../nginx-rtmp-module-master

Android培訓(xùn),安卓培訓(xùn),手機(jī)開發(fā)培訓(xùn),移動開發(fā)培訓(xùn),云培訓(xùn)培訓(xùn)

  試了試推流拉流,功能正常,再運(yùn)行了一下原來的WEB工程,也正常!

  最后,我說明一下為什么要先通過apt-get的方式安裝nginx,再進(jìn)行編譯替換.原因是為了方便在LUMP環(huán)境下部署WEB工程.如果不先通過apt-get的方式安裝nginx,而是直接下載源碼編譯安裝,則nginx的配置目錄會不齊全,很難去部署WEB項目(也許通過某些操作也能實現(xiàn)部署,但是具體怎么操作還是要花時間去研究nginx的).如果不搭建流媒體服務(wù),我建議都通過apt-get的方式安裝nginx,步驟簡單又省心!

http://www.cnblogs.com/1992monkey/p/7089830.html