WebRTC Demo Apprtc项目完整配置(apprtc/coturn/collider、腾讯云、https)201907

740次阅读
没有评论

目录
SETP1:基本依赖安装与准备
STEP2:Collider信令服务器编译安装
STEP3:配置Coturn服务器
STEP4:配置APPRTC应用服务器
STEP5:完整系统启动
参考文章
作者:花果山の香蕉
主要参考安装指导:
官方指导:https://github.com/webrtc/apprtc/blob/master/README.md
主要步骤:

下载官方源码(包含应用app)
Collider信令服务器配置
Coturn TURN服务器安装配置
调整app代码进行应用部署
启动服务及最终测试
*注意观察过程中的提示,缺什么有什么错误不要放过,一步一步慢慢来是最快的。尽可能先参考官方指导、INSTALL、README文件再看博客。整个跑通用了快3天,还是走了不少弯路。

SETP1:基本依赖安装与准备
本文使用自己的腾讯云VPS,没有使用google app engin。
获取合法SSL证书!当前信令传输与WebRTC都需要基于https即使用TLS进行通信。所以最好给域名申请证书,只用自己颁发的可能会遇到一些验证与合法性问题。本文使用腾讯云上TrustAsia TLS RSA CA办法的一年证书,获得的文件为.cert与.key,申请很快。
文中用到的网址或端口
认证的网址为
之后需要放通的端口:
本文8089
本文8101
默认8080
默认8081
获取项目原代码:
$ git clone https://github.com/webrtc/apprtc.git
得到apprtc文件夹,在文件夹下安装依赖
npm install
pip install -r requirements.txt

进一步安装配置

$ sudo apt install nodejs npm $ npm install -g grunt
-g 安装到全局目录,这样只设置全局目录的path就可以,否则node
modules会分布在不同位置
$ sudo apt install openjdk-8-jdk
$ sudo apt install golang-1.10-go
安装go:需要sodo,需要添加安装目录的bin到PATH。
$ sudo find / -name go

/usr/lib/go-1.10/bin/go

在自己使用的bashrc文件中添加到PATH, /.bashrc或者/.zshrc,添加内容:export PATH=”$PATH:/usr/lib/go-1.10/bin”
$ source ~/.zshrc
下载安装google cloud sdk: https://cloud.google.com/sdk/docs/#linux
$ tar -xf google-cloud-sdk-245.0.0-linux-x86_64.tar.gz得到google-cloud-sdk 文件夹
$ sudo ./google-cloud-sdk/install.sh
和之前相同方式添加nodejs目录和google cloud sdk目录到PTAH,本文使用如下,目录根据自己的修改:
export PATH=”/home/ts/env/google-cloud-sdk/bin:/home/ts/prepare/node-v10.16.0-linux-x64/bin:$PATH”
$ source ~/.zshrc

用到的库或者工具:

nodejs:apprtc应用通过nodejs编写
npm:包管理工具,解决代码部署问题,此处用于安装grunt
grunt:编译apprtc工程
jdk:java开发库,用于编译java代码
golang:collider使用go编写
google cloud sdk:即便不使用google app engin,由于apprtc使用google cloud sdk管理,也需要安装,
STEP2:Collider信令服务器编译安装
Colider为信令服务器,使用使用webSocket交互信息。
主要参考官方指导文档:https://github.com/webrtc/apprtc/blob/master/src/collider/README.md

2.1. go环境
Collider使用go编写,需要用go build。之前SETP1中已经安装。
建立文件夹作为go工作目录,以编译collider,如mkdir文件夹名为goWorkspace(本文将goWorkspace与官方apprtc目录放在同级),将绝对路径添加到bashrc文件中,添加内容:
export GOPATH=绝对路径/goWorkspace
source命令更新配置。
2.2 建立src文件夹并链接源码
$ mkdir $GOPATH/src
当前在执行git clone apprtc的文件夹

$ ln -s pwd/apprtc/src/collider/collider $GOPATH/src
$ ln -s pwd/apprtc/src/collider/collidermain $GOPATH/src
$ ln -s pwd/apprtc/src/collider/collidertest $GOPATH/src

