• WebRTC 服务器搭建篇


    First off All

    服务器环境:采用的阿里云国内服务器,系统: Ubuntu 16.04 64位 。

    各个服务所需要的编译环境图:

    各个服务器对应所需编译平台

    1.第一步,先更新下命令行工具,工欲善其身必先利其器,不更新回头出现莫名的错误me 不管。

    apt-get update

    2.第二步:我们先从房间服务器搭建开始入手,看上面的图,就知道,这个家伙是要用时node.js编译的,那必须安装各种node.js编译相关的插件

    按如下步骤:

    先安装两个工具库

    sudo apt-get install git unzip golang

    sudo apt-get install automake autoconf libtool

    备注:不要用这种方法安装(apt-get nodejs 如果这么装会报各种版本不兼容)

    使用这种方式下载官网 如:

    wget https://nodejs.org/dist/v4.7.0/node-v4.7.0-linux-x64.tar.gz

    并解压下

    tar -xzf node-v4.7.0-linux-x64.tar.gz

    安装node js linux的环境就是方便 只需要配置下环境变量即可,方式如下

    vim /etc/profile

    里面加入

    export PATH=/usr/webrtc/node-v4.7.0-linux-x64/bin:$PATH(备注这个地址是我自己的解压的地址,找到自己的node加压的bin目录设置进环境变量即可)

    配置还环境变量以后,需要生效下,执行如下命令

    source /etc/profile

    下面我们可以测试下node js 环境是否正常了 命令行输入node 进入了就说明node js 安装成功了

    下面还需要安装下npn(编译工具)(不用sudo安装npm)

    npm -g install grunt-cli

    安装python

    sudo apt-get install python-webtest

    安装jdk,备注:这个是google的jdk

    apt-get install default-jdk(google的jdk)

    下面就下载rtc的源码 使用clone的方式

    进入根目录

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

    这样就有一个apprtc的文件夹了

    下面进入文件夹

    cd apprtc

    如果国外的需要设置下镜像(国内自然不用,如果速度慢就设置下淘宝镜像)

    npm config set registry https://registry.npm.taobao.org (设置的淘宝镜像)

    npm info underscore (生效设置)

    下面使用

    npm install //如果这个命令执行有错误 需要删除 sudo rm node_modules -r 再重试(编译房间服务器)

    下面进行编译

    grunt build //执行结果最后显示 Done, without errors. 就没问题 还是先改src再去build,或者直接修改out里面的配置,都是可以的一个直接改一个是改src

    去掉警告,顺利通过:grunt build --force

    (Aborted due to warnings. 代表编译成功了)

    编译成功后就会有一个新的文件夹out

    下面要修改房间服务器的地址

    cd out/app_engine

    下面需要修改三个文件

    1.vim constants.py

    指明ice服务器turn 注意不支持https ice服务器一般都是turn开头

    修改 43 47行 改成本服务器ip地址 端口是3478 和ceod_key成water(这里我把账号密码,设置成water了,账号密码自己定义,上面的修改成自己的ice服务器端口,后面会设置成3478)

    下面需要修改信令服务器的地址 wws开头

    61 和 65 行修改成 本服务器ip端口是 8089:比如

    这个文件就ok了

    2.修改下一个文件

    vim apprtc.py

    修改 143 144行

    去除if else暂使用http的上面两个地址

    3.修改 vim index_template.html

    找到loadingParams的地方如下图

    添加如下代码到上面,修改下账号和密码 和下面的ice服务器 备注端口要和前面的一样

    var servers = [{

    credential: "water",

    username: "water",

    urls: [

    "turn:112.74.96.116:3478?transport=udp",

    "turn:112.74.96.116:3478?transport=tcp"

    ]

    }];

    并注释掉下面的

    peerConnectionConfig:{{pc_config|safe}},

    并添加

    peerConnectionConfig: {"iceServers": servers, "rtcpMuxPolicy": "require", "bundlePolicy": "max-bundle"},

    可以看到下

    比如 (备注端口要和前面的Ice服务器一样)

    那怎么开启这个服务器,由于是google开发的需要google引擎

    下载

    下载https://cloud.google.com/appengine/downloads#Google_App_Engine_SDK_for_Python

    (需要翻墙)

    我自己上传的可以

    到链接:百度网盘 请输入提取码 密码:rvwj

    可以下载到如下的

    google_appengine压缩包,服务器上面有 解压命令 :

    unzip google_appengine_1.9.38.zip

    运行房间服务器命令,ip是你服务器ip:

    ./google_appengine/dev_appserver.py --host 0.0.0.0 ./apprtc/out/app_engine

    ./google_appengine/dev_appserver.py --host 47.94.106.28 ./apprtc/out/app_engine

    出现的错误:google.appengine.tools.devappserver2.wsgi_server.BindError: Unable to bind 47.94.106.28:8080

    这样就成功开启了第一个房间服务器。。。。。。是不是感觉不容易。。。

    二、下面去配置开启信令服务器 使用go进行编译

    其实他的代码已经在房间服务里面了,我们把代码cp出来单独放

    将信令服务器的代码copy一份至根目录

    cp apprtc/src/collider/ . -r

    然后进入信令服务器的文件夹

    cd collider/

    我们把里面的代码全部放在一个src目录下面,命令行方式如下

    创建src目录

    mkdir src

    将需要编译的代码拷贝到src目录

    mv co* src

    所以需要安装go 进入根目录

    下面安装go 语言

    下载go的安装包

    wget https://storage.googleapis.com/golang/go1.5.1.linux-amd64.tar.gz

    tar -xzf go1.5.1.linux-amd64.tar.gz

    如图

    然后cd 到go/bin 目录下面

    下面需要安装go

    一样的配置环境变量

    添加环境变量

    vim /etc/profile

    加入

    export GOROOT=/usr/webrtc/go=

    export PATH=$GOROOT/bin:/root/node-v4.7.0-linux-x64/bin:$PATH

    并生效他

    source /etc/profile

    下面需要修改下信令服务器的配置main.go

    修改下自己的房间服务器的地址

    修改成自己的服务器ip地址 然后端口是8080

    编译先设置下零时go的编译地址如:

    export GOPATH=/usr/webrtc/collider/

    使用go get collidermain进行编译,这时候如果国内服务器直接执行会报错

    我们需要手动下载下一个插件参考地址:go get golang.org/x 包失败解决方法_残剑孤影的博客-CSDN博客

    下载代码

    mkdir -p $GOPATH/src/golang.org/x

    cd $GOPATH/src/golang.org/x

    git clone https://github.com/golang/net.git

    再去执行

    go get collidermain

    会生成bin文件夹和 pkg 文件夹 就成功编译好了

    开启信令服务器的方式如下

    cd collider/bin

    运行命令:

    ./collidermain -port=8089 -tls=false

    成功开启信令服务器

    三.搭建ice打洞服务器安装打洞服务器 到根目录 使用makefile 进行编译

    git clone https://github.com/coturn/coturn.git

    需要下载一些插件安装coturn

    下面coturn安装 安装前面的版本就好不需要括号里面的

    $ sudo apt-get install libssl-dev

    $ sudo apt-get install libsqlite3 (or sqlite3)

    $ sudo apt-get install libsqlite3-dev (or sqlite3-dev)

    $ sudo apt-get install libevent-dev

    $ sudo apt-get install libpq-dev

    下面就行编译

    cd coturn

    ./configure

    sudo make install

    开启打动服务器的方式

    cd /usr/local/bin

    运行:

    172.17.231.82

    ./turnserver --syslog -a -L 172.17.231.82 -X 172.17.231.82 -E 172.17.231.82 -f --min-port=32355 --max-port=65535 --user=water:water -r water --cert=turn_server_cert.pem --pkey=turn_server_pkey.pem --log-file=stdout -v

    备注:这里我遇到一个坑,就是我用公网的ip启动都提示无法绑定对应的ip,只有用0.0.0.0 启动不报错,所以局域网的时候可以打通,外网的时候coturn打洞都不成功。

    启动可以吧这些参数写配置文件中,方便。

    最后三个服务器都差不多搭建成功,如果在一个服务器上,可以写个脚本直接启动三个服务器:

    我自己写了个作为参考:

  • 相关阅读:
    MySQL之导入导出&视图&索引&执行计划
    内地学生可以参加香港高考吗?3分钟教你走捷径拿香港身份远离内卷攻略!
    有关javascript中事件对象e
    状态空间方程的离散化
    python生成器与迭代器
    OpenStack裸金属ironic组件web-console界面定制
    【零基础入门Mybatis系列】第十篇——查询专题
    windbg的时间旅行实现对 C# 程序的终极调试!
    假ArrayList导致的线上事故......
    服务器托管费用包含什么?
  • 原文地址:https://blog.csdn.net/yinshipin007/article/details/128025471