Ubuntu环境下搭建webrtc简易服务器

Ubuntu环境下搭建webrtc简易服务器

服务器搭建地址: 192.168.1.6

1. 编译apprtc

① 下载代码

$ git clone https://github.com/webrtc/apprtc.git apprtc_root
$ cd apprtc_root
$ git checkout -b latest

② 安装NodeJS和grunt

$ echo "install node"
$ cd ~;
$ wget https://nodejs.org/dist/v5.9.0/node-v5.9.0-sunos-x64.tar.xz
$ tar xvf node-v5.9.0-sunos-x64.tar.xz
$ export PATH=$PATH:~/node-v5.9.0-linux-x64/bin
$ echo "export PATH=$PATH:~/node-v5.9.0-linux-x64/bin" >> ~/.bashrc
$ source ~/.bashrc
$ sudo npm install -g npm

注意:
node版本请按以上命令下载, 否则可能导致源码编译失败.

$ echo "install grunt"
$ npm -g install grunt-cli

③ 安装apprtc代码中的grunt依赖

切换到apprtc_root目录下:

$ npm install

然后再使用grunt命令编译出GAE app.

$ grunt build

编译完成后,输出将放在~/apprtc_root/out目录下的app_engine目录


2. 编译安装collidermain

① 安装go环境

建议去github下载最新版, go环境下载通道, 这样可以省去编译go源码的时间.

创建本地GO代码目录, 类似代码仓库

$ mkdir -p ~/gopath/src

配置本地环境变量~/.bashrc

$ vim ~/.bashrc

将下面的代码粘贴进去~

export GOROOT=~/go # go编译环境
export GOPATH=~/gopath    # go代码仓库
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

保存后, 退出终端重新打开或者执行下面的命令刷新环境变量, GO环境就安装配置好了.

$ source ~/.bashrc

② 安装配置信令服务器

找到服务器代码并编辑

源码AppRTC代码仓库中已经包含了go信令服务器代码, 为了方便这些代码的更新, 这里选择将代码链接到$GOROOT/src

$ ln -rs ~/apprtc_root/src/collider/collider $GOPATH/src/
$ ln -rs ~/apprtc_root/src/collider/collidermain $GOPATH/src/
$ ln -rs ~/apprtc_root/src/collider/collidertest $GOPATH/src/

编辑$GOPATH/src/collidermain/main.go, 修改房间服务器为你的服务器地址

//var roomSrv = flag.String("room-server", "https://apprtc.appspot.com", "The origin of the room server")
var roomSrv = flag.String("room-server", "http://192.168.1.6", "The origin of the room server")   

编辑$GOPATH/src/collider/collider.go,设置信令服务器所需要用的HTTPS的证书文件, 找到如下代码,注释后改为这样:

//e = server.ListenAndServeTLS("/cert/cert.pem", "/cert/key.pem")
e = server.ListenAndServeTLS("/etc/nginx/192.168.1.6.crt", "/etc/nginx/192.168.1.6.key")

这里我并没有使用证书, 如需测试证书, 可使用Let’s Encrypt免费添加https

配置是否使用tls

var tls = flag.Bool("tls", false, "whether TLS is used")

安装信令服务器collidermain的依赖

首先编译collider, 切换到$GOPATH/src下(使用低版本的go编译可能会出现其他的一些问题, 这里只列举了通常会出现的错误, 这里我用的go1.7.4)

$ go get collider

如果执行该命令出现如下错误:

诸葛不亮

这里是一个包无法下载, 可以直接去github上下载, 下载链接是 https://github.com/golang/net, 你可以把这个仓库clone下来

$ cd ~
$ git clone https://github.com/golang/net.git

然后将仓库移到$GOPATH/src代码仓库下, 并且保证目录结构

$ echo "创建目录结构"
$ mkdir -p golang.org/x
$ echo "将net目录移动到golang.org/x"
$ mv net golang.org/x
$ echo "最后将golang.org目录移动到$GOPATH/src"
$ mv golang.org $GOPATH/src

然后执行上面的collider编译命令, 这下就可以编译collidermain

$ go get collidermain

编译collider相关均在$GOPATH/src目录下
编译成功后, 可执行文件在$GOPATH/bin目录下


3. ICEServer的配置

网上基本找不到DEMO, 不过还是有大神写了一个例子, 下载链接auth demo. 你也可以参考该作者原文地址http://www.cnblogs.com/wansui/p/5851653.html

编译前, 先将你的服务器地址把auth.go中的192.168.1.6替换掉.

为了方便生成二进制文件以及使用, 我将代码下载到$GOPATH/src

$ cd $GOPATH/src
$ mkdir auth; cd auth
$ wget https://github.com/vc60er/apprtc_turn_auth/blob/master/auth.go
$ cd ..; go get auth

4. 部署服务器

ICEServer

因为已经配置了$GOPATH/bin环境变量, 这里可直接执行

$ auth

执行成功后, 默认端口为8081

collider服务器

$ collidermain

执行成功后, 默认端口为8089

apprtc服务器demo

① 安装 Google App Engine SDK for Python

点这里进入文档通道ubuntu安装GAE文档

② 进入~/apprtc_root/out编辑constants.py

查看auth.go源文件, 找到var key = "4080218913", 把它的值赋给CEOD_KEY,ICE_SERVER_API_KEY, 保证一直就行.

CEOD_KEY = '4080218913'
ICE_SERVER_BASE_URL = 'http://192.168.1.6:8081'
ICE_SERVER_URL_TEMPLATE = '%s/turn?key=%s'
#ICE_SERVER_API_KEY = os.environ.get('ICE_SERVER_API_KEY')
ICE_SERVER_API_KEY = '4080218913'

③ 为了方便以后快速运行, 这里写一个脚本, (如果上面的ICE_SERVER_API_KEY已经配置, 可以去掉export ICE_SERVER_API_KEY="4080218913")

export PATH=$PATH:~/google_appengine # gae安装目录
export APPRTC_APP=~/apprtc_root/out/app_engine/
export HOST="--host=0.0.0.0"
export PORT=8080
export ICE_SERVER_API_KEY="4080218913"
dev_appserver.py $HOST $PORT $APPRTC_APP #端口小于1024, 需要在前面加入sudo

至此服务器搭建成功.

tips:
如果不启用auth服务器, webrtc只能网页之间连麦, 手机是无法连麦的.
服务器demo代码请看~/apprtc_root/out/app_engine/apprtc.py, 支持两人连麦

你可能感兴趣的:(webrtc)