zoukankan      html  css  js  c++  java
  • AppRTC服务搭建(测试)

    提供一个在线的webrtc服务器测试,需要的朋友看看。
    https://www.webrtcserver.cn/

    服务器搭建环境各有不同在此参考前人经验差试一下。

    运行AppRTC需要使用Google App Engine SDK for Python,因为这个项目的Web服务器是使用Google App Engine框架编写的,因此必须要安装。

    同时还需要使用Grunt构建工具。

    下面介绍如何在Centos 6上来搭建这个Apprtc项目。

    Google Engine SDK

    官网地址:https://cloud.google.com/appengine/downloads#Google_App_Engine_SDK_for_Python

    Google Engine SDK for Python 使用的是Python 2.7。因此在安装Google Engine SDK for Python之前,我们必须安装Python 2.7

    安装Python 2.7

    官网地址:https://www.python.org/downloads/release/python-2712/

    下载Python 2.7源代码:

    $wget https://www.python.org/ftp/python/2.7.12/Python-2.7.12.tgz

    解压

    $tar -xf Python-2.7.12.tgz

    编译安装

    生成Makefile

    $./configure

    编译

    $make

    安装

    $make install

    配置Python 2.7

    建立软连接,使系统默认的 python指向 python2.7

    $mv /usr/bin/python /usr/bin/python2.6.6
    $ln -s /usr/local/bin/python2.7 /usr/bin/python

    解决系统 Python 软链接指向 Python2.7 版本后,因为yum是不兼容 Python 2.7的,所以yum不能正常工作,我们需要指定 yum 的Python版本

    vi /usr/bin/yum

    将文件头部的
    #!/usr/bin/python
    
    改成
    #!/usr/bin/python2.6.6
    

    下载Google App Engine SDK for Python源码:

    $wget https://storage.googleapis.com/appengine-sdks/featured/google_appengine_1.9.40.zip

    解压

    $unzip google_appengine_1.9.40.zip

    配置环境变量以使用Google App Engine

    export PATH=$PATH:<DIRECTORY_PATH>/google_appengine_1.9.40/

    配置成功之后我们就可以在命令行中使用dev_appserver.py了

    Grunt

    Grunt是一个Web项目的构建工具,可以方便我们将一个开发中的Web项目打包成发布版本或测试版本。
    Grunt是一个在NodeJS环境下运行的构建工具,因此我们必须先安装NodeJS

    安装NodeJS

    NodeJS官网:https://nodejs.org/en/

    安装

    Centos上安装NodeJS文章:https://nodejs.org/en/download/package-manager/

    $curl --silent --location https://rpm.nodesource.com/setup_6.x | bash -
    $yum install -y nodejs

    CNPM

    在中国大陆的话,因为众所周知的原因,我们可能需要使用cnpm

    npm install -g cnpm --registry=https://registry.npm.taobao.org

    安装Grunt

    $npm -g install grunt-cli

    如果在中国大陆,不能正常安装的话,尝试使用cnpm.即``

    Open-JDK

    Apprtc这个项目还需要JAVA环境,因此我们还需要配置一下Java环境。这里我使用的是Open-JDK

    官网:http://openjdk.java.net/

    安装

    $yum install java-1.8.0-openjdk

    配置环境变量

    Redhat公司提供的OpenJDK环境变量配置参考文章:https://access.redhat.com/documentation/en-US/JBoss_Enterprise_Application_Platform/6/html/Installation_Guide/Install_OpenJDK_on_Red_Hat_Enterprise_Linux.html

    $export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.111-0.b15.el6_8.x86_64/jre

    Apprtc

    下载Apprtc项目源码

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

    安装项目依赖

    $npm install

    同样,如果在中国大陆不行的话,可以使用cnpm,即cnpm install

    安装JDK(前面安装了就不用安装了)

    yum install java-1.8.0-openjdk
    
    export JAVA_HOME=/usr/lib/jvm/java-1.8.0

    如果不安装的话,可能会出现如下错误

    Warning: Error: Unable to access jarfile undefined
     Use --force to continue.
    
    Aborted due to warnings.

    构建Apprtc项目

    $grunt build

    常见错误

    requests模块不存在

    ImportError: No module named requests
    Warning: Command failed: python ./build/build_app_engine_package.py src out/app_engine
    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.
    
    Aborted due to warnings.

    解决方法是通过python的包管理工具pip来安装requests

    安装pip

    下载setup-python工具

    $wget https://pypi.python.org/packages/2.7/s/setuptools/setuptools-0.6c11-py2.7.egg  --no-check-certificate

    赋予setuptools-0.6c11-py2.7.egg执行权限

    $chmod +x setuptools-0.6c11-py2.7.egg
    ./setuptools-0.6c11-py2.7.egg

    下载pip

    $wget https://pypi.python.org/packages/source/p/pip/pip-1.5.4.tar.gz 

    解压

    $tar -xf pip-1.5.4.tar.gz

    安装pip

    $python setup.py install
    安装requests模块
    $pip install requests

    运行Apprtc

    $ dev_appserver.py apprtc/out/app_engine/

    collider信令服务器

    collider是Apprtc这个项目配套的一个信令服务器。在我们的Apprtc项目中就已经携带了它的源码。

    安装Golang

    colider是一个使用Golang语言编写的项目,因此在安装collider之前,我们必须先安装Golang

    下载Golang源码

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

    解压

    $tar -xf go1.6.3.linux-amd64.tar.gz

    配置Golang环境变量

    Go 二进制版本,假设它们会被安装在/usr/local/go(Windows,c:Go)中,如果没有安装在该位置,我们需要配置一下环境变量

    export GOROOT=<goInstallDir>
    export PATH=$PATH:$GOROOT/bin

    GOPATH

    GOPATH环境变量用来指定你的工作目录。当我们在开发Golang项目的时候需要指定

    The GOPATH environment variable specifies the location of your workspace. It is likely the only environment variable you'll need to set when developing Go code.
    GOPATH环境变量用来指定除GOROOT之外包含的Go项目源代码和二进制文件的目录。go install和go工具都会用到GOPATH,作为编译后二进制文件的存放目的地和import包时的搜索路径。

    GOPATH是一个路径列表,也就是可以同时指定多个目录。多个目录在Mac和Linux下通过”:”分割;Windows下通过”;”分割。注意,大部分情况下会是第一个路径优先,比如:查找包

    Kakawater-2:~ kakawater$ mkdir GOWorkPlace
    Kakawater-2:~ kakawater$ cd GOWorkPlace/
    Kakawater-2:GOWorkPlace kakawater$ export GOPATH=`pwd`

    $GOPATH 目录约定有三个子目录:

    • src 存放源代码(比如:.go .c .h .s等)
    • pkg 编译后生成的文件(比如:.a)
    • bin 编译后生成的可执行文件(为了方便,可以把此目录加入到 $PATH 变量中,如果有多个gopath,那么使用${GOPATH//://bin:}/bin添加所有的bin目录)

    安装colider

    • 第一步将apprtc/src/colider目录下的collider、collidermain、collidertest拷贝到GOPATH/src/下
    • 修改$GOPATH/src/collidermain/main.go 设置我们的房间服务器,防止第三方使用我们的信令服务器
    // var roomSrv = flag.String("room-server", "https://appr.tc", "The origin of the room server")
    var roomSrv = flag.String("room-server", "https://apprtc.kakawater.top", "The origin of the room server")
    • 设置信令服务器需要使用的HTTPS证书
      编辑$GOPATH/src/collider/collider.go
    // e = server.ListenAndServeTLS("/cert/cert.pem", "/cert/key.pem")
            e = server.ListenAndServeTLS("/Users/kakawater/Documents/nginx/apprtcKakawaterTopSizeSSL/1_apprtc.kakawater.top_bundle.crt", "/Users/kakawater/Documents/nginx/apprtcKakawaterTopSizeSSL/2_apprtc.kakawater.top.key")
            
    • 安装collidermain项目依赖
    $go get collidermain

    安装GO环境的websocket包. 如果上面命令失败,那么则用下面这个麻烦的方法

    $ cd $GOPATH/src
    $ wget http://www.golangtc.com/static/download/packages/golang.org.x.net.tar.gz
    $ tar xvf golang.org.x.net.tar.gz
    $ go install golang.org/x/net/websocket/

    这样collidermain的项目依赖就安装完了

    我们安装collidermain命令服务器程序:

    $ go install collidermain
    $collidermain --help
    Usage of collidermain:
      -port int
            The TCP port that the server listens on (default 443)
      -room-server string
            The origin of the room server (default "https://apprtc.kakawater.top")
      -tls
            whether TLS is used (default true)

    启动colider

    $collidermain -port=8089 -tls=true

    常见错误

    因为跨域访问,造成在HTTPS中无法使用信令服务器

    Failed to start signaling: Failed to execute 'pushState' on 'History': A history state object with URL 'http://192.168.20.135/r/769453476' cannot be created in a document with origin 'https://192.168.20.135'.

    解决方案

    编辑apprtc/out/app_engine/js/apprtc.debug.js

    AppController.prototype.pushCallNavigation_ = function(roomId, roomLink) {
      if (!isChromeApp()) {
        //window.history.pushState({"roomId":roomId, "roomLink":roomLink}, roomId, roomLink);
      }
    };

    至此,Apprtc项目搭建完毕。

  • 相关阅读:
    分布式缓存
    分布式事务
    数据库系列-分库分表
    消息队列系列-简介
    JAVA系列-引用
    生产环境CPU占用过高分析
    技术书单(部分)
    GitHub的强大搜索功能简介
    VS2019 community版本下载Extension太慢解决方案
    Python2同时输出中文和变量时中文乱码
  • 原文地址:https://www.cnblogs.com/baitongtong/p/9522242.html
Copyright © 2011-2022 走看看