google webRTC服务器搭建(CentOS7.3)
多余的科普我就不说了,这里有篇CSDN的盗文,可以了解一下(关于 GAE,coTurn,Collider等等)
http://blog.csdn.net/bamboolsu/article/details/48446787
1 安装node.js环境
七牛云下载地址: https://resource.mumov.com/node-v6.9.2.tar.gz
wget url 下载
tar -zxvf 解压
yum install gcc gcc-c++ 安装c++编译环境
指定nodejs安装路径
./configure —prefix=/usr/local/node
编译&安装
make
make install
配置node_home环境变量
vi /etc/profile
在 export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL 一行的上面添加如下内容:
export NODE_HOME=/usr/local/node
export PATH=$NODE_HOME/bin:$PATH
保存并编译该文件,使之生效
source /etc/profile
控制台输入 node -v 校验安装版本
命令行设置node使用国内源
npm --registry https://registry.[npm.taobao.org][] info underscore
安装 grunt
npm install -g grunt-cli
安装forever
npm install forever -g
2 安装GoLang语言环境
go语言源码下载地址:https://golang.org/dl/
下载go语言包(已编译的)
wget https://storage.googleapis.com/golang/go1.8.1.linux-amd64.tar.gz
解压至 /usr/local/目录下
修改环境变量 /etc/profile
先创建go工作空间 mkdir $HOME/goWorkspace
创建go资源文件夹 mkdir $HOME/goWorkspace/src
export GOROOT=/usr/local/go
export GOPATH=$HOME/goWorkspace
export PATH=$PATH:$GOROOT/bin
编译生效 source /etc.profile
3升级python的版本 google app engine 要求2.7.9以后的
2.7.13七牛云下载地址 https://resource.mumov.com/Python-2.7.13.tar.xz
下载资源
wget https://resource.mumov.com/Python-2.7.13.tar.xz
解压资源
zx -d file_name
tar -xvf file_name
进入文件夹
创建新的文件夹防止覆盖原版
mkdir /usr/local/python2713
./configure —prefix=/usr/local/python2713
编译安装
make
make install
备份旧版 使用新版
mv /usr/bin/python /usr/bin/python_old
ln -s /usr/local/python2713/bin/python2.7 /usr/bin/python
现在输入python -V
Python 2.7.13
PS:要使用yum安装什么依赖包的话就提前安装,python升级后yum就不能使用了,不嫌麻烦也可以切换回来哈
4安装google app engine SDK
官网地址(有墙): https://cloud.google.com/sdk/docs/
七牛云下载地址: https://resource.mumov.com/google-cloud-sdk-155.0.0-linux-x86_64.tar.gz
下载 解压 不进入文件夹
./google-cloud-sdk/install.s
./google-cloud-sdk/bin/gcloud init
安装python版google app engine
gcloud components install app-engine-python
gcloud components install app-engine-python-extras
5 部署信令服务器 collider
git 地址
https://github.com/webrtc/apprtc/tree/master/src/collider
先克隆到本地
git clone https://github.com/webrtc/apprtc.git
克隆完成后,先不要进入文件夹,先执行命令
ln -s `pwd`/apprtc/src/collider/collider $GOPATH/src
ln -s `pwd`/apprtc/src/collider/collidermain $GOPATH/src
ln -s `pwd`/apprtc/src/collider/collidertest $GOPATH/src
完成后 安装信令服务
go get collidermain
这里会被墙,可以通过修改/etc/hosts来翻墙,简单快捷,翻墙host git地址如下
https://github.com/racaljk/hosts/blob/master/hosts#L2
安装
go install collidermain
无证书启动
$GOPATH/bin/collidermain -port=8089 -tls=false
6 配置java runtime environment(JRE)
官方下载页: https://www.java.com/zh_CN/download/linux_manual.jsp
wget http://javadl.oracle.com/webapps/download/AutoDL?BundleId=220305_d54c1d3a095b4ff2b6607d096fa80163
重命名并解压
mv AutoDL\?BundleId\=220305_d54c1d3a095b4ff2b6607d096fa80163 java.tar.gz
tar -zxvf java.tar.gz
将java拷贝到/usr/java中
mkdir /usr/java
cp -rfp jre1.8.0_131/ /usr/java
配置环境变量
export JAVA_HOME=/usr/java
export JRE_HOME=/usr/java/jre1.8.0_131
export CLASSPATH=$JRE_HOME/lib/rt.jar:$JRE_HOME/lib/ext
export PATH=$PATH:$JRE_HOME/bin
重编译 source /etc/profile
验证java
[root@iZ2371w9mhlZ jre1.8.0_131]# java -version
java version “1.8.0_131”
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
7 部署appRTC房间服务器
进入 apprtc文件夹
npm install (这一步余姚jre支持,推荐使用国内源)
重新编译app engine
grunt build
启动服务
在/home/google-cloud-sdk/bin目录下执行
./dev_appserver.py —host localhost —port 80 —admin_host localhost /home/apprtc/out/app_engine
localhost修改为服务器外网ip
8 coTurn打洞(内网穿透)服务器部署
下载地址 http://turnserver.open-sys.org/downloads/v4.5.0.6/
七牛云下载地址: https://resource.mumov.com/turnserver-4.5.0.6-CentOS7.2-x86_64.tar.gz
下载安装包
wget http://turnserver.open-sys.org/downloads/v4.5.0.6/turnserver-4.5.0.6-CentOS7.2-x86_64.tar.gz
解压,进入目录
./install.sh
安装完成后
创建js项目coTurn.js
var
express = require(
'express'
);
var
crypto = require(
'crypto'
);
var
app = express();
var
hmac =
function
(key, content){
`
var`method = crypto.createHmac(
'sha1'
, key);
`
method.setEncoding(`'base64'
);
`
method.write(content);`
`
method.end();`
`
return`method.read();
};
app.get(
'/turn'
,
function
(req, resp) {
var
query = req.query;
var
key =
'4080218913'
;
// 这里的 key 是事先设置好的, 与房间服务器的key相同
if
(!query[
'username'
]) {
`
return`resp.send({
'error'
:
'AppError'
,
'message'
:
'Must provide username.'
});
}
else
{
`
var`time_to_live = 600;
`
var`timestamp = Math.floor(Date.now() / 1000) + time_to_live;
`
var`turn_username = timestamp +
':'
+ query[
'username'
];
`
var`password = hmac(key, turn_username);
`
return`resp.send({
`
username:turn_username,`
`
password:password,`
`
ttl:time_to_live,`
`
“uris”`: [
`
“turn:121.40.28.178:3478?transport=udp”`,//改成自己的ip
`
“turn:121.40.28.178:3478?transport=tcp”`,
`
“turn:121.40.28.178:3479?transport=udp”`,
`
“turn:121.40.28.178:3479?transport=tcp”`
`
]`
`
});`
}
});
app.listen(
'81'
,
function
(){
`
console.log(`'server started'
);
});
安装express框架
nmp install express
守护进程启动
forever start coTurn.js
另外 如果没做ssl支持,需要修改apprtc/out/app_engine下的 apprtc.py
wss=>ws
https=>http
如果没有ice,需要修改constants.py 将TURN 的注释去掉,写入自己的turn或者stun,注意python文件的格式
PS:可以部署NGINX服务器做代理,统一转发到内部端口,只对外暴露443或者80,看个人喜好
还没有评论,来说两句吧...