2.3 安装需要的依赖
$ go get collidermain
可能出现的问题:
package golang.org/x/net/websocket: unrecognized import path “golang.org/x/net/websocket” (https fetch: Get https://golang.org/x/net/websocket?go-get=1: dial tcp 216.239.37.1:443: i/o timeout)
解决方法:
参考:https://my.oschina.net/u/2306127/blog/1599929

$ mkdir -p $GOPATH/src/golang.org/x
$ cd $GOPATH/src/golang.org/x
$ git clone https://github.com/golang/net.git

2.4 安装collidermain主程序
$ go install collidermain
2.5 配置证书文件
建立根目录下文件夹,并将申请得到的证书拷贝到下边
$ sudo /cert
将证书分别命名为:
$ cp xxx.cert cert.pem
$ cp xxx.key key.pem

运行collidermain的格式:
$ GOPATH/bin/collidermain -port=8089 -tls=true -room-server=”https://:8081″
-room-server配置与之后apprtc有关,之后可以再修改此命令
注:看collidermain源码似乎只能设置port、tls、room-server三个属性,启用tls=true时,使用绝对路径,会默认在/cert/下面找证书文件;证书文件有误会在浏览器看到websocket时有ERR_CERT_AUTHORITY_INVALID类似的错误。
注:collider端口需要在服务器配置上放通

STEP3:配置Coturn服务器
见 https://blog.csdn.net/ts_dchs/article/details/97279097
使用端口:8101

STEP4:配置APPRTC应用服务器
官方指导:https://github.com/webrtc/apprtc/blob/master/README.md
4.1 部分配置
安装 grunt
$ sudo npm -g install grunt-cli
4.2 修改配置文件
src/app_engine/constants.py
[a]注释掉 ICE_SERVER_OVERRIDE = None 配置TURNserver,旧版该字段为TURN_SERVER_OVERRIDE
[b]开放ICE_SERVER_OVERRIDE = [ … ]代码块,编辑为:

ICE_SERVER_OVERRIDE = [
{
“urls”: [
“turn:62.234.71.93:8101?transport=udp”,
“turn:62.234.71.93:8101?transport=tcp”,
],
“username”: “ts”,
“credential”: “12345678”
},
{
“urls”: [
“stun:62.234.71.93:8101”
]
}
]

注意:去掉有没有必要的缩进、空格,否则会出错。
[c] 修改ICE_SERVER_BASE_URL = ‘https://networktraversal.googleapis.com’ ,没有找到字段含义,如果文档还请告知【TODO】。
ICE_SERVER_BASE_URL = ‘https://networktraversal.googleapis.com’
[d]修改WSS_INSTANCE_HOST_KEY = ‘host_port_pair’为自己的https域名和
WSS_INSTANCE_HOST_KEY = ‘:8089’
[e]WSS_INSTANCES字段与WSS_HOST_PORT_PAIRS在测试中似乎不能省略。可以将WSS_INSTANCES中多余的元组去掉,只留一个元祖,将WSS_INSTANCE_HOST_KEY字段做相同修改。
其他用模型,各个字段含义还没找到文档研究,如有请告知【TODO】。

4.3 编译
在apptrc目录下执行grunt build,注意每次完成配置文件修改需要再次build,得到结果在apptrc/out下。
4.4 运行
运行apptrc nodejs应用服务器(在apprtc文件夹下)
$ dev_appserver.py –host 0.0.0.0 –enable_host_checking=no –ssl_certificate_path=/cert/cert.pem –ssl_certificate_key_path=/cert/key.pem out/app_engine
不添加host会默认只在localhost进行部署,外部无法根据域名访问;
结果如图:

发现default模块默认使用的http与https端口分别为8080与8081,主要要进行放通,或者自定义在程序中修改。

STEP5:完整系统启动
信令服务器Collider
$ $GOPATH/bin/collidermain -port=8089 -tls=true -room-server=”https://:8081″
该服务器打印结果中可以看到对进入与退出间的管理。

应用服务器APPRTC
本文在SDK目录下/apprtc,由于out文件夹
$ dev_appserver.py –host 0.0.0.0 –enable_host_checking=no –ssl_certificate_path=/cert/cert.pem –ssl_certificate_key_path=/cert/key.pem out/app_engine
打印可以可以看到应用服务器的请求-应答或者错误提示

ICE TURN服务器
$ sudo turnserver -r testrealm

最终通过https://:查看应用页面。

参考文章
webrtc:https://github.com/webrtc/apprtc/blob/master/README.md
collider:https://github.com/webrtc/apprtc/blob/master/src/collider/README.md
coturn:https://github.com/coturn/coturn/wiki/CoturnConfig
官方wiki关于coturn turnserver和turnadmin:https://github.com/coturn/coturn/wiki
https://www.jianshu.com/p/a19441034f17

正文完
可以使用微信扫码关注公众号(ID:xzluomor)
post-qrcode
 
评论(没有评论)