直播系统开发:基于Nginx与Nginx-rtmp-module(txt+pdf+epub+mobi电子书下载)


发布时间:2020-11-24 16:57:12

点击下载

作者:卓朗科技技术团队

出版社:电子工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

直播系统开发:基于Nginx与Nginx-rtmp-module

直播系统开发:基于Nginx与Nginx-rtmp-module试读:

前言

直播系统的开发前景

随着互联网技术的突飞猛进,短短几年,移动设备从最初的只能打电话、发短信和图片的非智能手机,发展为现在的装满社交、视频、支付、资讯等形形色色应用程序的智能手机,通信方式也从文字、图片变成音频、视频等,可见人类正经历一场通信方式的变革。

言归正传,本书介绍的是移动直播平台开发,不知道读者有没有注意过,其实很早以前就出现过这种模式,最早的视频聊天室就是这种直播平台的前身,只是那个时候主播需要依靠计算机等设备进行直播,观众也需要在电脑上观看。现在,随着科技的发展,大多数人至少都有一部智能手机,而且几乎走到哪里都有Wi-Fi,这就为移动直播奠定了良好的基础。因此,自2015年以来,移动直播领域已经成为各个巨头企业和新锐企业争夺的一片蓝海。

本书的目的与写作过程

这是一本简单、通俗易懂的直播系统开发入门书籍。通过它,读者可以从零开始学习直播系统的搭建过程。当然直播系统是基于高级语言的服务器,读者也可以对它进行二次开发。本书介绍了从Nginx的基本应用到Nginx-rtmp-module的应用,再到基础实现和架构,让读者可以从一个很低的起点快速了解如何部署直播服务器及开发SDK。本书可以帮助读者初探直播系统开发领域,并开拓思路,也为读者提供了一条使用高级语言搭建直播系统的捷径。

在开始规划本书之时,我们一直在考虑使用怎样的方式将直播系统开发技术以最简单、最便捷的方式展现给读者。最终,我们决定从搭建—应用—解决方案这3个角度来简述直播系统的开发过程。

如何阅读本书

本书分为三部分:

第一部分(第1章)主要介绍Nginx,包括什么是Nginx,为什么要选择Nginx,在特定的环境下如何安装、配置及使用Nginx。

第二部分(第2~4章)主要介绍基于Nginx的Nginx-rtmp-module、FFmpeg组件的安装与配置,并完整地搭建了一个简单的直播系统。

第三部分(第5~7章)主要介绍在多终端下如何使用不同技术建立基于直播的SDK,并介绍多种SDK相关技术框架。

读者对象

· 对直播系统开发有兴趣的人员。

· 高级语言开发者。

· 音/视频开发入门者。

本书作者

