利用华为云 ECS 服务器搭建安防视频监控平台【华为云至简致远】
【摘要】 这篇文章介绍华为云 ECS 服务器的购买、部署、登录、使用的整体流程,在服务器部署 NGINX 服务,搭建一个安防视频监控平台,本地开发了配套的 RTMP 流媒体推流客户端、RTMP 播放器,完成整体效果演示。 RTMP 流媒体推流客户端就是用来模拟摄像头硬件设备,RTMP 流媒体推流客户端在笔记本电脑上运行,将笔记本电脑上的摄像头音视频流实时推流到华为云服务器转存。
1. 前言
华为云的弹性云服务器(Elastic Cloud Server)是一种可随时自助获取、可弹性伸缩的云服务器,帮助用户打造可靠、安全、灵活、高效的应用环境,确保服务持久稳定运行,提升运维效率。弹性云服务器从创立到发动只需几分钟,客户将具有云服务器的超级管理员权限,轻松布置各种运用。
这篇文章介绍华为云 ECS 服务器的购买、部署、登录、使用的整体流程,在服务器部署 NGINX 服务,搭建一个安防视频监控平台,本地开发了配套的 RTMP 流媒体推流客户端、RTMP 播放器,完成整体效果演示。 RTMP 流媒体推流客户端就是用来模拟摄像头硬件设备,RTMP 流媒体推流客户端在笔记本电脑上运行,将笔记本电脑上的摄像头音视频流实时推流到华为云服务器转存。
2. 购买云服务器
如果之前没有使用过华为云的 ECS 服务器,可以先申请试用 1 个月,了解服务器的基本使用然后再购买,不得不说提供这个试用服务还是非常不错。
产品试用领取地址: https://activity.huaweicloud.com/free_test/index.html
![](https://static001.geekbang.org/infoq/21/210bda90388a179e09195a35cb198086.png)
每天 9:30 开抢,每天限量 100 份,这个页面不仅有云服务器可以领取试用,还有云数据库、沙盒等其他产品。
![](https://static001.geekbang.org/infoq/8f/8fc52c8ea65732596ff52fc8d1443a08.png)
![](https://static001.geekbang.org/infoq/23/237b3f046eea40f834b782743f76def1.png)
我这里领取了 2核4G S6云服务器
,这个服务器是配套华为自研 25GE 智能高速网卡,适用于网站和 Web 应用等中轻载企业应用。
![](https://static001.geekbang.org/infoq/cd/cdf094bb9457ba6d8ff0fca8bd224911.png)
选择配置的时候发现 S6 规格的已经没有了,来晚了。
![](https://static001.geekbang.org/infoq/26/26cdced6e9792023a146769d1059c920.png)
S6 规格没有了,就选择了 S3,2 核,4GB 的配置结算。
![](https://static001.geekbang.org/infoq/18/1826dc8e3e6c9287d85c2f752efe8511.png)
页面向下翻,下面选择系统预装的系统,我这里选择 ubuntu 20.04,安装 NGINX,来搭建流媒体服务器。
![](https://static001.geekbang.org/infoq/40/4049a6ddc664ab77e961af952b2fc233.png)
页面继续下翻,设置云服务器名称,设置系统的 root 密码。
![](https://static001.geekbang.org/infoq/22/229233726d9cb961bd295f089af6f62e.png)
接着就可以继续去支付了。
![](https://static001.geekbang.org/infoq/4d/4dbece673e30eceaaa7e7b6ae603658d.png)
![](https://static001.geekbang.org/infoq/01/017f751dc396b04171875a24bdcfb9c7.png)
![](https://static001.geekbang.org/infoq/2c/2cf569a1ef6bd4d8ee00f0d93ce68b8a.png)
购买后等待一段时间,系统资源就即可分配完成。
![](https://static001.geekbang.org/infoq/5b/5b7aeaf65ef6befd34d10432fd2c708a.png)
3. 登录云服务器
云服务器的管理控制台从这里进入: https://www.huaweicloud.com/product/ecs.html
在官网主页,点击产品,找到计算选项,就可以看到弹性云服务器 ECS,点击进去就可以看到管理控制台的选项。
![](https://static001.geekbang.org/infoq/5d/5d0e2b81f3c1d7b70a6456f235bff133.png)
![](https://static001.geekbang.org/infoq/3d/3d45d9492d7621b7b47334210536eaac.png)
在弹性云服务器
的选项页面可以看到刚才购买的云服务器,如果点击进去提示该区域没有可用的服务器,说明区域选择的不对,在下面截图红色框框的位置可以看到可用的区域切换按钮,切换之后就行了。
![](https://static001.geekbang.org/infoq/f8/f84c84a626f1f248c21a9b3e33d186de.png)
点击服务器右边的更多
,可以对服务器重装系统、切换操作系统、关机、开机、重启、重置密码等操作。
![](https://static001.geekbang.org/infoq/09/09e787cc09f2741d3ca18aa68a45e88a.png)
接下来先点击登录,了解一下登录的流程,看看系统进去的效果。
![](https://static001.geekbang.org/infoq/04/043fe17177a2f8c53242d28d34cc2de6.png)
云服务器支持 SSH 协议远程登录,可以在浏览器上直接使用 CloudShell 方式或者 VNC 方式登录,如果本身你自己也是使用 Linux 系统,可以在 Linux 系统里通过 ssh 命令直接登录,如果是在 windows 下可以使用 SecureCRT 登录。
![](https://static001.geekbang.org/infoq/c1/c1223dbbf71f17ea9f490a8bf502b5d5.png)
其他登录方式。
![](https://static001.geekbang.org/infoq/d3/d3700a709c385f48c799072b2b2e33ae.png)
最方便的登录方式,直接在控制台使用 VNC 在浏览器里登录,点击立即登录
。
![](https://static001.geekbang.org/infoq/3d/3d3af0de0c18291ea4f84245b009c3ce.png)
根据提示输入用户名,密码后,按下回车键即可登录。
用户名直接输入root
,密码就是刚才配置云服务器时,填入的 root 密码。
注意: Linux 下输入密码默认都是隐藏的,也就是在键盘上输入密码界面上是不会有反应的,自己按照正确的密码输入即可。
![](https://static001.geekbang.org/infoq/39/39861b1f7e4709a6b63d1592a21fdd7a.png)
用户名、密码输入正确后,登录成功。
可以点击全屏模式,更好的操作。
![](https://static001.geekbang.org/infoq/dd/dde4b4d14c563497591483363e590f00.png)
4. 使用 CloudShell 登录云服务器
在页面上直接点击CloudShell登录
按钮。CloudShell 方式比 VNC 方式方便、流畅多了,也支持命令的复制粘贴。
![](https://static001.geekbang.org/infoq/0c/0c9f77a3398a01931a0c6c41ccd9da57.png)
![](https://static001.geekbang.org/infoq/fd/fd02187569d3b200234efa2d32572d44.png)
输入密码点击连接。
![](https://static001.geekbang.org/infoq/f4/f47877e9420f6a4a8da34fa429d1cb9e.png)
登录成功进入终端。
![](https://static001.geekbang.org/infoq/fc/fc0747854b27f2922ded730d5a872e67.png)
5. 使用 SecureCRT 登录云服务器
上面演示了两种登录方式,都是直接在浏览器里登录,这种两种方式比较来看,VNC 方式效率最低,CloudShell
相对来说要方便很多。一般我自己正常开发时,都是使用第三方工具来登录的,如果本身自己开发环境的电脑就是 Linux,MAC 等,可以直接使用 ssh 命令登录,这种方式操作流畅方便。如果在 windows 下,可以使用第三方软件登录。
我现在使用的系统是 win10,在 windows 系统下有很多远程终端软件支持 SSH 登录到 Linux 云服务器,我当前采用的使用SecureCRT 6.5
来作为登录终端,登录云服务器。
注意: SecureCRT 6.5
登录高版本 Linux 系统会出现Key exchange failed
问题,导致登录失败,比如: 登录 ubuntu 20.04 系统。 出现这种问题需要对系统 ssh 配置文件进行添加配置。
添加配置的流程:
如果不想这么麻烦的去修改配置文件,那么最简单的办法就是: 切换操作系统,换一个低版本的,比如:ubuntu18.04 即可。
在云服务器的控制台,找到自己的服务器,然后选择切换操作系统。
![](https://static001.geekbang.org/infoq/8e/8ed288e3befe6fca679dc7040c925a39.png)
根据界面上的引导流程,切换即可。更换新的系统需要 1~4 分钟时间,稍微等待一下即可。
![](https://static001.geekbang.org/infoq/2c/2cd33c5050072effb688ec59239e6591.png)
如果要使用远程 SSH 协议方式登录云服务器,需要具备以下几个前提条件。
但是这些配置不用担心,在购买服务器后,根据引导一套走完,上面的这些配置都已经默认配置好了,不用自己再去单独配置。
系统切换成功后,打开SecureCRT 6.5
软件,进行登录。SecureCRT 6.5
整体而言还是挺好用的。
如果自己没有``SecureCRT,自己下载一个即可。当然,不一定非要使用
SecureCRT`,其他还有很多 SSH 远程登录工具,喜欢哪个使用哪个。
下面介绍``SecureCRT `登录的流程。
![](https://static001.geekbang.org/infoq/5e/5ebb09f6618bdcc447dd5c65e23dd81a.png)
选择新建会话。
![](https://static001.geekbang.org/infoq/c1/c1cb695cf51c6f98acb9c127c864f8ca.png)
选择 SSH2 协议。
![](https://static001.geekbang.org/infoq/c9/c906ac0a3e52c8c970bcab829d573b89.png)
主机名就填服务器的公网 IP 地址,端口号默认是 22,用户名填 root。
![](https://static001.geekbang.org/infoq/97/9790b18fcfb9a3dfb864bd51fbff712e.png)
自己云服务器的公网 IP 地址,在控制台可以看到。
![](https://static001.geekbang.org/infoq/56/5653ddf3b47d71e3f361357df9129592.png)
软件点击下一步之后,可以填充描述信息,备注这个链接是干什么的。
![](https://static001.geekbang.org/infoq/69/69506796f13046d9e3906123950d9586.png)
选择刚才新建的协议端口点击连接。
![](https://static001.geekbang.org/infoq/6c/6c4f9d107d8a852482794ebfcbc9615f.png)
云服务器连接上之后,软件界面会弹出对话框填充用户名、密码。
![](https://static001.geekbang.org/infoq/83/839ed55e7c9c6e33aec310db89f173c0.png)
登录成功的效果如下。
![](https://static001.geekbang.org/infoq/6e/6e30fbf03648d20a0bd352d648be1913.png)
软件可以配置一些选项,让界面符合 Linux 终端配色,可以修改字体大小、字体编码等等。
![](https://static001.geekbang.org/infoq/4f/4f2f08e3a038ba9a5ad30d421e19d9b2.png)
![](https://static001.geekbang.org/infoq/fb/fb78fe0bcf7a1efac012f8cf1ac14b7a.png)
配置后的效果。
![](https://static001.geekbang.org/infoq/83/837d67aedf251d0a37a56cdf1fc17ee4.png)
6. 安装 NFS 服务器
为了方便向服务器上拷贝文件,可以采用 NFS 服务器、或者 FTP 服务器 这些方式。 我本地有一台 ubuntu 18.04 系统笔记本,我这里采用 NFS 方式拷贝文件上去。
(1)安装 NFS 服务器
(2)创建一个 work 目录方便当做共享目录使用
(3)编写 NFS 配置文件
NFS 服务的配置文件为/etc/exports,如果系统没有默认值,这个文件就不一定会存在,可以使用 vim 手动建立,然后在文件里面写入配置内容。
![](https://static001.geekbang.org/infoq/90/907d7522b47d65b20d7ae005a920b633.png)
配置文件里参数的含义:
![](https://static001.geekbang.org/infoq/4d/4dc0f2fc114e7c20c69f1c327925f0f3.png)
![](https://static001.geekbang.org/infoq/59/596f19d6584edd814da479b57bbe1f4e.png)
![](https://static001.geekbang.org/infoq/17/17a7e9c8342423ee497bb5c5e1418c89.png)
![](https://static001.geekbang.org/infoq/80/80987e56991efecab648d8b06321274a.png)
(4)NFS 服务器相关指令
(5)本地客户机挂载服务器的目录
(6)设置华为云服务器的安全策略
需要把华为云服务器的端口号开放出来,不然其他客户端是无法访问服务器的。
我这里比较粗暴直接,直接将所有端口号,所有 IP 地址都开放出来了。
![](https://static001.geekbang.org/infoq/04/048682f6df1eedfabc8e30c713433e7f.png)
![](https://static001.geekbang.org/infoq/94/94306594ebe0312b9d99bbb751f3e109.png)
![](https://static001.geekbang.org/infoq/c8/c8436f514bea5399f0d22a4f6852488d.png)
**(7)本地客户机挂载服务器测试 **
挂载指令:
![](https://static001.geekbang.org/infoq/fb/fb46ae05a4e3b6d3c9b669a8b62247c1.png)
7. 安装 NGINX(配置 RTMP 服务)
(1)下载编译时需要依赖的一些工具
![](https://static001.geekbang.org/infoq/e1/e1e4ff807072513b602596cf14afc6b7.png)
(2)下载 NGINX 编译需要的软件包
![](https://static001.geekbang.org/infoq/14/14785b31cfa58bb0089b6b095872b92a.png)
(3)下载后的文件全部解压
![](https://static001.geekbang.org/infoq/1d/1d535b0a951f9fd756ad3580b330b25c.png)
(4)配置 NGINX 源码,生成 Makefile 文件
执行完上一步之后,打开 objs/Makefile 文件,找到-Werror 选项并删除。
(5)编译并安装 NGINX
安装之后 NGINX 的配置文件存放路径:
(6)查看 NGINX 的版本号
(5)在配置文件里加入 RTMP 服务器的配置
这样配置之后,服务器收到 RTMP 流会在 NGINX 的当前目录下,创建一个 video 目录用来缓存视频。
客户端向服务器推流之后,服务器就会缓存视频到设置的目录。
(5)检查配置文件是否正确
(6)NGINX 常用的 3 个命令
(7)启动 NGINX 服务器
8. 摄像头推流音视频到服务器
为了模拟摄像头实时监控推流,我这使用 QT+FFMPEG 编写了一个小软件,在 windows 下运行,推流本地笔记本电脑的数据到服务器。软件运行之后,将本地音频、视频编码之后通过 RTMP 协议推流到 NGINX 服务器。
软件运行效果:
![](https://static001.geekbang.org/infoq/d7/d7053b2f4e91bcfe03584a94769f5510.png)
推流工具运行过程中效果。
![](https://static001.geekbang.org/infoq/95/954e9a5f884018a11f29123ad8caace8.png)
9. 编写本地 RTMP 流播放器
在上面第 8 小节,通过推流客户端模拟摄像头,已经将本地的摄像头数据实时推流到服务器了,那么还差一个播放器,为了方便能够在任何有网的地方实时查看摄像头的音频和图像,还需要编写一个 RTMP 流媒体播放器。
我这里的播放器内核是采用 libvlc 开发的,使用 QT 作为 GUI 框架,开发了一个流媒体播放器,可以实时拉取服务器上的流数据,并且还支持回放。因为服务器上的 NGINX 配置了自动保存的参数,可以将推上去的流按时间段保存下来。
输入服务器地址之后就可以拉取流进行播放。
![](https://static001.geekbang.org/infoq/ed/ed1b917f70a11856987cb78490499112.png)
点击获取回放列表,可以查看服务器上保存的历史视频回放播放。
![](https://static001.geekbang.org/infoq/28/2898c1eb59cebee4a37852f646d4acc0.png)
10. 总结
相较于传统服务器,云服务器具有多方面的优势,利用弹性计算优势,帮助企业完成云上业务的部署与应用,,可以根据自身需要自定义服务器配置,灵活地选择设定所需的内存、CPU、带宽等配置,整体上减小了企业自己搭建服务器开发的成本,还省了服务器的一大堆维护费用。
【华为云至简致远】有奖征文火热进行中:https://bbs.huaweicloud.com/blogs/352809
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:cloudbbs@huaweicloud.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。想了解更多的华为云产品相关信息,请联系我们: 电话:950808 按 0 转 1
评论