美文网首页WebRTC
从零开始搭建基于webrtc的apprtc服务器搭建(ubunt

从零开始搭建基于webrtc的apprtc服务器搭建(ubunt

作者: 猜火车丶 | 来源:发表于2018-02-01 09:19 被阅读371次

    网上其实有不少关于apprtc的搭建方案,因为我并不是一名后台人员,所以在实际搭建过程中遇到了一些各种原因导致的问题,所以我在此做记录希望能大家一些参考。
    既然是从零开始,那么就从最基本的开始。

    1.通过虚拟机安装一个Ubuntu系统

    网上有很多安装教程就不一一赘述了。

    2.安装相关依赖

    • 实现科学上网,因为下面不少内容需要科学上网,所以建议先进行配置,或着挂一个好的代理。

    • 安装git及curl

     sudo apt-get install git
     sudo apt-get install curl
    
    • 安装node.js及相关项
      node.js因为Ubuntu的apt并没有最新版本,所以我们需要先在终端执行下面curl的命令,然后install,而8.x代表相关版本:
     curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
     sudo apt-get install -y nodejs
    

    通过node -v执行显示版本号代表安装成功。

     sudo npm install -g npm
     sudo npm -g install grunt-cli
    
    • 安装openjdk-7-jdk
      因为apt已经没有源了,我们需要手动添加
     sudo add-apt-repository ppa:openjdk-r/ppa
     sudo apt-get update
     sudo apt-get install openjdk-7-jdk
    
    • 安装 python-webtest
     sudo apt-get install python-webtest
    
    • 下载apprtc源码
     git clone https://github.com/webrtc/apprtc.git
     cd apprtc
     npm install
    
    • 修改/apprtc/src/app_engine/constants该文件进行配置
    #打洞服务器配置
    TURN_BASE_URL = 'https://xx.xxx.xxxx.xx'     //此处为局域网IP,下同
    TURN_URL_TEMPLATE = '%s/turn?username=%s&key=%s'
    CEOD_KEY = 'guolei'//与之后turn服务器配置中的配置一致
    
    #ice服务器配置
    ICE_SERVER_BASE_URL = 'https://xx.xxx.xxxx.xx'
    ICE_SERVER_URL_TEMPLATE = '%s/v1alpha/iceconfig?key=%s'
    ICE_SERVER_API_KEY = os.environ.get('ICE_SERVER_API_KEY')
    
    #信令服务器配置,分配8089端口
    WSS_INSTANCE_HOST_KEY = 'xx.xxx.xxxx.xx:8089'
    WSS_INSTANCE_NAME_KEY = 'vm_name'
    WSS_INSTANCE_ZONE_KEY = 'zone'
    WSS_INSTANCES = [{
    WSS_INSTANCE_HOST_KEY: 'xx.xxx.xxxx.xx:8089',
    WSS_INSTANCE_NAME_KEY: 'wsserver-std',
    WSS_INSTANCE_ZONE_KEY: 'us-central1-a'
    }, {
    WSS_INSTANCE_HOST_KEY: 'xx.xxx.xxxx.xx:8089',
    WSS_INSTANCE_NAME_KEY: 'wsserver-std-2',
    WSS_INSTANCE_ZONE_KEY: 'us-central1-f'
    }]
    
    • 下载依赖 GoogleAppEngine,需要翻墙
      按照谷歌提供的方式,进行安装即可。

    • 在apprtc目录下grunt build
      编译后得到out目录,查看constants是否生效。编译中可能出现报错

    Running"shell:buildAppEnginePackage" (shell) task
    Traceback(most recent call last):
    
    File"./build/build_app_engine_package.py", line 12, in <module>
    
    import requests
    ImportError:No module named requests
    
    Warning:Command failed: Traceback (most recent call last):
      File"./build/build_app_engine_package.py", line 12, in <module>
    
    import requests
    ImportError:No module named requests
    Use --force to continue.
    
    Aborteddue to warnings.
    

    可以先wget https://bootstrap.pypa.io/ez_setup.py,然后在pip install requests,之后再次执行grunt build应该是没什么问题的了。

    • 开启房间服务
    dev_appserver.py --host=0.0.0.0 ./out/app_engine
    

    访问http://localhost:8000查看

    3.信令服务器搭建

    • 安装依赖
    sudo apt-get install golang-go
    
    • 配置信令服务
      home创建目录mkdir -p ~/collider_root,并在该目录下创建src目录
      设置环境变量export GOPATH=~/collider_root
      将apprtc/src/collider目录下的三个文件夹都拷贝到collider_root/src下
      进入到collider_root/src,开始编译安装collider,并准备好翻墙
    go get collidermain
    go install collidermain
    

    编译成功后会在collider_root目录下生成bin和pkg目录,执行文件在bin下。

    • 启动信令服务
      修改collider_root/src/collidermain/main.go填上自己ip地址
    var roomSrv = flag.String("room-server", "http://192.168.214.129:8080/", "The origin of the room server")
    

    启动

    ~/collider_root/bin/collidermain -port=8089 -tls=false
    

    4.打洞服务器

    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
    sudo apt-get install gdebi-core
    sudo gdebi coturn*.deb 
    

    或者直接使用sudo apt-get install coturn安装

    • 文件配置
    sudo gedit /etc/default/coturn
    

    TURNSERVER_ENABLED=1所在的最后一行删除

    sudo gedit /etc/turnserver.conf
    

    将以下内容添加到turnserver.conf末尾,3478是coturn服务器端口号,userstatic-auth-secret的自定义名称要和房间服务器constants.pyCEOD_KEY一致,0xd46cf788957ba8c2386411ba07f3133c是通过turnadmin命令生成turnadmin -k -u guolei -r north.gov -p guolei,前面的guolei是用户名,后者为密码。

    listening-device=eth0
    listening-port=3478
    relay-device=eth0
    min-port=49152
    max-port=65535
    Verbose
    fingerprint
    lt-cred-mech
    use-auth-secret
    static-auth-secret=guolei
    user=guolei:0xd46cf788957ba8c2386411ba07f3133c
    user=guolei:guolei
    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
    
    • 生成coturn证书
    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
    
    • 基于coturn证书设置修改文件
      /apprtc/src/web_app/js/utils.js文件下的requestIceServers函数改成以下内容:
    function requestIceServers(iceServerRequestUrl, iceTransports) {
        return new Promise(function(resolve, reject){
          var servers = [{credential: "guolei",
                            username: "guolei",
                                urls: [ "turn:192.168.145.129:3478?transport=udp","turn:192.168.145.129:3478?transport=tcp" ]
                        },
                       { urls:["stun:192.168.145.129:3478?transport=udp",
                               "stun:192.168.145.129:3478?transport=tcp"]
                        }];
          resolve(servers);
      });
    }
    

    其中guolei和IP地址可以设置为自己的用户名和IP,即之前coturn设置的。更改后进入apprtc目录,重新grunt build

    相关文章

      网友评论

      • ac415effa0a9:你好 我想问一下在启动房间服务器之后,访问localhost:8080,报错是
        HTTPError:HTTP Error 502:Server dropped connection
        INFO 2018-05-29 05:13:58,186 module.py:846] default:"GET /HTTP/1.1" 500-
        请问有遇到过吗?
        iso8859_1:@wzq123 我也发现没有 你是怎么解决的
        ac415effa0a9:@你在我后半生的城市里长生不老 好的 谢谢 我还想问一下
        #打洞服务器配置
        TURN_BASE_URL = 'https://xx.xxx.xxxx.xx' //此处为局域网IP,下同
        TURN_URL_TEMPLATE = '%s/turn?username=%s&key=%s'
        CEOD_KEY = 'guolei'//与之后turn服务器配置中的配置一致
        这几行 是自己填上的吧 在constants.js里吗?我看到默认的文档里没有呢
        猜火车丶:@wzq123 我没遇到过这个问题,我猜测一个可能,是防火墙的问题,你试试看

      本文标题:从零开始搭建基于webrtc的apprtc服务器搭建(ubunt

      本文链接:https://www.haomeiwen.com/subject/zchlzxtx.html