Nginx教程

【无标题】通过nginx扩展nginx-rtmp-module

本文主要是介绍【无标题】通过nginx扩展nginx-rtmp-module,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

通过nginx扩展nginx-rtmp-module简单做了一个流媒体直播
有时我们需要在现有的web服务器上增加新的模块实现更为丰富的功能,Nginx算是比较常用的web服务器,但是nginx也不仅仅只可以做web服务器,只要有对应的插件还可用作反向代理、即时通讯、文件下载、流媒体服务等功能,如果已经安装好了Nginx有不想重新安装覆盖的前提下如何新增模块呢?下面通过安装nginx-rtmp-module作为示例进行说明,安装其他模块也是同样的道理。

先 cd 到根目录吧,个人习惯在根目录操作。

一、首先就是先下载nginx-rtmp-module

官方github地址:https://github.com/arut/nginx-rtmp-module

我这里在git上直接克隆了

git clone https://github.com/arut/nginx-rtmp-module.git

如果提示git错误的,装下git

这个时候,根目录下应该会有一个 nginx-rtmp-module 文件夹

二、安装:nginx

nginx的官方网站为:http://nginx.org/en/download.html

wget http://nginx.org/download/nginx-1.12.1.tar.gz
tar -zxvf nginx-1.12.1.tar.gz
cd nginx-1.12.1
./configure --prefix=/usr/local/nginx --add-module=/nginx-rtmp-module --with-http_ssl_module
make && make install
如果你已经安装好nginx,那么需要单独安装第三方模块,不能重新安装

nginx第三方模块安装方法:

./configure --prefix=/你的安装目录 --add-module=/第三方模块目录
以安装nginx-rtmp-module模块为例,在已安装nginx情况下安装nginx-rtmp-module模块

因为以前nginx安装在/usr/local/nginx目录下,所以下面的操作都是以此目录为路径进行操作,如果安装到其他目录有些命令需要做对应的更改。

先查看原有nginx的配置参数并拷贝出来(重要)注意V 是大写的

/usr/local/nginx/sbin/nginx -V
root@iZ1175b20bpZ:~# /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.12.1
built by gcc 4.8.2 (Ubuntu 4.8.2-19ubuntu1)
built with OpenSSL 1.0.2l 25 May 2017
TLS SNI support enabled
configure arguments: --user=www --group=www --prefix=/usr/local/nginx --with-openssl=/usr/local/nginx/src/openssl --add-module=/usr/local/nginx/src/ngx_devel_kit --add-module=/usr/local/nginx/src/lua_nginx_module --add-module=/usr/local/nginx/src/ngx_cache_purge --add-module=/usr/local/nginx/src/nginx-sticky-module --add-module=/usr/local/nginx/src/nginx-http-concat --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-http_gzip_static_module --with-http_gunzip_module --with-stream --with-stream_ssl_module --with-ipv6 --with-http_sub_module --with-http_flv_module --with-http_addition_module --with-http_realip_module --with-http_mp4_module --with-ld-opt=-Wl,-E --with-cc-opt=-Wno-error --with-ld-opt=-ljemalloc
系统将我们之前安装好的Nginx配置都列了出来,我们看到之前没有安装过 nginx-rtmp-module 模块。我们这次单独安装。

上面显示我们之前安装的nginx 版本是 1.12.1 我们要使用对应版本的 nginx 的安装包。

wget http://nginx.org/download/nginx-1.12.1.tar.gz
tar -zxvf nginx-1.12.1.tar.gz
cd nginx-1.12.1
下载完成,并解压后 进入到 nginx-1.12.1 目录

接下来是重要的一步,将我们上面 原先安装的nginx配置参数 上,添加新的模块

./configure arguments: --user=www --group=www --prefix=/usr/local/nginx --with-openssl=/usr/local/nginx/src/openssl --add-module=/usr/local/nginx/src/ngx_devel_kit --add-module=/usr/local/nginx/src/lua_nginx_module --add-module=/nginx-rtmp-module --add-module=/usr/local/nginx/src/ngx_cache_purge --add-module=/usr/local/nginx/src/nginx-sticky-module --add-module=/usr/local/nginx/src/nginx-http-concat --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-http_gzip_static_module --with-http_gunzip_module --with-stream --with-stream_ssl_module --with-ipv6 --with-http_sub_module --with-http_flv_module --with-http_addition_module --with-http_realip_module --with-http_mp4_module --with-ld-opt=-Wl,-E --with-cc-opt=-Wno-error --with-ld-opt=-ljemalloc
注意,里面我 加了一个参数 --add-module=/nginx-rtmp-module 如果你有其他模块要一起安装,方法是一样的。

等待配置跑完。然后输入

make

进行编译。编译完成后,我们需要在根目录下我们刚下载的 /nginx-1.12.1/objs/ 目录下。找到刚刚编译好的 nginx 文件( 没有扩展名)

将 nginx 文件复制到 我们之前安装的 /usr/local/nginx/sbin/ 目录,替换旧的 nginx 文件。建议备份一下旧的 nginx 文件。

然后重启下nginx 就好了。

这个时候我们在查看下nginx 配置。

root@iZ1175b20bpZ:~# /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.12.1
built by gcc 4.8.2 (Ubuntu 4.8.2-19ubuntu1)
built with OpenSSL 1.0.2l 25 May 2017
TLS SNI support enabled
configure arguments: --user=www --group=www --prefix=/usr/local/nginx --with-openssl=/usr/local/nginx/src/openssl --add-module=/usr/local/nginx/src/ngx_devel_kit --add-module=/usr/local/nginx/src/lua_nginx_module --add-module=/nginx-rtmp-module --add-module=/usr/local/nginx/src/ngx_cache_purge --add-module=/usr/local/nginx/src/nginx-sticky-module --add-module=/usr/local/nginx/src/nginx-http-concat --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-http_gzip_static_module --with-http_gunzip_module --with-stream --with-stream_ssl_module --with-ipv6 --with-http_sub_module --with-http_flv_module --with-http_addition_module --with-http_realip_module --with-http_mp4_module --with-ld-opt=-Wl,-E --with-cc-opt=-Wno-error --with-ld-opt=-ljemalloc
我们看到 nginx-rtmp-module 模块已经有了。

接下来,我们更改下 nginx.conf 文件,让支持 rtmp

三、修改nginx配置文件

vi /usr/local/nginx/conf/nginx.conf
在文件里加入下面内容 http段外面(加载在最后面就行,独立模块)

rtmp {

server {    

    listen 1935;  #监听的端口  

    chunk_size 4000;    
         
    application hls {  #rtmp推流请求路径  
        live on;    
        hls on;    
        hls_path /usr/local/nginx/html/hls;    
        hls_fragment 5s;    
    }    
}    

}
还有就是这个路径,看你自己的实际情况的访问根目录来,我的是/usr/local/nginx/html/这个路径,
然而/usr/local/nginx/html/hls肯定没有这个目录,所以需要建一个放流文件的目录hls,并且需要改权限可读可写的权限
然后启动nginx:

/usr/local/nginx/sbin/nginx
开始推流吧~

然后下载跟你已经安装的Nginx 一样的版本。比如我现在服务器上装的是 1.12.1

这篇关于【无标题】通过nginx扩展nginx-rtmp-module的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!