利用華為云ECS服務器搭建安防視頻監(jiān)控平臺
【摘要】 這篇文章介紹華為云ECS服務器的購買、部署、登錄、使用的整體流程,在服務器部署NGINX服務,搭建一個安防視頻監(jiān)控平臺,本地開發(fā)了配套的RTMP流媒體推流客戶端、RTMP播放器,完成整體效果演示。 RTMP流媒體推流客戶端就是用來模擬攝像頭硬件設備,RTMP流媒體推流客戶端在筆記本電腦上運行,將筆記本電腦上的攝像頭音視頻流實時推流到華為云服務器轉存。
1. 前言
華為云的彈性云服務器(Elastic Cloud Server)是一種可隨時自助獲取、可彈性伸縮的云服務器,幫助用戶打造可靠、安全、靈活、高效的應用環(huán)境,確保服務持久穩(wěn)定運行,提升運維效率。彈性云服務器從創(chuàng)立到發(fā)動只需幾分鐘,客戶將具有云服務器的超級管理員權限,輕松布置各種運用。
這篇文章介紹華為云ECS服務器的購買、部署、登錄、使用的整體流程,在服務器部署NGINX服務,搭建一個安防視頻監(jiān)控平臺,本地開發(fā)了配套的RTMP流媒體推流客戶端、RTMP播放器,完成整體效果演示。 RTMP流媒體推流客戶端就是用來模擬攝像頭硬件設備,RTMP流媒體推流客戶端在筆記本電腦上運行,將筆記本電腦上的攝像頭音視頻流實時推流到華為云服務器轉存。
2. 購買云服務器
如果之前沒有使用過華為云的ECS服務器,可以先申請試用1個月,了解服務器的基本使用然后再購買,不得不說提供這個試用服務還是非常不錯。
每天9:30開搶,每天限量100份,這個頁面不僅有云服務器可以領取試用,還有云數據庫、沙盒等其他產品。
我這里領取了 2核4G S6云服務器,這個服務器是配套華為自研25GE智能高速網卡,適用于網站和Web應用等中輕載企業(yè)應用。
選擇配置的時候發(fā)現S6規(guī)格的已經沒有了,來晚了。
S6規(guī)格沒有了,就選擇了S3,2核,4GB的配置結算。
頁面向下翻,下面選擇系統(tǒng)預裝的系統(tǒng),我這里選擇ubuntu 20.04,安裝NGINX,來搭建流媒體服務器。
頁面繼續(xù)下翻,設置云服務器名稱,設置系統(tǒng)的root密碼。
接著就可以繼續(xù)去支付了。
購買后等待一段時間,系統(tǒng)資源就即可分配完成。
3. 登錄云服務器
云服務器的管理控制臺從這里進入: https://www.huaweicloud.com/product/ecs.html
在官網主頁,點擊產品,找到計算選項,就可以看到彈性云服務器ECS,點擊進去就可以看到管理控制臺的選項。
在彈性云服務器的選項頁面可以看到剛才購買的云服務器,如果點擊進去提示該區(qū)域沒有可用的服務器,說明區(qū)域選擇的不對,在下面截圖紅色框框的位置可以看到可用的區(qū)域切換按鈕,切換之后就行了。
點擊服務器右邊的更多,可以對服務器重裝系統(tǒng)、切換操作系統(tǒng)、關機、開機、重啟、重置密碼等操作。
接下來先點擊登錄,了解一下登錄的流程,看看系統(tǒng)進去的效果。
云服務器支持SSH協議遠程登錄,可以在瀏覽器上直接使用CloudShell方式或者VNC方式登錄,如果本身你自己也是使用Linux系統(tǒng),可以在Linux系統(tǒng)里通過ssh命令直接登錄,如果是在windows下可以使用SecureCRT登錄。
其他登錄方式。
最方便的登錄方式,直接在控制臺使用VNC在瀏覽器里登錄,點擊立即登錄。
根據提示輸入用戶名,密碼后,按下回車鍵即可登錄。
用戶名直接輸入root,密碼就是剛才配置云服務器時,填入的root密碼。
注意: Linux下輸入密碼默認都是隱藏的,也就是在鍵盤上輸入密碼界面上是不會有反應的,自己按照正確的密碼輸入即可。
用戶名、密碼輸入正確后,登錄成功。
可以點擊全屏模式,更好的操作。
4. 使用CloudShell登錄云服務器
在頁面上直接點擊CloudShell登錄按鈕。CloudShell方式比VNC方式方便、流暢多了,也支持命令的復制粘貼。
輸入密碼點擊連接。
登錄成功進入終端。
5. 使用SecureCRT登錄云服務器
上面演示了兩種登錄方式,都是直接在瀏覽器里登錄,這種兩種方式比較來看,VNC方式效率最低,CloudShell相對來說要方便很多。一般我自己正常開發(fā)時,都是使用第三方工具來登錄的,如果本身自己開發(fā)環(huán)境的電腦就是Linux,MAC等,可以直接使用ssh命令登錄,這種方式操作流暢方便。如果在windows下,可以使用第三方軟件登錄。
我現在使用的系統(tǒng)是win10,在windows系統(tǒng)下有很多遠程終端軟件支持SSH登錄到Linux云服務器,我當前采用的使用SecureCRT 6.5來作為登錄終端,登錄云服務器。
注意: SecureCRT 6.5 登錄高版本Linux系統(tǒng)會出現Key exchange failed問題,導致登錄失敗,比如: 登錄ubuntu 20.04 系統(tǒng)。 出現這種問題需要對系統(tǒng)ssh配置文件進行添加配置。
如果不想這么麻煩的去修改配置文件,那么最簡單的辦法就是: 切換操作系統(tǒng),換一個低版本的,比如:ubuntu18.04 即可。
在云服務器的控制臺,找到自己的服務器,然后選擇切換操作系統(tǒng)。
根據界面上的引導流程,切換即可。更換新的系統(tǒng)需要1~4分鐘時間,稍微等待一下即可。
如果要使用遠程SSH協議方式登錄云服務器,需要具備以下幾個前提條件。
[1]彈性云服務器狀態(tài)為“運行中”。[2]彈性云服務器已經綁定彈性公網IP,綁定方式請參見綁定彈性公網IP。[3]所在安全組入方向已開放22端口,配置方式請參見配置安全組規(guī)則。[4]使用的登錄工具(如PuTTY,SecureCRT`)與待登錄的彈性云服務器之間網絡連通。例如,默認的22端口沒有被防火墻屏蔽。
但是這些配置不用擔心,在購買服務器后,根據引導一套走完,上面的這些配置都已經默認配置好了,不用自己再去單獨配置。
系統(tǒng)切換成功后,打開SecureCRT 6.5軟件,進行登錄。SecureCRT 6.5整體而言還是挺好用的。
如果自己沒有``SecureCRT,自己下載一個即可。當然,不一定非要使用SecureCRT`,其他還有很多SSH遠程登錄工具,喜歡哪個使用哪個。
下面介紹``SecureCRT `登錄的流程。
選擇新建會話。
選擇SSH2協議。
主機名就填服務器的公網IP地址,端口號默認是22,用戶名填root。
自己云服務器的公網IP地址,在控制臺可以看到。
軟件點擊下一步之后,可以填充描述信息,備注這個鏈接是干什么的。
選擇剛才新建的協議端口點擊連接。
云服務器連接上之后,軟件界面會彈出對話框填充用戶名、密碼。
登錄成功的效果如下。
軟件可以配置一些選項,讓界面符合Linux終端配色,可以修改字體大小、字體編碼等等。
配置后的效果。
6. 安裝NFS服務器
為了方便向服務器上拷貝文件,可以采用NFS服務器、或者FTP服務器 這些方式。 我本地有一臺ubuntu 18.04 系統(tǒng)筆記本,我這里采用NFS方式拷貝文件上去。
(1)安裝NFS服務器
root@ecs-348470:~# sudo apt-get install nfs-kernel-server
(2)創(chuàng)建一個work目錄方便當做共享目錄使用
root@ecs-348470:~# mkdir work
(3)編寫NFS配置文件
NFS 服務的配置文件為/etc/exports,如果系統(tǒng)沒有默認值,這個文件就不一定會存在,可以使用 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/
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 http://nginx.org/download/nginx-1.10.3.tar.gz
root@ecs-348470:~# wget http://zlib.net/zlib-1.2.11.tar.gz
root@ecs-348470:~# wget https://ftp.pcre.org/pub/pcre/pcre-8.40.tar.gz
root@ecs-348470:~# wget https://www.openssl.org/source/openssl-1.0.2k.tar.gz
root@ecs-348470:~# wget https://github.com/arut/nginx-rtmp-module/archive/master.zip
(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
(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
執(zhí)行完上一步之后,打開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 {
server {
listen 8888;
application live {
live on;
record all;
record_unique on;
record_path "./video"; #視頻緩存的路徑
record_suffix -%Y-%m-%d-%H_%M_%S.flv;
}
} }
這樣配置之后,服務器收到RTMP流會在NGINX的當前目錄下,創(chuàng)建一個video目錄用來緩存視頻。
客戶端向服務器推流之后,服務器就會緩存視頻到設置的目錄。
(5)檢查配置文件是否正確
root@ecs-348470:/usr/local/nginx/sbin# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
(6)NGINX常用的3個命令
sudo service nginx start
sudo service nginx stop
sudo service nginx restart
(7)啟動NGINX服務器
sudo service nginx start
8. 攝像頭推流音視頻到服務器
為了模擬攝像頭實時監(jiān)控推流,我這使用QT+FFMPEG編寫了一個小軟件,在windows下運行,推流本地筆記本電腦的數據到服務器。軟件運行之后,將本地音頻、視頻編碼之后通過RTMP協議推流到NGINX服務器。
軟件運行效果:
推流工具運行過程中效果。
9. 編寫本地RTMP流播放器
在上面第8小節(jié),通過推流客戶端模擬攝像頭,已經將本地的攝像頭數據實時推流到服務器了,那么還差一個播放器,為了方便能夠在任何有網的地方實時查看攝像頭的音頻和圖像,還需要編寫一個RTMP流媒體播放器。
我這里的播放器內核是采用libvlc開發(fā)的,使用QT作為GUI框架,開發(fā)了一個流媒體播放器,可以實時拉取服務器上的流數據,并且還支持回放。因為服務器上的NGINX配置了自動保存的參數,可以將推上去的流按時間段保存下來。
輸入服務器地址之后就可以拉取流進行播放。
點擊獲取回放列表,可以查看服務器上保存的歷史視頻回放播放。
10. 總結
相較于傳統(tǒng)服務器,云服務器具有多方面的優(yōu)勢,利用彈性計算優(yōu)勢,幫助企業(yè)完成云上業(yè)務的部署與應用,,可以根據自身需要自定義服務器配置,靈活地選擇設定所需的內存、CPU、帶寬等配置,整體上減小了企業(yè)自己搭建服務器開發(fā)的成本,還省了服務器的一大堆維護費用。
轉載請在文章開頭和結尾顯眼處標注:作者、出處和鏈接。不按規(guī)范轉載侵權必究。
未經授權嚴禁轉載,授權事宜請聯系作者本人,侵權必究。
本文禁止轉載,侵權必究。
授權事宜請至數英微信公眾號(ID: digitaling) 后臺授權,侵權必究。
評論
評論
推薦評論
暫無評論哦,快來評論一下吧!
全部評論(0條)