WebRTC搭建流程(二)房间服务器搭建
房间服务器搭建
安装依赖软件和环境
(一)阿里云的源是阿里自己的镜像,不需要再修改源,安装必备软件像 git、解压、nodejs、python 、go语言编译等必备的软件
cd ~
sudo apt-get update
apt-get install git unzip lrzsz nodejs npm automake autoconf libtool nodejs-legacy python-webtest golang -y
哪个软件安装失败就重新装
apt-get 软件名称
(二) java环境安装
- 下载jdk8 linux 64位版 jdk-8u191-linux-x64.tar.gz 下载地址下载完拿shell工具上传到服务器/usr/lib/jvm路径下,jvm 文件夹没有的话创建后上传。解压jdk压缩文件
cd /usr/lib/jvm/tar -zxvf jdk-8u191-linux-x64.tar.gz
- 设置环境变量
cd /etc/vim profile
- 打开文件后,在文件末尾追加
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_191export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
- 修改后按键ESC ->shift+:->wq 保存并退出
- 使配置生效
source /etc/profile
- 验证java环境
java -version
- 如果出现如下信息则环境配置成功
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)
(三) git下载apprtc项目仓库,并编译
cd ~
git clone .git
cd apprtc/
git checkout v1.0
- 安装编译工具
npm -g install grunt-cli
- 安装项目依赖
npm install
- 这里不会很顺利,出现各种问题
- 如果报错:SyntaxError: Use of const in strict mode,需要更新版本:
npm cache clean -f
npm install -g n
n stable
node -v
npm install // 再来安装一次
- 如果仍有错误还可以切换grunt-cli的源再重来一次
rm node_modules/ -rf //删掉
npm config set registry //切换淘宝源
npm info underscore //使其生效
npm install // 再来安装一次
- 还有问题谷歌、百度、Stack Overflow 查询
- 依赖搞定之后,编译apprtc项目
grunt build
- 这里也会出现一些问题,缺少一些依赖,到相应缺少module目录下
npm install
- 再没有可能需要翻墙自己下载,我没有遇到。
如果出现
requests.exceptions.SSLError
- 这个是证书,不需要,我们nginx来转发就好了,使用如下方式编译
grunt build -force
- 如果出现
Done.with warrings 或者 Done.with out error
表示成功
(四)修改编译后的项目配置,源文件没有动
- 修改 constants.py
cd out/app_engine/
vim constants.py
- 修改的部分
TURN_BASE_URL = 'https://www.域名'
ICE_SERVER_BASE_URL = 'https://www.域名
WSS_INSTANCE_HOST_KEY = 'www.域名:8089'
WSS_INSTANCES = [{WSS_INSTANCE_HOST_KEY: 'www.域名:8089',WSS_INSTANCE_NAME_KEY: 'wsserver-std',WSS_INSTANCE_ZONE_KEY: 'us-central1-a'
}, {WSS_INSTANCE_HOST_KEY: 'www.域名:8089',WSS_INSTANCE_NAME_KEY: 'wsserver-std-2',WSS_INSTANCE_ZONE_KEY: 'us-central1-f'
}]
- 修改 index_template.html在
- var loadingParams = { 这一行上面添加javaScript代码
var servers=[{
credential:"helloword",
username:"helloword",
urls:["turn:服务器外网ip:3478?transport=udp",
"turn:服务器外网ip:3478?transport=tcp",
"turn:服务器外网ip:3479?transport=udp",
"turn:服务器外网ip:3479?transport=tcp"
]
}];
- 修改debug.js
cd ~/apprtc/out/app_engine/js
vi apprtc.debug.js
做出如下修改
if (!isChromeApp()) {roomLink=roomLink.substring("http","https"); //新增加的window.history.pushState({"roomId":roomId, "roomLink":roomLink}, roomId, roomLink);}
- 注释掉
//peerConnectionConfig: {{ pc_config | safe }},
//turnRequestUrl: '{{ turn_url }}',
//iceServerRequestUrl: '{{ ice_server_url }}',
3.添加
peerConnectionConfig:{"rtcpMuxPolicy":"require","iceServers":servers,"bundlePolicy":"max-bundle"},
(五)安装google_appengine 谷歌Python服务器容器,apprtc跑在上面
- 下载地址 选择Standard environment下的python,下载到本地后后上传到服务器 ~ 目录
- 解压
cd ~
unzip google_appengine_1.9.80.zip
- 配置环境变量
vi /etc/profile
- 添加变量
export PATH=$PATH:/root/google_appengine/
- 使其生效
source /etc/profile
- 创建日志文件
mkdir logs
cd logs
touch room.log collider.log turn.log //创建文件
chmod 777 room.log collider.log turn.log //修改权限
(六)启动房间服务器,观察日志
- 观察日志
tail -f ./logs/room.log
- 新建立连接启动服务器
cd ~nohup ./google_appengine/dev_appserver.py --host 内网ip --enable_host_checking false ./apprtc/out/app_engine > ./logs/room.log 2>&1 &
(七)结果验证
打开https://域名/
能正常访问,则成功
如果报错找不到 callstats.min.js 下载地址
socket.io.js 下载地址
下载后上传到
/root/apprtc/out/app_engine/third_party/callstats
重新打开网页就好
WebRTC搭建流程(二)房间服务器搭建
房间服务器搭建
安装依赖软件和环境
(一)阿里云的源是阿里自己的镜像,不需要再修改源,安装必备软件像 git、解压、nodejs、python 、go语言编译等必备的软件
cd ~
sudo apt-get update
apt-get install git unzip lrzsz nodejs npm automake autoconf libtool nodejs-legacy python-webtest golang -y
哪个软件安装失败就重新装
apt-get 软件名称
(二) java环境安装
- 下载jdk8 linux 64位版 jdk-8u191-linux-x64.tar.gz 下载地址下载完拿shell工具上传到服务器/usr/lib/jvm路径下,jvm 文件夹没有的话创建后上传。解压jdk压缩文件
cd /usr/lib/jvm/tar -zxvf jdk-8u191-linux-x64.tar.gz
- 设置环境变量
cd /etc/vim profile
- 打开文件后,在文件末尾追加
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_191export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
- 修改后按键ESC ->shift+:->wq 保存并退出
- 使配置生效
source /etc/profile
- 验证java环境
java -version
- 如果出现如下信息则环境配置成功
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)
(三) git下载apprtc项目仓库,并编译
cd ~
git clone .git
cd apprtc/
git checkout v1.0
- 安装编译工具
npm -g install grunt-cli
- 安装项目依赖
npm install
- 这里不会很顺利,出现各种问题
- 如果报错:SyntaxError: Use of const in strict mode,需要更新版本:
npm cache clean -f
npm install -g n
n stable
node -v
npm install // 再来安装一次
- 如果仍有错误还可以切换grunt-cli的源再重来一次
rm node_modules/ -rf //删掉
npm config set registry //切换淘宝源
npm info underscore //使其生效
npm install // 再来安装一次
- 还有问题谷歌、百度、Stack Overflow 查询
- 依赖搞定之后,编译apprtc项目
grunt build
- 这里也会出现一些问题,缺少一些依赖,到相应缺少module目录下
npm install
- 再没有可能需要翻墙自己下载,我没有遇到。
如果出现
requests.exceptions.SSLError
- 这个是证书,不需要,我们nginx来转发就好了,使用如下方式编译
grunt build -force
- 如果出现
Done.with warrings 或者 Done.with out error
表示成功
(四)修改编译后的项目配置,源文件没有动
- 修改 constants.py
cd out/app_engine/
vim constants.py
- 修改的部分
TURN_BASE_URL = 'https://www.域名'
ICE_SERVER_BASE_URL = 'https://www.域名
WSS_INSTANCE_HOST_KEY = 'www.域名:8089'
WSS_INSTANCES = [{WSS_INSTANCE_HOST_KEY: 'www.域名:8089',WSS_INSTANCE_NAME_KEY: 'wsserver-std',WSS_INSTANCE_ZONE_KEY: 'us-central1-a'
}, {WSS_INSTANCE_HOST_KEY: 'www.域名:8089',WSS_INSTANCE_NAME_KEY: 'wsserver-std-2',WSS_INSTANCE_ZONE_KEY: 'us-central1-f'
}]
- 修改 index_template.html在
- var loadingParams = { 这一行上面添加javaScript代码
var servers=[{
credential:"helloword",
username:"helloword",
urls:["turn:服务器外网ip:3478?transport=udp",
"turn:服务器外网ip:3478?transport=tcp",
"turn:服务器外网ip:3479?transport=udp",
"turn:服务器外网ip:3479?transport=tcp"
]
}];
- 修改debug.js
cd ~/apprtc/out/app_engine/js
vi apprtc.debug.js
做出如下修改
if (!isChromeApp()) {roomLink=roomLink.substring("http","https"); //新增加的window.history.pushState({"roomId":roomId, "roomLink":roomLink}, roomId, roomLink);}
- 注释掉
//peerConnectionConfig: {{ pc_config | safe }},
//turnRequestUrl: '{{ turn_url }}',
//iceServerRequestUrl: '{{ ice_server_url }}',
3.添加
peerConnectionConfig:{"rtcpMuxPolicy":"require","iceServers":servers,"bundlePolicy":"max-bundle"},
(五)安装google_appengine 谷歌Python服务器容器,apprtc跑在上面
- 下载地址 选择Standard environment下的python,下载到本地后后上传到服务器 ~ 目录
- 解压
cd ~
unzip google_appengine_1.9.80.zip
- 配置环境变量
vi /etc/profile
- 添加变量
export PATH=$PATH:/root/google_appengine/
- 使其生效
source /etc/profile
- 创建日志文件
mkdir logs
cd logs
touch room.log collider.log turn.log //创建文件
chmod 777 room.log collider.log turn.log //修改权限
(六)启动房间服务器,观察日志
- 观察日志
tail -f ./logs/room.log
- 新建立连接启动服务器
cd ~nohup ./google_appengine/dev_appserver.py --host 内网ip --enable_host_checking false ./apprtc/out/app_engine > ./logs/room.log 2>&1 &
(七)结果验证
打开https://域名/
能正常访问,则成功
如果报错找不到 callstats.min.js 下载地址
socket.io.js 下载地址
下载后上传到
/root/apprtc/out/app_engine/third_party/callstats
重新打开网页就好