ubuntu16.04搭建房间服务器apprtc

  • 安装过程中会有不少的问题,如果有版本的问题,需要下载正确版本的源码自行安装
  • Google webrtc的服务器demo
  • apprtc服务器搭建借鉴

一、前期准备

1.安装Open JDK,(Java):

	# add-apt-repository ppa:openjdk-r/ppa 
	sudo apt update 
	sudo apt install openjdk-8-jdk

2.安装nodejs相关包:

  • 不要在终端下载二进制包,会出现版本不兼容的问题,在nodejs官网下载源码或者二进制包并解压,里面包含了nodejs和npm

    wget https://nodejs.org/dist/v10.9.0/node-v10.9.0-linux-x64.tar.xz 
    tar xf  node-v10.9.0-linux-x64.tar.xz
    cd node-v10.9.0-linux-x64/bin
    
  • 把该目录下的文件全部软链接到目录/usr/local/bin
sudo ln -s ${PWD}/node /usr/local/bin
sudo ln -s ${PWD}/npm /usr/local/bin
  • 使用npm安装grunt-cligrunt是编译工具

    sudo npm -g install grunt-cli
    sudo npm -g install grunt
    
    1. npm是nodejs的包管理工具和编译工具,跟ubuntu中的apt类似;
    2. -g只是表示安装到全局;
    3. npm install命令将模块安装到当前目录下的node_modules目录,如果没有node_modules目录会创建该目录。
  • 安装nodejs-legacy

    sudo apt install nodejs-legacy
    

3.安装Python和Python-webtest:

sudo apt install python 
sudo apt install python-webtest

4.安装和配置google app engine

  • 下载google app engine,此处下载需要。
  • 配置google app engine的路径:

    解压google_appengine_1.9.50.zip

    unzip google_appengine_1.9.50.zip
    

    编辑/etc/profile文件,在文末最后添加语句:

    export PATH="$PATH:/home/xin/google_appengine/"
    

    当前安装目录是/home/xin/google_appengine/,根据实际目录进行配置,保存该文件,并source

    source /etc/profile
    

5.Google Cloud SDK: #可以先不安装

这是一套使用Python管理 App Engine applications 的工具集。gcloud包括本地布署server以及布署和管理你的应用的命令行工具。

项目地址,Linux可以下载通用的二进制包,配置环境变量。
引用该0.2步骤

二、搭建步骤

1、房间服务器apprtc

除了Collider以外,其他代码都是用python实现的,使用node.js编译。

  • 下载apprtc源码

    git clone https://github.com/webrtc/apprtc.git
    cd apprtc
    sudo npm install
    
    1. npm install命令是将package.json里的依赖包都给装上,这些依赖包将被安装到当前目录下的node_modules目录下,需要安装的依赖包很多,都是从http://registry.npmjs.org下载的
    2. 安装过程中会有很多版本问题,需自行解决
    3. 可以设置淘宝镜像
  • 编译:sudo grunt build
    1. 必须进入apprtc目录,进行编译。编译完成后,会生成out目录;
    2. 每次修改源码,都必须重新编译;也可以直接修改out目录里面的文件;
    3. 此处编译需要,直到编译成功;
    4. 编译成功后,进入out/app_engine目录,修改文件
  • 部署运行:
    1. 借鉴第1.6部分
    2. 这一步介绍使用默认信令和TURN服务部署AppRTC,仅作测试使用,完全部署必须配置信令服务和TURN服务;
    3. 建议配置其他服务之前先保证此测试服务正常;

2、信令服务器Collider

使用go语言实现的基于WebSocket 的命令服务器。
WebSocket协议:5分钟从入门到精通

  • 安装go语言编译器:
sudo apt install golang
sudo apt install golang-go
go version
  • 复制collider源代码:

    建立goWorkspace目录:

    mkdir -p goWorkspace/src
    

    添加环境变量:

    vim /etc/profile
    export GOPATH=/home/xin/goWorkspace/
    source /etc/profile
    

    /home/xin/apprtc/src/collider/目录下的三个目录复制到该目录:

    cp -rf /home/xin/apprtc/src/collider/*  /home/xin/goWorkspace/src
    

    编辑goWorkspace/src/collidermain/main.go,修改房间服务器的地址

    var roomSrv = flag.String("room-server", "https://webrtc.olcms.com", "The origin of the room server")
    

    编辑文件goWorkspace/src/collider/collider.go,将上面这句修改为下面这句:

    e = server.ListenAndServeTLS("/cert/cert.pem", "/cert/key.pem")
    e = server.ListenAndServeTLS("/etc/letsencrypt/live/webrtc.olcms.com/fullchain.pem", "/etc/letsencrypt/live/webrtc.olcms.com/privkey.pem")
    

    其中fullchain.pem和privkey.pem为SSL证书,具体证书路径根据实际路径进行配置,SSL证书生成见后续Nginx配置

  • 编译信令服务器:

    go get collidermain
    go install collidermain
    
    1. 进入goWorkspace/src目录编译,此处编译需要
    2. 编译成功后,在goWorkspace目录下会生成bin和pkg目录
    3. 若此处编译时无法,可手动下载需要的文件到goWorkspace/src/目录下,然后再编译
    mkdir -p golang.org/x 
    cd golang.org/x/
    git clone https://github.com/golang/net
    

3、防火墙打洞服务器STUN/TURN/ICE Server

使用makefile编译

  • Coturn服务器:Coturn 是一种TURN服务器(也就是中转服务器),用于VoIP或通用数据流的NAT穿越和数据转发。
  • coturn是一个C/C++语言的开源项目,项目地址
①安装coturn:
  • 1、在线安装coturn:(不建议,容易出现版本不兼容问题)

    sudo apt install coturn
    
  • 2、下载coturn源码安装:(不完全)

    git clone https://github.com/coturn/coturn.git
    #https://github.com/coturn/coturn/wiki/Downloads
    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
    cd turnserver-4.5.0.7
    sudo ./configure
    sudo make install
    
  • 3、下载二进制包,下载适合自己系统的二进制包:

    cd ~
    wget http://turnserver.open-sys.org/downloads/v4.4.1.2/turnserver-4.4.1.2-debian-wheezy-ubuntu-mint-x86-64bits.tar.gz
    tar xvfz turnserver-4.4.1.2-debian-wheezy-ubuntu-mint-x86-64bits.tar.gz
    

    然后详细阅读安装手册INSTALL文件,根据指导进行安装;

②配置coturn:
  1. 编辑配置文件/etc/default/coturn,把文件中的这一行/etc/default/coturn去掉注释;

  2. 编辑文件/etc/turnserver.conf,根据实际情况进行修改:

    		listening-device=eth0  #此处eth0是电脑网卡名称
            listening-port=3478     #turn服务器的端口号
            relay-device=eth0   #此处eth0是电脑网卡名称
            min-port=49152
            max-port=65535
            Verbose
            fingerprint
            lt-cred-mech
            use-auth-secret
            static-auth-secret=inesadt  #此处要和房间服务器配置时constants.py文件中的CODE_KEY保持一致。
            user=inesadt:0x7e3a2ed35d3cf7f19e2f8b015a186f54
            user=inesadt:inesadt
            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
    

    文件中0x7e3a2ed35d3cf7f19e2f8b015a186f54的生成方法:

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

    说明:
    -k 表示生成一个long-term credential key
    -u 表示用户名
    -p 表示密码
    -r 表示Realm域

    创建ssl证书,即文件中的cert和pkey

    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

4、配置nginx服务器

  1. 三个服务器都搭建完成后,需要一定的配置,使它们可以一起工作;
  2. 反向代理apprtc,使之支持https访问,如果http直接访问apprtc,则客户端无法启动视频音频采集(必须得用https访问
①安装nginx:
  • 在线安装:

    sudo apt install nginx
    
  • 二进制包安装:
wget http://nginx.org/download/nginx-1.15.6.tar.gz
#sudo apt install libpcre3-dev
sudo ./configure --with-http_ssl_module
sudo make
sudo make install

默认安装在/usr/local/nginx(也可以执行prefix);
所有的配置文件都在/etc/nginx下;
并且每个虚拟主机已经安排在了/etc/nginx/sites-available下;
日志放在了/var/log/nginx中,分别是access.log和error.log;
默认的虚拟主机的目录设置在了/usr/share/nginx/www;

②配置nginx.conf:

主要的配置文件为/etc/nginx目录下的nginx.conf

  • 修改文件nginx.conf,主要添加server模块,可查看nginx的配置
vi /etc/nginx/nginx.conf
            server {
                root /usr/share/nginx/html;
                index index.php index.html index.htm;
                listen 80;
                ssl_certificate /cert/cert.pem;
                ssl_certificate_key /cert/key.pem;
                server_name ***.***.***;
                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:
  1. 在线安装的启动和访问

  2. 源码安装的启动:

    cd /usr/local/nginx
    sbin/nginx
    
  3. 然后再打开谷歌浏览器或者火狐浏览器,访问自己的公网IP,比如http://125.216.242.151,选择默认随机生成的房间号或自己手动输入房间号即可。

你可能感兴趣的:(ubuntu16.04搭建房间服务器apprtc)