First off All

服务器环境:采用的阿里云国内服务器,系统: Ubuntu 16.04 64位 。

各个服务所需要的编译环境图:

frc deaef5062cee810ccbf5db2082d4b5e1 - WebRTC 服务器搭建篇
各个服务器对应所需编译平台

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)

frc 04fae1112d9386aaf496a39d2b0eac7e - WebRTC 服务器搭建篇

下面需要修改信令服务器的地址 wws开头

61 和 65 行修改成 本服务器ip端口是 8089:比如

frc 0e053c51025d8fcdae94ddaa2e877ce0 - WebRTC 服务器搭建篇

这个文件就ok了

2.修改下一个文件

vim apprtc.py

修改 143 144行

去除if else暂使用http的上面两个地址

frc 92d5c733820fd013a2d40c70871915cf - WebRTC 服务器搭建篇

3.修改 vim index_template.html

找到loadingParams的地方如下图

frc 9cd9e6d19fc90af9655f2b0a2c531217 - WebRTC 服务器搭建篇

添加如下代码到上面,修改下账号和密码 和下面的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

(需要翻墙)

我自己上传的可以

到链接:https://pan.baidu.com/s/1pLmQQPt 密码: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

如图

frc 604a6a09556b058e07d21d860b2de9d2 - WebRTC 服务器搭建篇

然后cd 到go/bin 目录下面

下面需要安装go

一样的配置环境变量

frc 20b94fa1ce41de23f7680d54dfa58986 - WebRTC 服务器搭建篇

添加环境变量

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

frc 7c2d3db49a47c6945d115de50ba674f5 - WebRTC 服务器搭建篇

修改下自己的房间服务器的地址

修改成自己的服务器ip地址 然后端口是8080

编译先设置下零时go的编译地址如:

export GOPATH=/usr/webrtc/collider/

使用go get collidermain进行编译,这时候如果国内服务器直接执行会报错

我们需要手动下载下一个插件参考地址:http://blog.csdn.net/alexwoo0501/article/details/73409917

下载代码

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打洞都不成功。

启动可以吧这些参数写配置文件中,方便。

最后三个服务器都差不多搭建成功,如果在一个服务器上,可以写个脚本直接启动三个服务器:

我自己写了个作为参考:

frc 6ce857d0e0ce1be17cdab952d8fd121a - WebRTC 服务器搭建篇

WebRTC 服务器搭建篇

WebRTC 服务器搭建篇插图