- 安装过程中会有不少的问题,如果有版本的问题,需要下载正确版本的源码自行安装
一、前期准备
1.安装Open JDK,(Java):
# add-apt-repository ppa:openjdk-r/ppa
sudo apt update
sudo apt install openjdk-8-jdk
2.安装nodejs相关包:
-
不要在终端下载二进制包,会出现版本不兼容的问题,在nodejs官网下载源码或者二进制包并解压,里面包含了
nodejs和npm
:wget https://nodejs.org/dist/v10.9.0/node-v10.9.0-linux-x64.tar.xz tar xf node-v10.9.0-linux-x64.tar.xz cd node-v10.9.0-linux-x64/bin
- 把该目录下的文件全部软链接到目录
/usr/local/bin
sudo ln -s ${PWD}/node /usr/local/bin
sudo ln -s ${PWD}/npm /usr/local/bin
-
使用
npm
安装grunt-cli
,grunt
是编译工具sudo npm -g install grunt-cli sudo npm -g install grunt
- npm是nodejs的包管理工具和编译工具,跟ubuntu中的apt类似;
- -g只是表示安装到全局;
npm install
命令将模块安装到当前目录下的node_modules目录
,如果没有node_modules目录会创建该目录。
-
安装
nodejs-legacy
sudo apt install nodejs-legacy
3.安装Python和Python-webtest:
sudo apt install python
sudo apt install python-webtest
4.安装和配置google app engine
- 下载google app engine,此处下载需要翻墙。
-
配置
google app engine
的路径:解压
google_appengine_1.9.50.zip
unzip google_appengine_1.9.50.zip
编辑
/etc/profile文件
,在文末最后添加语句:export PATH="$PATH:/home/xin/google_appengine/"
当前安装目录是
/home/xin/google_appengine/
,根据实际目录进行配置,保存该文件,并source
source /etc/profile
5.Google Cloud SDK: #可以先不安装
这是一套使用Python管理 App Engine applications 的工具集。gcloud包括本地布署server以及布署和管理你的应用的命令行工具。
二、搭建步骤
1、房间服务器apprtc
除了Collider以外,其他代码都是用python实现的,使用node.js编译。
-
下载apprtc源码
git clone https://github.com/webrtc/apprtc.git cd apprtc sudo npm install
npm install
命令是将package.json里的依赖包都给装上,这些依赖包将被安装到当前目录下的node_modules目录下,需要安装的依赖包很多,都是从http://registry.npmjs.org下载的- 安装过程中会有很多版本问题,需自行解决
- 可以设置淘宝镜像
- 编译:
sudo grunt build
- 必须进入apprtc目录,进行编译。编译完成后,会生成out目录;
- 每次修改源码,都必须重新编译;也可以直接修改out目录里面的文件;
- 此处编译需要翻墙,直到编译成功;
- 编译成功后,进入out/app_engine目录,修改文件
- 部署运行:
- 借鉴第1.6部分
- 这一步介绍使用默认信令和TURN服务部署AppRTC,仅作测试使用,完全部署必须配置信令服务和TURN服务;
- 建议配置其他服务之前先保证此测试服务正常;
2、信令服务器Collider
使用go语言实现的基于WebSocket 的命令服务器。
WebSocket协议:5分钟从入门到精通
- 安装go语言编译器:
sudo apt install golang
sudo apt install golang-go
go version
-
复制collider源代码:
建立goWorkspace目录:
mkdir -p goWorkspace/src
添加环境变量:
vim /etc/profile export GOPATH=/home/xin/goWorkspace/ source /etc/profile
把
/home/xin/apprtc/src/collider/
目录下的三个目录复制到该目录:cp -rf /home/xin/apprtc/src/collider/* /home/xin/goWorkspace/src
编辑
goWorkspace/src/collidermain/main.go
,修改房间服务器的地址var roomSrv = flag.String("room-server", "https://webrtc.olcms.com", "The origin of the room server")
编辑文件
goWorkspace/src/collider/collider.go
,将上面这句修改为下面这句:e = server.ListenAndServeTLS("/cert/cert.pem", "/cert/key.pem") e = server.ListenAndServeTLS("/etc/letsencrypt/live/webrtc.olcms.com/fullchain.pem", "/etc/letsencrypt/live/webrtc.olcms.com/privkey.pem")
其中
fullchain.pem和privkey.pem
为SSL证书,具体证书路径根据实际路径进行配置,SSL证书生成见后续Nginx配置
。
-
编译信令服务器:
go get collidermain go install collidermain
- 进入
goWorkspace/src目录
编译,此处编译需要翻墙; - 编译成功后,在goWorkspace目录下会生成
bin和pkg目录
- 若此处编译时无法翻墙,可手动下载需要的文件到goWorkspace/src/目录下,然后再编译
mkdir -p golang.org/x cd golang.org/x/ git clone https://github.com/golang/net
- 进入
3、防火墙打洞服务器STUN/TURN/ICE Server
使用makefile编译
- Coturn服务器:Coturn 是一种TURN服务器(也就是中转服务器),用于VoIP或通用数据流的NAT穿越和数据转发。
- coturn是一个C/C++语言的开源项目,项目地址
①安装coturn:
-
1、在线安装coturn:(不建议,容易出现版本不兼容问题)
sudo apt install coturn
-
2、下载
coturn源码
安装:(不完全)git clone https://github.com/coturn/coturn.git #https://github.com/coturn/coturn/wiki/Downloads wget http://coturn.net/turnserver/v4.5.0.7/turnserver-4.5.0.7.tar.gz tar xvfz turnserver-4.5.0.7.tar.gz cd turnserver-4.5.0.7 sudo ./configure sudo make install
-
3、下载二进制包,下载适合自己系统的二进制包:
cd ~ wget http://turnserver.open-sys.org/downloads/v4.4.1.2/turnserver-4.4.1.2-debian-wheezy-ubuntu-mint-x86-64bits.tar.gz tar xvfz turnserver-4.4.1.2-debian-wheezy-ubuntu-mint-x86-64bits.tar.gz
然后详细阅读安装手册
INSTALL文件
,根据指导进行安装;
②配置coturn:
-
编辑配置文件
/etc/default/coturn
,把文件中的这一行/etc/default/coturn
去掉注释; -
编辑文件
/etc/turnserver.conf
,根据实际情况进行修改:listening-device=eth0 #此处eth0是电脑网卡名称 listening-port=3478 #turn服务器的端口号 relay-device=eth0 #此处eth0是电脑网卡名称 min-port=49152 max-port=65535 Verbose fingerprint lt-cred-mech use-auth-secret static-auth-secret=inesadt #此处要和房间服务器配置时constants.py文件中的CODE_KEY保持一致。 user=inesadt:0x7e3a2ed35d3cf7f19e2f8b015a186f54 user=inesadt:inesadt stale-nonce cert=/usr/local/etc/turn_server_cert.pem pkey=/usr/local/etc/turn_server_pkey.pem no-loopback-peers no-multicast-peers mobility no-cli
文件中
0x7e3a2ed35d3cf7f19e2f8b015a186f54
的生成方法:turnadmin -k -u inesadt -r north.gov -p inesadt
说明:
-k 表示生成一个long-term credential key
-u 表示用户名
-p 表示密码
-r 表示Realm域创建ssl证书,即文件中的
cert和pkey
:sudo openssl req -x509 -newkey rsa:2048 -keyout /usr/local/etc/turn_server_pkey.pem –out /usr/local/etc/turn_server_cert.pem -days 99999 –nodes
③启动coturn:
service coturn start
4、配置nginx服务器
- 三个服务器都搭建完成后,需要一定的配置,使它们可以一起工作;
- 反向代理apprtc,使之支持
https
访问,如果http直接访问apprtc,则客户端无法启动视频音频采集(必须得用https访问
)
①安装nginx:
-
在线安装:
sudo apt install nginx
- 二进制包安装:
wget http://nginx.org/download/nginx-1.15.6.tar.gz
#sudo apt install libpcre3-dev
sudo ./configure --with-http_ssl_module
sudo make
sudo make install
默认安装在
/usr/local/nginx
(也可以执行prefix);
所有的配置文件都在/etc/nginx
下;
并且每个虚拟主机已经安排在了/etc/nginx/sites-available
下;
日志放在了/var/log/nginx
中,分别是access.log和error.log
;
默认的虚拟主机的目录设置在了/usr/share/nginx/www
;
②配置nginx.conf:
主要的配置文件为
/etc/nginx
目录下的nginx.conf
,
- 修改文件
nginx.conf
,主要添加server模块
,可查看nginx的配置
vi /etc/nginx/nginx.conf
server {
root /usr/share/nginx/html;
index index.php index.html index.htm;
listen 80;
ssl_certificate /cert/cert.pem;
ssl_certificate_key /cert/key.pem;
server_name ***.***.***;
location / {
proxy_pass http://roomserver$request_uri;
proxy_set_header Host $host;
}
location ~ .php$ {
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
}
③启动nginx:
-
在线安装的启动和访问
-
源码安装的启动:
cd /usr/local/nginx sbin/nginx
-
然后再打开谷歌浏览器或者火狐浏览器,访问自己的
公网IP
,比如http://125.216.242.151
,选择默认随机生成的房间号或自己手动输入房间号即可。