【摘要】 这篇文章介绍华为云ECS服务器的购买、部署、登录、使用的整体流程,在服务器部署NGINX服务,搭建一个安防视频监控平台,本地开发了配套的RTMP流媒体推流客户端、RTMP播放器,完成整体效果演示。 RTMP流媒体推流客户端就是用来模拟摄像头硬件设备,RTMP流媒体推流客户端在笔记本电脑上运行,将笔记本电脑上的摄像头音视频流实时推流到华为云服务器转存。

  1. 前言

  华为云的弹性云服务器(Elastic Cloud Server)是一种可随时自助获取、可弹性伸缩的云服务器,帮助用户打造可靠、安全、灵活、高效的应用环境,确保服务持久稳定运行,提升运维效率。弹性云服务器从创立到发动只需几分钟,客户将具有云服务器的超级管理员权限,轻松布置各种运用。

  这篇文章介绍华为云ECS服务器的购买、部署、登录、使用的整体流程,在服务器部署NGINX服务,搭建一个安防视频监控平台,本地开发了配套的RTMP流媒体推流客户端、RTMP播放器,完成整体效果演示。 RTMP流媒体推流客户端就是用来模拟摄像头硬件设备,RTMP流媒体推流客户端在笔记本电脑上运行,将笔记本电脑上的摄像头音视频流实时推流到华为云服务器转存。

  2. 购买云服务器

  如果之前没有使用过华为云的ECS服务器,可以先申请试用1个月,了解服务器的基本使用然后再购买,不得不说提供这个试用服务还是非常不错。

  产品试用领取地址:

  本地服务器与云服务器数据同步_服务器放在云端与本地的优劣_云服务器和本地服务器

  每天9:30开抢,每天限量100份,这个页面不仅有云服务器可以领取试用,还有云数据库、沙盒等其他产品。

  服务器放在云端与本地的优劣_本地服务器与云服务器数据同步_云服务器和本地服务器

  云服务器和本地服务器_服务器放在云端与本地的优劣_本地服务器与云服务器数据同步

  我这里领取了 2核4G S6云服务器,这个服务器是配套华为自研25GE智能高速网卡,适用于网站和Web应用等中轻载企业应用。

  服务器放在云端与本地的优劣_本地服务器与云服务器数据同步_云服务器和本地服务器

  选择配置的时候发现S6规格的已经没有了,来晚了。

  本地服务器与云服务器数据同步_服务器放在云端与本地的优劣_云服务器和本地服务器

  S6规格没有了,就选择了S3,2核,4GB的配置结算。

  image-20220611131022494

  页面向下翻,下面选择系统预装的系统,我这里选择ubuntu 20.04,安装NGINX,来搭建流媒体服务器。

  本地服务器与云服务器数据同步_服务器放在云端与本地的优劣_云服务器和本地服务器

  页面继续下翻,设置云服务器名称,设置系统的root密码。

  服务器放在云端与本地的优劣_云服务器和本地服务器_本地服务器与云服务器数据同步

  接着就可以继续去支付了。

  服务器放在云端与本地的优劣_云服务器和本地服务器_本地服务器与云服务器数据同步

  云服务器和本地服务器_服务器放在云端与本地的优劣_本地服务器与云服务器数据同步

  云服务器和本地服务器_服务器放在云端与本地的优劣_本地服务器与云服务器数据同步

  购买后等待一段时间,系统资源就即可分配完成。

  云服务器和本地服务器_服务器放在云端与本地的优劣_本地服务器与云服务器数据同步

  3. 登录云服务器

  云服务器的管理控制台从这里进入:

  在官网主页,点击产品,找到计算选项,就可以看到弹性云服务器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 nolock 122.112.212.171:/home/work /home/wbyq/mnt/

  (6)设置华为云服务器的安全策略

  需要把华为云服务器的端口号开放出来,不然其他客户端是无法访问服务器的。

  我这里比较粗暴直接,直接将所有端口号,所有IP地址都开放出来了。

  本地服务器与云服务器数据同步_云服务器和本地服务器_服务器放在云端与本地的优劣

  本地服务器与云服务器数据同步_云服务器和本地服务器_服务器放在云端与本地的优劣

  服务器放在云端与本地的优劣_本地服务器与云服务器数据同步_云服务器和本地服务器

  (7)本地客户机挂载服务器测试

  挂载指令:

  sudo mount -t nfs -o nolock 122.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 nginx

  root@ecs-348470:~# cd nginx/

  root@ecs-348470:~# wget

  root@ecs-348470:~# wget

  root@ecs-348470:~# wget

  root@ecs-348470:~# wget

  root@ecs-348470:~# wget

  image-20220611190538685

  (3)下载后的文件全部解压

  root@ecs-348470:~# tar xvf openssl-1.0.2k.tar.gz

  root@ecs-348470:~# tar xvf nginx-rtmp-module-master.tar.gz

  root@ecs-348470:~# tar xvf nginx-1.8.1.tar.gz

  root@ecs-348470:~# tar xvf pcre-8.40.tar.gz

  root@ecs-348470:~# tar xvf zlib-1.2.11.tar.gz

  image-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)编译并安装NGINX

  root@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 -v

  nginx 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 start

  sudo service nginx stop

  sudo 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、带宽等配置,整体上减小了企业自己搭建服务器开发的成本,还省了服务器的一大堆维护费用。

  【华为云至简致远】有奖征文火热进行中:

最后修改:2024 年 08 月 03 日
如果觉得我的文章对你有用,请随意赞赏