系统环境 Ubuntu 16.04,在搭建之前建议关闭系统防火墙。
一. 房间服务器搭建
1.1 安装依赖程序
1 | apt-get install git unzip lrzsz nodejs npm automake autoconf libtool nodejs-legacy python-webtest golang –y |
1.2 安装jdk8
1.2.1 下载jdk8
从此处下载对应的版本到/usr/lib/jvm
目录,然后解压到当前目录:
1 | tar zxf jdk-8u151-linux-x64.tar.gz |
1.2.2 设置环境变量
编辑/etc/source
文件,在文件尾添加如下内容(因为jdk版本不同,文件夹名称可能会有差别):
1 | export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_151 |
执行source /etc/profile
命令让设置生效。
1.3 apprtc获取和安装
1.3.1 获取apprtc源码
1 | cd ~ |
1.3.2 安装apprtc
1 | cd apprtc |
1.3.3 修改源码
使用ifconfig
命令查看本机IP信息:
我使用的阿里云的云服器,服务器在NAT之后,所以172.18.163.203
是本地IP,即内网IP;从云服务器的管理页面可以看到该服务器的外网IP,如120.79.164.111
。如果使用的是阿里云等服务器还需要在安全策略中设置将所有进/出端口都映射到172.18.163.203
。
下面以外网IP 120.79.164.111
为例,根据实际外网IP进行对应修改。
修改constants.py
constants.py路径:apprtc/out/app_engine/constants.py
设置ICE服务器的IP端口、信令服务器(collider)的IP端口,修改之后的constants.py文件完整内容如下:
1 | # Copyright 2015 Google Inc. All Rights Reserved. |
修改apprtc.py
apprtc.py路径:apprtc/out/app_engine/apprtc.py
将
修改为
(大约位于146行左右)
修改index_template.html
index_template.html路径:apprtc/out/app_engine/index_template.html
设置TURN服务器信息,在javascript脚本中添加servers变量:
1 | var servers=[{ |
并将peerConnectionConfig: {{ pc_config | safe }}
修改为使用上面声明的servers变量;
1 | peerConnectionConfig: { "rtcpMuxPolicy":"require","iceServers":servers,"bundlePolicy":"max-bundle"},iceServerRequestUrl: '{{ ice_server_url }}', |
##1.4 获取google_appengine
从https://download.csdn.net/download/china_jeffery/10375696下载google_appengine.tar
,并使用tar
命令解压:
1 | cd ~ |
1.5 启动房间服务器
1 | cd ~ |
172.18.163.203
为内网IP。
二. 信令服务器搭建
2.1 collider源码
Webrtc信令服务可以使用的apprtc自带的collider,这个服务是使用go语言开发。collider已经位于apprtc/src
目录中,我们将其拷贝到~/collider/src
目录中:
1 | cd ~ |
编辑~/collider/src/collidermain/main.go
文件,将room-server修改为服务器的外网IP和端口8080:
1 | var roomSrv = flag.String("room-server", "http://120.79.164.111:8080", "The origin of the room server") |
2.2 安装go
在安装go之前最好先卸载掉系统上已经安装的go版本:
1 | apt-get remove golang |
然后使用wget
命令下载go:
1 | wget https://storage.googleapis.com/golang/go1.5.1.linux-amd64.tar.gz |
或者从https://download.csdn.net/download/china_jeffery/10375936下载。然后解压tar zxf go1.5.1.linux-amd64.tar.gz
。
添加如下环境变量到/etc/source
文件尾,并使用source /etc/source
是环境变量生效:
1 | export GOROOT=/root/go |
2.3 collider安装
使用go命令进行collider安装:
1 | cd ~/collider |
2.4 启动信令服务器
1 | cd ~ |
三. TURN服务器搭建
webrtc的turn服务是为提供NAT穿透或者中转使用的,因为webrtc客户端可能会在不同的路由器后面或者多层路由器后面,那么他们如何通讯呢?都需要穿透,穿透的服务就是turn服务,webrtc推荐使用的coturn(以前也叫turnserver),它支STUN和Relay。
3.1 安装依赖
1 | sudo apt-get install libssl-dev |
3.2 下载并编译源码
1 | cd ~ |
3.3 启动TURN服务
1 | ./coturn/bin/turnserver --syslog -a -X 120.79.164.111 -E 172.18.163.203 -f --min-port=32355 --max-port=65535 --user=helloword:helloword -r helloword --cert=turn_server_cert.pem --pkey=turn_server_pkey.pem --log-file=stdout -v |
120.79.164.111
为外网IP,172.18.163.203
为本地IP。
turnserver的参数见:https://github.com/coturn/coturn/wiki/turnserver
本文最初发布在我的CSDN博客:《WebRTC – 官方apprtc示例搭建》