本书内容主要由卓朗科技技术团队中的于连林、张晓磊、韩艳莲、何金刚、荣蓉、马源、完成。如有相关问题,则欢迎发送邮件到yll@520wcf.com,也欢迎访问作者博客(http://520wcf.com)。第1章 Nginx基础

近几年,直播行业越来越火爆,本书主要介绍开源的直播软件——Nginx-rtmp-module。Nginx-rtmp-module依赖于Nginx,以第三方模块的方式提供直播功能。本章主要介绍Nginx,包括什么是Nginx,为什么选择Nginx,在特定的环境下如何安装和配置Nginx,以及如何使用Nginx,最后介绍Nginx模块的概念。1.1 Nginx概述及作用

Nginx同Apache、Tomcat一样,是一种服务器软件。它是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP代理服务器。因此,使用Nginx可以搭建网站,也可以实现负载均衡的功能,还可以作为邮件代理服务器来接收和发送邮件。Nginx 1.9.0以后的版本还可以作为通用的TCP/UDP代理服务器,也可以提供一定的缓存服务功能。1.1.1 可作为Web服务器

Nginx还是一个高性能的HTTP Web服务器(Web服务器还有Apache、IIS等),它包含了基本的HTTP功能和拓展功能,可以先通过动态/静态内容分离,而后为静态内容(HTML/CSS/JaveScript/图片等)提供HTTP访问功能;而动态内容可以整合代理模块,代理给上游服务器,以支持对外部程序的直接调用或者解析,如FastCGI支持PHP。1.1.2 可作为反向代理服务器

代理服务器分为正向代理服务器和反向代理服务器。

1.正向代理服务器

正向代理服务器是一个位于客户端与原始服务器之间的服务器。为了从原始服务器中取得数据,客户端向代理服务器发送请求并指定目标(原始服务器),然后,代理服务器向原始服务器转交请求,并将获得的内容返回客户端。

正向代理服务器一般作用在客户端,并且在客户端需要进行相关配置,如图1-1所示。图1-1

2.反向代理服务器

反向代理服务器作用在服务器端,它在服务器端接收互联网中的连接请求,然后将请求转发给内部网络中的服务器,并将从服务器中得到的结果返回给互联网中请求连接的客户端,如图1-2所示。

反向代理对外是透明的,在客户端不需要任何配置,所以,访问者并不知道自己访问的是一个反向代理服务器。图1-2

Nginx就是一个反向代理服务器。

反向代理服务器针对Web服务器提供加速功能,所有外部网络要访问服务器的请求都要通过它。反向代理服务器负责接收客户端的请求,然后到源服务器上获取内容,把内容返回给用户,并把内容保存在本地中,以便日后再收到同样的信息请求时,将本地缓存中的内容直接发给用户,以减少后端Web服务器的压力,提高响应速度。因此,Nginx还具有缓存功能。

3.反向代理服务器实现负载均衡

Nginx可通过反向代理服务器来实现负载均衡,以优化网站的负载,如图1-3所示。图1-31.1.3 可作为邮件代理服务器

Nginx可被部署成邮件代理服务器,最早开发Nginx的目的之一就是将其作为邮件代理服务器。1.2 为什么选择Nginx

Nginx有着高并发、性能好和占用内存少等特点,其安装简单,配置文件简洁,启动容易,能长时间不间断运行,还能在不间断服务的情况下升级软件版本,而且成本低。这些优点使得Nginx的应用越来越普遍。

1.高并发、性能好、占用内存少和稳定

作为Web服务器,相比Apache,Nginx占用内存更少,支持的并发连接更多,使用效率更高,并且Nginx要比Apache更“轻量”,性能更好。

2.功能强大

Nginx提供了大量的功能模块,支持诸多特性,应用场景也多,可作为Web服务器、反向代理服务器,也可作为邮件服务器等。

3.拓展性高

Nginx的模块化设计极具拓展性,它完全是由多个不同功能、不同层次、不同类型且耦合度极低的模块组成的。因此,当对某一个模块进行缺陷修复或升级时,可以专注于模块自身,而不会影响其他模块。

这种低耦合度的设计,使得Nginx具有数量庞大的第三方模块。当然,这些公开的第三方模块也如Nginx官方发布的模块一样易用。

4.其他优点

Nginx的其他优点介绍如下。

· 跨平台:Nginx可以在UNIX、Linux、OS系统中编译运行,而且也有Windows的移植版本。

· 占用内存小:10 000个非活动HTTP保持连接,占用大约2.5MB的内存。

· 配置/操作简单:Nginx安装简单,配置文件简洁,易上手。

· 网络依赖性低:理论上只要能够通过ping就可以实施负载均衡,而且可以有效区分内网、外网流量。

· 支持内置服务器检测:Nginx能够根据服务器处理页面返回的状态码、超时信息等,检测服务器是否出现故障,并及时返回错误的请求,重新提交到其他节点上。1.3 安装Nginx

Nginx可以在不同的操作系统、不同的环境中安装。本节以CentOS 6.9操作系统为例,介绍Nginx的安装和相关配置。

使用Yum安装rpm包的方式比编译安装的方式简单很多,其默认会安装许多模块,但缺点是以后再安装第三方模块时比较麻烦,所以,这里使用编译安装的方式安装Nginx。1.3.1 选择安装版本

在Nginx官网中可下载Nginx安装包,其中提供了3个版本:Mainline version、Stable version和Legacy versions。

Mainline version是Nginx目前在主力研发的版本。Stable version是最新的稳定版本,是生产环境中建议使用的版本。Legacy versions是稳定的老版本。

这里选择Stable version版本:nginx-1.12.2.tar.gz。安装环境是CentOS 6.9。因为在安装过程所执行的命令需要root权限,所以,这里选择使用root用户安装。1.3.2 编译安装Nginx

1.准备工作

安装依赖包:gcc、g++。

安装必要的库:zlib、pcre、openssl。

源码编译依赖gcc环境,并且部分Nginx模块依赖于以上3个库,如果没有安装这3个库,则需要先安装。

2.下载解压

将安装包下载到指定目录下并解压。

3.配置

使用configure命令进行配置。它定义了系统的各个方面配置,包括Nginx允许用于连接处理的方法,并且最终创建了一个Makefile文件。

其中“./configure-help”命令能列出大部分常用模块和编译选项,其中部分内容如图1-4所示。图1-4

其中以-without开头的选项都是默认安装的,以PATH结尾的选项需要手动指定依赖库源码目录。(1)配置选项说明。

下面具体介绍一些常见的配置选项。

·--prefix=PATH:设置Nginx的安装目录,默认为/usr/local/nginx。

·--sbin-path=PATH:设置Nginx可执行文件的名称,默认为prefix/sbin/nginx。

·--conf-path=PATH:设置nginx.conf配置文件的名称。Nginx允许使用不同的配置文件启动服务,通过在命令行参数中指定要使用的配置文件,默认为prefix/conf/nginx.conf。

·--pid-path=PATH:设置存储主进程ID的文件,默认为prefix/logs/nginx.pid。安装后也可在nginx.conf中使用pid命令更改。

·--error-log-path=PATH:设置主要错误、警告和诊断文件。安装后,可以使用error_log命令在nginx.conf配置文件中更改文件名,默认为prefix/logs/error.log。

·--http-log-path=PATH:设置 HTTP 服务器的主要请求日志文件。安装之后,可以使用access_log命令在nginx.conf配置文件中更改文件名,默认为prefix/logs/access.log。

·--with-http_ssl_module:可以构建一个将HTTPS协议支持添加到HTTP 服务器中的模块。该模块不是默认生成的。openssl库需要构建和运行这个模块。

·--with-pcre=PATH:将路径设置为pcre库的来源。

·--with-zlib=PATH:将路径设置为zlib库的来源。

更为详细的配置选项说明请参考Nginx官网中的文档。(2)配置命令。

这里都是选择默认配置,Nginx将默认被安装到/usr/local/nginx目录下。执行命令后部分结果如图1-5所示。图1-5

4.编译安装

5.验证是否安装成功

可以通过查看Nginx的版本信息来验证其是否安装成功。

如果安装成功,则会显示Nginx的版本信息,如图1-6所示。图1-6

6.修改配置文件

在安装Nginx的配置文件“nginx.conf”时,如果没有指定路径,则默认放在/usr/local/nginx/conf目录下,1.5节会专门介绍nginx.conf文件中的相关配置。

7.验证配置文件的正确性

如果修改了配置文件,则在启动Nginx之前,最好先检查一下配置文件是否正确,以免在重启Nginx之后出现错误,影响服务器的稳定运行,具体执行命令如下:

如果配置文件被正确执行,则结果如图1-7所示。图1-71.3.3 配置防火墙

安装好Nginx之后,需要配置防火墙,开启80端口。如果不开启80端口,则防火墙会阻止外网访问80端口,从而我们就无法访问Nginx的配置网站。

1.防火墙相关操作

下面介绍几个与防火墙相关的命令:

2.配置防火墙

修改防火墙配置:vi/etc/sysconfig/iptables。

添加配置项:A INPUT-m state-state NEW-m tcp-p tcp-dport 80-j ACCEPT。

重启防火墙:service iptables restart。

3.启动Nginx服务

4.查看Nginx进程信息

启动Nginx之后,便可以使用以下命令查看Nginx进程信息。

命令运行结果如图1-8所示。图1-8

其中,master process对应的是主进程,3182是主进程号,worker process是工作进程。

Nginx有一个主进程和多个工作进程。主进程主要用于读取和评估配置,并维护工作进程。工作进程是对请求进行实际处理。Nginx使用基于事件的模型和依赖操作系统的机制来高效地在工作进程之间分配请求。工作进程的数量在配置文件中定义。

5.测试(1)测试80端口。

执行结果如图1-9所示。图1-9(2)浏览器访问测试。

用浏览器访问地址:http://ip:80,其中“ip”是Nginx服务器的IP地址。访问结果如图1-10所示。图1-10

6.关闭Nginx服务

停止进程:kill-QUIT 主进程号。

快速停止:kill-TERM 主进程号。

强制停止:pkill-9 nginx。1.3.4 加入自启动和系统服务

虽然可以用命令行对Nginx进行开启、关闭等各种操作,但毕竟不是很方便。可以配置Nginx到系统服务器中,从而可以通过service命令来启动和关闭服务。也可以将Nginx设为开机自启动,那么,在每次重启服务器之后就不用手动开启Nginx服务了,非常方便。

1.创建脚本文件

在/etc/init.d目录下创建一个名为“nginx”的脚本文件,文件内容如下:

要根据实际安装路径,修改脚本中的以下两个配置选项:

将nginx="/usr/local/nginx/sbin/nginx"修改成Nginx执行程序的路径。

将NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"修改成配置文件的路径。

2.设置执行权限

要给脚本添加执行权限,不然执行的时候会报错:permission denied。

3.执行

4.加入开机自启动1.3.5 加入系统变量

在前面的内容中介绍了一些Nginx的操作命令,比如,要查看Nginx的版本信息,我们通常可以这样:

使用这种方式,使得我们每次要执行相关命令时,都要输入很长的Nginx执行文件路径或者要先进入指定目录中才行,这确实有点儿麻烦。所以,我们可以将Nginx的路径配置到系统变量中。

1.修改/etc/profile文件

2.添加PATH

在profile文件中添加Nginx执行文件的路径,如图1-11所示。

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载