First off All
服务器环境:采用的阿里云国内服务器,系统: Ubuntu 16.04 64位 。
各个服务所需要的编译环境图:
各个服务器对应所需编译平台
1.第一步,先更新下命令行工具,工欲善其身必先利其器,不更新回头出现莫名的错误me 不管。
apt-get update
2.第二步:我们先从房间服务器搭建开始入手,看上面的图,就知道,这个家伙是要用时node.js编译的,那必须安装各种node.js编译相关的插件
按如下步骤:
先安装两个工具库
sudo apt-get install git unzip golang
sudo apt-get install automake autoconf libtool
备注:不要用这种方法安装(apt-get nodejs 如果这么装会报各种版本不兼容)
使用这种方式下载官网 如:
wget https://nodejs.org/dist/v4.7.0/node-v4.7.0-linux-x64.tar.gz
并解压下
tar -xzf node-v4.7.0-linux-x64.tar.gz
要安装node js linux的环境就是方便 只需要配置下环境变量即可,方式如下
vim /etc/profile
里面加入
export PATH=/usr/webrtc/node-v4.7.0-linux-x64/bin:$PATH(备注这个地址是我自己的解压的地址,找到自己的node加压的bin目录设置进环境变量即可)
配置还环境变量以后,需要生效下,执行如下命令
source /etc/profile
下面我们可以测试下node js 环境是否正常了 命令行输入node 进入了就说明node js 安装成功了
下面还需要安装下npn(编译工具)(不用sudo安装npm)
npm -g install grunt-cli
安装python
sudo apt-get install python-webtest
安装jdk,备注:这个是google的jdk
apt-get install default-jdk(google的jdk)
下面就下载rtc的源码 使用clone的方式
进入根目录
git clone https://github.com/webrtc/apprtc.git
这样就有一个apprtc的文件夹了
下面进入文件夹
cd apprtc
如果国外的需要设置下镜像(国内自然不用,如果速度慢就设置下淘宝镜像)
npm config set registry https://registry.npm.taobao.org (设置的淘宝镜像)
npm info underscore (生效设置)
下面使用
npm install //如果这个命令执行有错误 需要删除 sudo rm node_modules -r 再重试(编译房间服务器)
下面进行编译
grunt build //执行结果最后显示 Done, without errors. 就没问题 还是先改src再去build,或者直接修改out里面的配置,都是可以的一个直接改一个是改src
去掉警告,顺利通过:grunt build --force
(Aborted due to warnings. 代表编译成功了)
编译成功后就会有一个新的文件夹out
下面要修改房间服务器的地址
cd out/app_engine
下面需要修改三个文件
1.vim constants.py
指明ice服务器turn 注意不支持https ice服务器一般都是turn开头
修改 43 47行 改成本服务器ip地址 端口是3478 和ceod_key成water(这里我把账号密码,设置成water了,账号密码自己定义,上面的修改成自己的ice服务器端口,后面会设置成3478)
下面需要修改信令服务器的地址 wws开头
61 和 65 行修改成 本服务器ip端口是 8089:比如
这个文件就ok了
2.修改下一个文件
vim apprtc.py
修改 143 144行
去除if else暂使用http的上面两个地址
3.修改 vim index_template.html
找到loadingParams的地方如下图
添加如下代码到上面,修改下账号和密码 和下面的ice服务器 备注端口要和前面的一样
var servers = [{
credential: "water",
username: "water",
urls: [
"turn:112.74.96.116:3478?transport=udp",
"turn:112.74.96.116:3478?transport=tcp"
]
}];
并注释掉下面的
peerConnectionConfig:{{pc_config|safe}},
并添加
peerConnectionConfig: {"iceServers": servers, "rtcpMuxPolicy": "require", "bundlePolicy": "max-bundle"},
可以看到下
比如 (备注端口要和前面的Ice服务器一样)
那怎么开启这个服务器,由于是google开发的需要google引擎
下载
下载https://cloud.google.com/appengine/downloads#Google_App_Engine_SDK_for_Python
(需要翻墙)
我自己上传的可以
到链接:百度网盘 请输入提取码 密码:rvwj
可以下载到如下的
google_appengine压缩包,服务器上面有 解压命令 :
unzip google_appengine_1.9.38.zip
运行房间服务器命令,ip是你服务器ip:
./google_appengine/dev_appserver.py --host 0.0.0.0 ./apprtc/out/app_engine
./google_appengine/dev_appserver.py --host 47.94.106.28 ./apprtc/out/app_engine
出现的错误:google.appengine.tools.devappserver2.wsgi_server.BindError: Unable to bind 47.94.106.28:8080
这样就成功开启了第一个房间服务器。。。。。。是不是感觉不容易。。。
二、下面去配置开启信令服务器 使用go进行编译
其实他的代码已经在房间服务里面了,我们把代码cp出来单独放
将信令服务器的代码copy一份至根目录
cp apprtc/src/collider/ . -r
然后进入信令服务器的文件夹
cd collider/
我们把里面的代码全部放在一个src目录下面,命令行方式如下
创建src目录
mkdir src
将需要编译的代码拷贝到src目录
mv co* src
所以需要安装go 进入根目录
下面安装go 语言
下载go的安装包
wget https://storage.googleapis.com/golang/go1.5.1.linux-amd64.tar.gz
tar -xzf go1.5.1.linux-amd64.tar.gz
如图
然后cd 到go/bin 目录下面
下面需要安装go
一样的配置环境变量
添加环境变量
vim /etc/profile
加入
export GOROOT=/usr/webrtc/go=
export PATH=$GOROOT/bin:/root/node-v4.7.0-linux-x64/bin:$PATH
并生效他
source /etc/profile
下面需要修改下信令服务器的配置main.go
修改下自己的房间服务器的地址
修改成自己的服务器ip地址 然后端口是8080
编译先设置下零时go的编译地址如:
export GOPATH=/usr/webrtc/collider/
使用go get collidermain进行编译,这时候如果国内服务器直接执行会报错
我们需要手动下载下一个插件参考地址:go get golang.org/x 包失败解决方法_残剑孤影的博客-CSDN博客
下载代码
mkdir -p $GOPATH/src/golang.org/x
cd $GOPATH/src/golang.org/x
git clone https://github.com/golang/net.git
再去执行
go get collidermain
会生成bin文件夹和 pkg 文件夹 就成功编译好了
开启信令服务器的方式如下
cd collider/bin
运行命令:
./collidermain -port=8089 -tls=false
成功开启信令服务器
三.搭建ice打洞服务器安装打洞服务器 到根目录 使用makefile 进行编译
git clone https://github.com/coturn/coturn.git
需要下载一些插件安装coturn
下面coturn安装 安装前面的版本就好不需要括号里面的
$ sudo apt-get install libssl-dev
$ sudo apt-get install libsqlite3 (or sqlite3)
$ sudo apt-get install libsqlite3-dev (or sqlite3-dev)
$ sudo apt-get install libevent-dev
$ sudo apt-get install libpq-dev
下面就行编译
cd coturn
./configure
sudo make install
开启打动服务器的方式
cd /usr/local/bin
运行:
172.17.231.82
./turnserver --syslog -a -L 172.17.231.82 -X 172.17.231.82 -E 172.17.231.82 -f --min-port=32355 --max-port=65535 --user=water:water -r water --cert=turn_server_cert.pem --pkey=turn_server_pkey.pem --log-file=stdout -v
备注:这里我遇到一个坑,就是我用公网的ip启动都提示无法绑定对应的ip,只有用0.0.0.0 启动不报错,所以局域网的时候可以打通,外网的时候coturn打洞都不成功。
启动可以吧这些参数写配置文件中,方便。
最后三个服务器都差不多搭建成功,如果在一个服务器上,可以写个脚本直接启动三个服务器:
我自己写了个作为参考: