搭建apprtc服务器(篇章一)

先说一下,楼主系统是ubuntu14.04,内网IP是125.216.242.151,后续不少命令都是基于ubuntu,不少配置中都要用到IP地址,并且须要填写机构或key的时候,楼主都是用的ID:jwcqc,另外,全部的下载或安装都在/server/目录下。javascript

首先须要安装nodejs包管理和分发工具npm:php

sudo apt-get install npm

其次是安装python-webtest:html

sudo apt-get install python-webtest

因为安装过程当中像Google App Engine和编译安装collider都须要FQ,所以最好提早准备好 FQ 环境,不然安装过程当中会遇到网络引发的各类错误。java

环境搭建

房间服务器搭建

  1. 安装依赖
    sudo apt-get install nodejs
    sudo npm install -g npm
    sudo apt-get install nodejs-legacy
    sudo npm -g install grunt-cli
  2. 下载apprtc源码
    git clone https://github.com/webrtc/apprtc.git
    cd apprtc
    npm install  //install grunt and required grunt dependencies
  3. 修改配置文件

    接下来须要修改项目中的 /apprtc/src/app_engine/constants.py,修改的部份内容以下:node

    //turn打洞服务器配置
    TURN_BASE_URL = 'https://125.216.242.151'
    TURN_URL_TEMPLATE = '%s/turn?username=%s&key=%s'
    CEOD_KEY = 'jwcqc' //主要要与以后turn服务器中的配置一致
    //ICE服务器配置
    ICE_SERVER_BASE_URL = 'https://125.216.242.151'
    ICE_SERVER_URL_TEMPLATE = '%s/v1alpha/iceconfig?key=%s'
    ICE_SERVER_API_KEY = os.environ.get('ICE_SERVER_API_KEY')
    WSS_INSTANCE_HOST_KEY = '125.216.242.151:8089' //信令服务器配置,这里分配8089端口
    WSS_INSTANCE_NAME_KEY = 'vm_name'
    WSS_INSTANCE_ZONE_KEY = 'zone'
    WSS_INSTANCES = [{
      WSS_INSTANCE_HOST_KEY: '125.216.242.151:8089',
      WSS_INSTANCE_NAME_KEY: 'wsserver-std',
      WSS_INSTANCE_ZONE_KEY: 'us-central1-a'
    }, {
      WSS_INSTANCE_HOST_KEY: '125.216.242.151:8089',
      WSS_INSTANCE_NAME_KEY: 'wsserver-std-2',
      WSS_INSTANCE_ZONE_KEY: 'us-central1-f'
    }]
  4. 修改以后,进入到apprtc根目录,开始buildpython

    grunt build
    !!!!!!!!!   注意每一次对源代码的修改,都须要从新再编译一次,编译事后,会获得一个out目录,能够进去查看以前的修改是否生效。
  5. 安装googleappengine    (运行还依赖 Google App Engine SDK for Python 须要VQ)
    //下载
    wget https://storage.googleapis.com/appengine-sdks/featured/google_appengine_1.9.40.zip
    //解压
    unzip google_appengine_1.9.40.zip
    //设置环境变量
    vim /etc/profile
    //添加进profile
    export PATH="$PATH:/root/google_appengine/"
    //保存环境变量
    source /etc/profile
  6. 开启roomserver
  7. 执行完上面4步后,房间服务器的安装与配置便已完成,接下来就是运行了,进入到google_appengine根目录下,执行:linux

    sudo ./dev_appserver.py --host=125.216.242.151 /server/apprtc/out/app_engine //楼主的apprtc位于server目录下
  8. 运行完按回车返回前台,nohup以日志形式输出在运行此命令目录下的nohup.out文件nginx

    运行成功的话可在浏览器中打开 125.216.242.151:8080 进行访问git

信令服务器Collider搭建

  1. 安装Go语言运行环境
  2. 下载地址:https://golang.org/doc/install?download=go1.7.3.linux-amd64.tar.gz
    下载完成后解压,楼主解压在了/server/目录下,接着再在server目录下建立gopath目录,开始配置Go环境:github

    vim /etc/profile
  3. 添加如下内容:

    export GOROOT=/server/go
    export GOPATH=/server/gopath
    export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
  4. 使用 source /etc/profile 保存,而后能够运行 go version 查看是否配置正确。

  5. 拷贝与修改
  6. 首先拷贝 /apprtc/src/collider 下的三个文件夹到 /server/gopath/src 目录下:

    cp /server/apprtc/src/collider/collider /server/gopath/src
    cp /server/apprtc/src/collider/collidermain /server/gopath/src
    cp /server/apprtc/src/collider/collidertest /server/gopath/src
  7. 修改 /server/gopath/src/collidermain/main.go文件,修改房间服务器IP:

    var roomSrv = flag.String("room-server", "https://125.216.242.151", "The origin of the room server")
  8. 再编辑 /server/gopath/src/collidermain/main.gocollider.go 文件,设置信令服务器所须要用的HTTPS的证书文件(证书的建立在第3步,注意目录对应上):
    e = server.ListenAndServeTLS("/server/cert/jwcqc.crt", "/server/cert/jwcqc.key")
  9. 建立信令服务器证书
  10. 建立第2步中用到的ssl证书jwcqc.crt和jwcqc.key,本示例的证书建立在/server/cert下,进入到此目录,而后依次执行:

    openssl genrsa -des3 -out jwcqc.key 2048
    openssl req -new -key jwcqc.key -out jwcqc.csr
    cp jwcqc.key jwcqc.key.org
    openssl rsa -in jwcqc.key.org -out jwcqc.key
    openssl x509 -req -days 365 -in jwcqc.csr -signkey jwcqc.key -out jwcqc.crt
  11. 期间会让输入地理位置、机构、密匙等信息,按照提示输入便可,楼主的密码所有设的是:jwcqc
  12. 编译collider源码
  13. 进入 /server/gopath 目录,准备编译安装collider(须要FQ)

    go get collidermain
    go install collidermain

    成功编译后会在gopath目录下生成bin和pkg目录。

  14. 运行collider服务器
  15. 进入 /server/gopath/bin 目录,用以下命令运行collider服务器:

    ./collidermain -port=8089 -tls=true

coTurn服务器搭建

下载安装

  1.    最后一步是安装coTurn打洞服务器,下载地址 http://turnserver.open-sys.org/downloads/ 找到适合本身系统的下载便可,楼主下载的是 http://turnserver.open-sys.org/downloads/v4.4.5.3/turnserver-4.4.5.3-debian-wheezy-ubuntu-mint-x86-64bits.tar.gz

    而后解压到 /server/turnserver/下:

    tar -zxvf turnserver-4.4.5.3-debian-wheezy-ubuntu-mint-x86-64bits.tar.gz
  2. 解压后会获得INSTALL安装须知和.deb包,可使用 cat INSTALL 查看一下安装手册,根据指导进行安装(实在不行就双击安装,暴力一点。。。):

    sudo apt-get update
    sudo apt-get install gdebi-core
    sudo gdebi *.deb
    这里一样生成在了/server/cert/目录下,密码所有是jwcqc:
    sudo openssl req -x509 -newkey  rsa:2048 -keyout /server/cert/turn_server_pkey.pem -out /server/cert/turn_server_cert.pem -days 99999 -nodes
  3. 接下来运行

    turnadmin -k -u jwcqc -r north.gov -p jwcqc

    拷贝生成获得的key,下一步会用到。

    编辑配置文件

    首先编辑 /etc/default/coturn 将 TURNSERVER_ENABLED=1 的注释去掉,
    再编辑 /etc/turnserver.conf,在末尾加入以下内容:

    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=jwcqc
    user=jwcqc:0x949534a397bcf2e88470c86ad3749d9c(替换成上一步经过turnadmin生成的key)
    user=jwcqc:jwcqc
    stale-nonce
    cert=/server/cert/turn_server_cert.pem
    pkey=/server/cert/turn_server_pkey.pem
    no-loopback-peers
    no-multicast-peers
    mobility
    no-cli

    最后一步,进入/apprtc/src/web_app/js/utils.js,修改requestIceServers函数:

    function requestIceServers(iceServerRequestUrl, iceTransports) {
      return new Promise(function(resolve, reject) {
        var servers = [{
            credential: "jwcqc",
            username: "jwcqc",
            urls: [
              "turn:125.216.242.151:3478?transport=udp",
              "turn:125.216.242.151:3478?transport=tcp"
            ]
        }];
        resolve(servers);
      });
    }

    因为修改了代码,所以须要进入apprtc目录下执行 grunt build 从新编译。

    启动coturn服务器

    service coturn start

Nginx服务器安装与配置

安装

  1. 这里采用在线安装的方式:sudo apt-get install nginx
  2. 全部的配置文件都在/etc/nginx下,而且每一个虚拟主机已经安排在了/etc/nginx/sites-available下,启动程序文件在/usr/sbin/nginx,日志放在了/var/log/nginx中,分别是access.log和error.log,并已经在/etc/init.d/下建立了启动脚本nginx,默认的虚拟主机的目录设置在了/usr/share/nginx/www。

    也能够采用源代码安装方式,下载地址 http://nginx.org/download/ 下载事后解压缩,再进入到解压后的文件夹,前后执行./configure指令,再 make,再 make install 即安装完成,安装成功以后,nginx放置在/usr/local/nginx目录下,主要的配置文件为conf目录下的nginx.conf,nginx的启动文件在sbin目录下的nginx文件。

  3. 接下来修改配置文件:vim /etc/nginx/sites-enabled/default
    pstream roomserver {
            server 125.216.242.151:8080;
    }
    server {
            listen 80 ;
            server_name 125.216.242.151;
            return  301 https://$server_name$request_uri;
    }
    server {
            root /usr/share/nginx/html;
            index index.php index.html index.htm;
            listen 443 ;
            ssl on;
            ssl_certificate      /server/cert/jwcqc.crt;
            ssl_certificate_key  /server/cert/jwcqc.key;
            server_name 125.216.242.151;
            access_log  /var/log/nginx/jwcqc.log;
            location / {
                   proxy_pass http://roomserver$request_uri;
                   proxy_set_header Host $host;
            }
            location ~ .php$ {
            fastcgi_pass unix:/var/run/php5-fpm.sock;
            fastcgi_index index.php;
            include fastcgi_params;
            }
    }

    启动Nginx

    在线安装的启动过程:

    # service nginx reload
    # service nginx start

  4. 以上转自 http://blog.csdn.net/jwcqc/article/details/53156347

  5. ------------------------结束------------------------------结束---------------------------结束---------------

    !!!!!!!!方便二次启用 !!!!!!!!!!1

查看进程

:~# ps -a
--------
  PID TTY          TIME CMD
11699 pts/4    00:00:10 python
11708 pts/4    00:00:02 python
13779 pts/20   00:00:00 collidermain
13864 pts/21   00:00:00 ps


结束进程
kill 11699

nginx服务重启/从新加载
:~# service nginx start
:~# service nginx reload

开启房间服务
:~/apprtc# grunt build; dev_appserver.py --host=0.0.0.0 ./out/app_engine

开启信令服务
:~/gopath/bin# ./collidermain -port=8089 -room-server='https://192.168.0.176:8080' -tls=true

开启coTurn服务 service coturn star

相关文章
相关标签/搜索