google webRTC服务器搭建(CentOS7.3)

叁歲伎倆 2022-06-16 14:55 538阅读 0赞

多余的科普我就不说了,这里有篇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

下载 解压 不进入文件夹

  1. ./google-cloud-sdk/install.s
  2. ./google-cloud-sdk/bin/gcloud init

安装python版google app engine

  1. gcloud components install app-engine-python
  2. gcloud components install app-engine-python-extras

5 部署信令服务器 collider

git 地址

https://github.com/webrtc/apprtc/tree/master/src/collider

先克隆到本地

  1. git clone https://github.com/webrtc/apprtc.git

克隆完成后,先不要进入文件夹,先执行命令

  1. ln -s `pwd`/apprtc/src/collider/collider $GOPATH/src
  2. ln -s `pwd`/apprtc/src/collider/collidermain $GOPATH/src
  3. ln -s `pwd`/apprtc/src/collider/collidertest $GOPATH/src

完成后 安装信令服务

  1. go get collidermain

这里会被墙,可以通过修改/etc/hosts来翻墙,简单快捷,翻墙host git地址如下

https://github.com/racaljk/hosts/blob/master/hosts#L2

安装

  1. 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,看个人喜好

发表评论

表情:
评论列表 (有 0 条评论,538人围观)

还没有评论,来说两句吧...

相关阅读

    相关 用SRSWebRTC流媒体服务器

    WebRTC经过这么多年的发展,目前已经比较成熟的协议之一,播放也比较稳定,协议也已经成为了RFC,相应的开源项目也越来越多,但是基于WebRTC协议的部署简单,性能强悍,功能

    相关 WebRtc环境

    0.前言 这次的需求,准备做的是一个类似与QQ视频一样的点对点视频聊天。这几天了解了一些知识后,决定使用HTML5新支持的WebRtc来作为视频通讯。客户端使用