利用华为云ECS服务器搭建安防视频监控平台「华为云至简致远」
【摘要】 这篇文章介绍华为云ECS服务器的购买、部署、登录、使用的整体流程,在服务器部署NGINX服务,搭建一个安防视频监控平台,本地开发了配套的RTMP流媒体推流客户端、RTMP播放器,完成整体效果演示。 RTMP流媒体推流客户端就是用来模拟摄像头硬件设备,RTMP流媒体推流客户端在笔记本电脑上运行,将笔记本电脑上的摄像头音视频流实时推流到华为云服务器转存。
1. 前言
华为云的弹性云服务器(Elastic Cloud Server)是一种可随时自助获取、可弹性伸缩的云服务器,帮助用户打造可靠、安全、灵活、高效的应用环境,确保服务持久稳定运行,提升运维效率。弹性云服务器从创立到发动只需几分钟,客户将具有云服务器的超级管理员权限,轻松布置各种运用。这篇文章介绍华为云ECS服务器的购买、部署、登录、使用的整体流程,在服务器部署NGINX服务,搭建一个安防视频监控平台,本地开发了配套的RTMP流媒体推流客户端、RTMP播放器,完成整体效果演示。 RTMP流媒体推流客户端就是用来模拟摄像头硬件设备,RTMP流媒体推流客户端在笔记本电脑上运行,将笔记本电脑上的摄像头音视频流实时推流到华为云服务器转存。
2. 购买云服务器
如果之前没有使用过华为云的ECS服务器,可以先申请试用1个月,了解服务器的基本使用然后再购买,不得不说提供这个试用服务还是非常不错。产品试用领取地址:https://activity.huaweicloud/free_test/index.html每天9:30开抢,每天限量100份,这个页面不仅有云服务器可以领取试用,还有云数据库、沙盒等其他产品。我这里领取了 2核4G S6云服务器,这个服务器是配套华为自研25GE智能高速网卡,适用于网站和Web应用等中轻载企业应用。选择配置的时候发现S6规格的已经没有了,来晚了。S6规格没有了,就选择了S3,2核,4GB的配置结算。image-20220611131022494页面向下翻,下面选择系统预装的系统,我这里选择ubuntu 20.04,安装NGINX,来搭建流媒体服务器。页面继续下翻,设置云服务器名称,设置系统的root密码。接着就可以继续去支付了。
购买后等待一段时间,系统资源就即可分配完成。
3. 登录云服务器云服务器的管理控制台从这里进入:https://www.huaweicloud/product/ecs.html在官网主页,点击产品,找到计算选项,就可以看到弹性云服务器ECS,点击进去就可以看到管理控制台的选项。
在弹性云服务器的选项页面可以看到刚才购买的云服务器,如果点击进去提示该区域没有可用的服务器,说明区域选择的不对,在下面截图红色框框的位置可以看到可用的区域切换按钮,切换之后就行了。点击服务器右边的更多,可以对服务器重装系统、切换操作系统、关机、开机、重启、重置密码等操作。接下来先点击登录,了解一下登录的流程,看看系统进去的效果。云服务器支持SSH协议远程登录,可以在浏览器上直接使用CloudShell方式或者VNC方式登录,如果本身你自己也是使用Linux系统,可以在Linux系统里通过ssh命令直接登录,如果是在windows下可以使用SecureCRT登录。其他登录方式。最方便的登录方式,直接在控制台使用VNC在浏览器里登录,点击立即登录。根据提示输入用户名,密码后,按下回车键即可登录。用户名直接输入root,密码就是刚才配置云服务器时,填入的root密码。注意: Linux下输入密码默认都是隐藏的,也就是在键盘上输入密码界面上是不会有反应的,自己按照正确的密码输入即可。用户名、密码输入正确后,登录成功。可以点击全屏模式,更好的操作。
4. 使用CloudShell登录云服务器在页面上直接点击CloudShell登录按钮。CloudShell方式比VNC方式方便、流畅多了,也支持命令的复制粘贴。
输入密码点击连接。登录成功进入终端。
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配置文件进行添加配置。添加配置的流程:命令行输入:vim /etc/ssh/sshd_config在文件最后添加:KexAlgorithms curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1保存退出。重启ssh服务service ssh restart
如果不想这么麻烦的去修改配置文件,那么最简单的办法就是: 切换操作系统,换一个低版本的,比如:ubuntu18.04 即可。在云服务器的控制台,找到自己的服务器,然后选择切换操作系统。根据界面上的引导流程,切换即可。更换新的系统需要1~4分钟时间,稍微等待一下即可。如果要使用远程SSH协议方式登录云服务器,需要具备以下几个前提条件。[1]弹性云服务器状态为运行中。[2]弹性云服务器已经绑定弹性公网IP,绑定方式请参见绑定弹性公网IP。[3]所在安全组入方向已开放22端口,配置方式请参见配置安全组规则。[4]使用的登录工具(如PuTTY,SecureCRT`)与待登录的弹性云服务器之间网络连通。例如,默认的22端口没有被防火墙屏蔽。
但是这些配置不用担心,在购买服务器后,根据引导一套走完,上面的这些配置都已经默认配置好了,不用自己再去单独配置。系统切换成功后,打开SecureCRT 6.5软件,进行登录。SecureCRT 6.5整体而言还是挺好用的。如果自己没有``SecureCRT,自己下载一个即可。当然,不一定非要使用SecureCRT`,其他还有很多SSH远程登录工具,喜欢哪个使用哪个。下面介绍``SecureCRT `登录的流程。选择新建会话。选择SSH2协议。主机名就填服务器的公网IP地址,端口号默认是22,用户名填root。自己云服务器的公网IP地址,在控制台可以看到。软件点击下一步之后,可以填充描述信息,备注这个链接是干什么的。选择刚才新建的协议端口点击连接。云服务器连接上之后,软件界面会弹出对话框填充用户名、密码。登录成功的效果如下。软件可以配置一些选项,让界面符合Linux终端配色,可以修改字体大小、字体编码等等。配置后的效果。
6. 安装NFS服务器为了方便向服务器上拷贝文件,可以采用NFS服务器、或者FTP服务器 这些方式。 我本地有一台ubuntu 18.04 系统笔记本,我这里采用NFS方式拷贝文件上去。(1)安装NFS服务器root@ecs-348470:~ sudo apt-get install nfs-kernel-server(2)创建一个work目录方便当做共享目录使用root@ecs-348470:~ mkdir work(3)编写NFS配置文件NFS 服务的配置文件为/etc/exports,如果系统没有默认值,这个文件就不一定会存在,可以使用 vim 手动建立,然后在文件里面写入配置内容。/home/work *(rw,no_root_squash,sync,no_subtree_check,insecure)配置文件里参数的含义:(4)NFS服务器相关指令/etc/init.d/nfs-kernel-server start 启动 NFS 服务ufw disable 关闭防火墙/etc/init.d/nfs-kernel-server restart 重启NFS服务exportfs -arv 共享路径生效
(5)本地客户机挂载服务器的目录wbyq@wbyq:~$ sudo mount -t nfs -o nolock122.112.212.171:/home/work /home/wbyq/mnt/(6)设置华为云服务器的安全策略需要把华为云服务器的端口号开放出来,不然其他客户端是无法访问服务器的。我这里比较粗暴直接,直接将所有端口号,所有IP地址都开放出来了。
**(7)本地客户机挂载服务器测试 **挂载指令:sudo mount -t nfs -o nolock122.112.212.171:/home/work /home/wbyq/mnt/image-20220611185744008
7. 安装NGINX(配置RTMP服务)(1)下载编译时需要依赖的一些工具root@ecs-348470:~ sudo apt-get install build-essential libpcre3 libpcre3-dev libssl-dev(2)下载NGINX编译需要的软件包root@ecs-348470:~ mkdir nginxroot@ecs-348470:~ cd nginx/root@ecs-348470:~ wgethttp://nginx.org/download/nginx-1.10.3.tar.gzroot@ecs-348470:~ wgethttp://zlib.net/zlib-1.2.11.tar.gzroot@ecs-348470:~ wgethttps://ftp.pcre.org/pub/pcre/pcre-8.40.tar.gzroot@ecs-348470:~ wgethttps://www.openssl.org/source/openssl-1.0.2k.tar.gzroot@ecs-348470:~ wgethttps://github/arut/nginx-rtmp-module/archive/master.zipimage-20220611190538685(3)下载后的文件全部解压root@ecs-348470:~ tar xvf openssl-1.0.2k.tar.gzroot@ecs-348470:~ tar xvfnginx-rtmp-module-master.tar.gzroot@ecs-348470:~ tar xvf nginx-1.8.1.tar.gzroot@ecs-348470:~ tar xvf pcre-8.40.tar.gzroot@ecs-348470:~ tar xvf zlib-1.2.11.tar.gzimage-20220611190905353(4)配置NGINX源码,生成Makefile文件root@ecs-348470:~ cd nginx-1.8.1/root@ecs-348470:~ ./configure --prefix=/usr/local/nginx --with-debug --with-pcre=../pcre-8.40 --with-zlib=../zlib-1.2.11 --with-openssl=../openssl-1.0.2k --add-module=../nginx-rtmp-module-master执行完上一步之后,打开objs/Makefile文件,找到-Werror选项并删除。(5)编译并安装NGINXroot@ecs-348470:~/nginx/nginx-1.8.1 make && make install安装之后NGINX的配置文件存放路径:/usr/local/nginx/nginx:主程序(6)查看NGINX的版本号root@ecs-348470:/usr/local/nginx/sbin/usr/local/nginx/sbin/nginx -vnginx version: nginx/1.8.1(5)在配置文件里加入RTMP服务器的配置root@ecs-348470:~ vim/usr/local/nginx/conf/nginx.conf打开文件后,在文件最后加入以下配置:
这样配置之后,服务器收到RTMP流会在NGINX的当前目录下,创建一个video目录用来缓存视频。客户端向服务器推流之后,服务器就会缓存视频到设置的目录。(5)检查配置文件是否正确
(6)NGINX常用的3个命令sudo service nginx startsudo service nginx stopsudo service nginx restart
(7)启动NGINX服务器sudo service nginx start
8. 摄像头推流音视频到服务器为了模拟摄像头实时监控推流,我这使用QT+FFMPEG编写了一个小软件,在windows下运行,推流本地笔记本电脑的数据到服务器。软件运行之后,将本地音频、视频编码之后通过RTMP协议推流到NGINX服务器。软件运行效果:推流工具运行过程中效果。9. 编写本地RTMP流播放器在上面第8小节,通过推流客户端模拟摄像头,已经将本地的摄像头数据实时推流到服务器了,那么还差一个播放器,为了方便能够在任何有网的地方实时查看摄像头的音频和图像,还需要编写一个RTMP流媒体播放器。我这里的播放器内核是采用libvlc开发的,使用QT作为GUI框架,开发了一个流媒体播放器,可以实时拉取服务器上的流数据,并且还支持回放。因为服务器上的NGINX配置了自动保存的参数,可以将推上去的流按时间段保存下来。输入服务器地址之后就可以拉取流进行播放。点击获取回放列表,可以查看服务器上保存的历史视频回放播放。10. 总结相较于传统服务器,云服务器具有多方面的优势,利用弹性计算优势,帮助企业完成云上业务的部署与应用,,可以根据自身需要自定义服务器配置,灵活地选择设定所需的内存、CPU、带宽等配置,整体上减小了企业自己搭建服务器开发的成本,还省了服务器的一大堆维护费用。【华为云至简致远】有奖征文火热进行中:https://bbs.huaweicloud/blogs/352809【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:cloudbbs@huaweicloud进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。