CentOS7.04安装apprtc

前言

      本次是在虚拟机裸机centos 搭建apprtc,主要也是为了研究webrtc的应用

apprtc环境配置

apprtc的搭建,以及源码的存放都放在、root下的webrtc,所有操作均需要root权限,所以在搭建之前切换到root权限,apprtc源码包含信令服务器,Turn/Stun服务以及apprtc房间服务,所以安装的环境会比较多

1、新建存放目录,执行以下命令

[root@localhost ~]# mkdir  webrtc
[root@localhost ~]# cd  webrtc
[root@localhost webrtc]# pwd
/root/webrtc

 2、安装JDK以及配置

2.1  jak1.8.0版本就可以用了,所以本次直接安装,执行下面语句

yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel

2.2  安装完之后,配置jdk环境, vim /etc/profile打开,在最后一行添加下面三条语句

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.312.b07-1.el7_9.x86_64 
export PATH=$PATH:$JAVA_HOME/bin    
export CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar

备注:如果不知道JAVA_HOME的路径可以用:dirname $(readlink $(readlink $(which java))) 来查看安装路径

[root@localhost ~]# dirname $(readlink $(readlink $(which java)))
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.312.b07-1.el7_9.x86_64/jre/bin

 配置好之后需要执行:source /etc/profile  让配置生效

1.3  接下来就是测试安装配置是否正常

[root@localhost webrtc]#  java -version
openjdk version "1.8.0_312"
OpenJDK Runtime Environment (build 1.8.0_312-b07)
OpenJDK 64-Bit Server VM (build 25.312-b07, mixed mode)

这样jdk就算安装完成

3、安装配置node.js

3.1  安装 git和ant 

[root@localhost webrtc]#  yum install git
[root@localhost webrtc]#  yum install ant

3.2  安装node.js

[root@localhost webrtc]#  wget https://nodejs.org/dist/v10.15.3/node-v10.15.3-linux-x64.tar.xz
[root@localhost webrtc]#  tar -xvf ./node-v10.15.3-linux-x64.tar.xz
[root@localhost webrtc]#  ln -s /usr/local/node-v10.14.1-linux-x64/bin/node /usr/local/bin/node
[root@localhost webrtc]#  ln -s /usr/local/node-v10.14.1-linux-x64/bin/node /usr/local/bin/node

查看node版本,npm版本 

[root@localhost webrtc]# node -v && npm -v
v10.15.3
6.4.1
[root@localhost webrtc]# node
>

这样说明安装完成了

3.3  安装grunt-cli

[root@localhost webrtc]#  npm -g install grunt-cli
[root@localhost webrtc]# grunt --version
grunt-cli v1.4.3

到这里node.js就安装完成了

4、安装Python和Python-webtest

4.1  安装Python

由于python 2.7不在维护,所以本次还是安装python 3版本

[root@localhost webrtc]# yum install epel-release -y
[root@localhost webrtc]# yum install -y python36
[root@localhost webrtc]# python3.6 -m ensurepip
[root@localhost webrtc]# python3 --version
Python 3.6.8

这时候 python3 就装好了

4.2  安装python-webtest

[root@localhost webrtc]#  yum install python-webtest

5、安装google_appengine

[root@localhost webrtc]#  wget https://storage.googleapis.com/appengine-sdks/featured/google_appengine_1.9.40.zip

[root@localhost webrtc]#  unzip google_appengine_1.9.40.zip

配置环境变量:在/etc/profile文件最后增加一行

export PATH=$PATH:/root/webrtc/google_appengine

执行:source /etc/profile  让配置生效

6、安装go

[root@localhost webrtc]# yum install epel-release -y
[root@localhost webrtc]# yum install go -y
[root@localhost webrtc]# go version
go version go1.15.14 linux/amd64

安装完成之后需要配置go的工作目录

[root@localhost webrtc]# mkdir -p /root/webrtc/goworkspace/src

接下来急救室配置go环境变量:在/etc/profile 文件最后增加一行:

export GOPATH=/root/webrtc/goworkspace

执行:source /etc/profile  让配置生效

7、安装libevent

[root@localhost webrtc]# wget https://github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.gz
[root@localhost webrtc]# tar xf libevent-2.0.21-stable.tar.gz
[root@localhost webrtc]# cd libevent-2.0.21-stable
[root@localhost libevent-2.0.21-stable]# ./configure
[root@localhost libevent-2.0.21-stable]# make install

8、安装apprtc项目

8.1  下载apprtc

[root@localhost webrtc]# git clone https://github.com/webrtc/apprtc.git

8.2 安装coturn

路径在webrtc

[root@localhost webrtc]# yum install openssl-deve
[root@localhost webrtc]# wget http://coturn.net/turnserver/v4.5.0.7/turnserver-4.5.0.7.tar.gz
[root@localhost webrtc]# tar xfz turnserver-4.5.0.7.tar.gz
[root@localhost webrtc]# cd turnserver-4.5.0.7
[root@localhost turnserver-4.5.0.7]# ./configure
[root@localhost turnserver-4.5.0.7]# make install
[root@localhost turnserver-4.5.0.7]# ./configure --enable-static

配置turnserver

配置防火墙,允许3478端口穿透(为了测试方便,我们先关闭防火墙)

systemctl stop firewalld.service

安装完成之后,后台启动conturn(记得要修改自己的IP)

[root@localhost webrtc]# nohup turnserver -L 192.168.239.130 -a -u root:123456 -v -f -r nort.gov > /root/webrtc/turnserver.log 2>&1 &

账号root,密码123456 可以随便设置,这个是后面配置房间服务器的时候需要用到

查看是否安装成功

[root@localhost webrtc]# netstat -tunlp | grep turnserver
tcp        0      0 192.168.239.130:3478     0.0.0.0:*               LISTEN      20756/turnserver    
tcp        0      0 192.168.239.130:5349     0.0.0.0:*               LISTEN      20756/turnserver    
tcp        0      0 127.0.0.1:5766                 0.0.0.0:*               LISTEN      20756/turnserver    
udp        0      0 192.168.239.130:5349    0.0.0.0:*                                 20756/turnserver    
udp        0      0 192.168.239.130:5349    0.0.0.0:*                                 20756/turnserver    
udp        0      0 192.168.239.130:3478    0.0.0.0:*                                 20756/turnserver    
udp        0      0 192.168.239.130:3478    0.0.0.0:*                                 20756/turnserver

coturn启动成功

8.3  collider安装配置

配置防火墙,允许访问8089端口(已经关闭防火墙,可以先忽略)

由于apprtc中collider是用go写的,所以必须将源码软连接到go的工作目录下

[root@localhost webrtc]# ln -s /root/webrtc/apprtc/src/collider/collider $GOPATH/src
[root@localhost webrtc]# ln -s /root/webrtc/apprtc/src/collider/collidermain $GOPATH/src
[root@localhost webrtc]# ln -s /root/webrtc/apprtc/src/collider/collidertest $GOPATH/src

接下来开始编译collidermain

[root@localhost webrtc]# go get collidermain
[root@localhost webrtc]# go install collidermain

编译问题:

报错: package golang.org/x/net/websocket: unrecognized import path "golang.org/x/net/websocket"

按顺序直接执行以下语句

[root@localhost webrtc]# mkdir -p $GOPATH/src/golang.org/x/
[root@localhost webrtc]# cd $GOPATH/src/golang.org/x/
[root@localhost x]# git clone https://github.com/golang/net.git net
[root@localhost x]# go install net

配置

安装openssl-devel ,用来创建签名证书(本次证书是存在 /cert)

[root@localhost webrtc]# yum install openssl-devel
[root@localhost webrtc]# mkdir -p /cert
[root@localhost webrtc]# cd /cert

生成CA私钥

openssl genrsa -out key.pem 2048

生成签名证书

openssl req -new -x509 -key key.pem -out cert.pem -days 1095

启动信令服务器

nohup $GOPATH/bin/collidermain -port=8089 -tls=true  -room-server="http://192.168.239.130:8090" &
netstat -ntulp | grep collider

测试是否开启成功

[root@localhost webrtc]# netstat -tunlp | grep collider
tcp6       0      0 :::8089                 :::*                    LISTEN      20744/collidermain

说明已经成功启动了

8.4  apprtc 房间服务器安装配置

配置防火墙,允许访问8089端口(已经关闭防火墙,可以先忽略)

配置文件路径:/root/webrtc/apprtc/src/app_engine/constants.py

 修改内容如下(记得IP要修改自己的IP地址)

        A.注释掉 ICE_SERVER_OVERRIDE = None

        B.手动配置ICE_SERVER_OVERRIDE 里面的turn和stun地址

        C.配置ICE_SERVER_BASE_URL为本地IP地址

        D.配置WSS_INSTANCE_HOST_KEY配置为192.168.239.130:8089

        E.配置WSS_INSTANCES 里面是配置信令服务器的地址,有2个可以注释一个

具体修改内容:

# Turn/Stun server override. This allows AppRTC to connect to turn servers
# directly rather than retrieving them from an ICE server provider.
#ICE_SERVER_OVERRIDE = None
# Enable by uncomment below and comment out above, then specify turn and stun
ICE_SERVER_OVERRIDE=[
   {
     "urls": [
       "turn:192.168.239.130:3478?transport=udp",
       "turn:192.168.239.130:3478?transport=tcp"
     ],
     "username": "root",      
     "credential": "123456"
   },
   {
     "urls": [
       "stun:192.168.239.130:3478"
     ]
   }
 ]
ICE_SERVER_BASE_URL = 'http://192.168.239.130'
ICE_SERVER_URL_TEMPLATE = '%s/v1alpha/iceconfig?key=%s'
ICE_SERVER_API_KEY = os.environ.get('ICE_SERVER_API_KEY')
HEADER_MESSAGE = os.environ.get('HEADER_MESSAGE')
ICE_SERVER_URLS = [url for url in os.environ.get('ICE_SERVER_URLS', '').split(',') if url]

# Dictionary keys in the collider instance info constant.
WSS_INSTANCE_HOST_KEY = '192.168.239.130:8089'
WSS_INSTANCE_NAME_KEY = 'vm_name'
WSS_INSTANCE_ZONE_KEY = 'zone'
WSS_INSTANCES = [{
    WSS_INSTANCE_HOST_KEY: '192.168.239.130:8089',
    WSS_INSTANCE_NAME_KEY: 'wsserver-std',
    WSS_INSTANCE_ZONE_KEY: 'us-central1-a'
}
#, {
#    WSS_INSTANCE_HOST_KEY: '192.168.239.130:8089',
#    WSS_INSTANCE_NAME_KEY: 'wsserver-std-2',
#    WSS_INSTANCE_ZONE_KEY: 'us-central1-f'
#}
]

修改完成之后要编译(每次修改都要编译)

执行下面语句

cd /root/webrtc/apprtc
npm install
grunt build

编译成功就可以启动房间服务器了

启动命令

nohup  /root/webrtc/google_appengine/dev_appserver.py --host=192.168.239.130 --port=8080 /root/webrtc/apprtc/out/app_engine --skip_sdk_update_check &

测试

A.检测是否启动成功  netstat -tunlp | grep python

tcp        0      0 192.168.239.130:8080    0.0.0.0:*               LISTEN      20752/python        
tcp        0      0 127.0.0.1:33878              0.0.0.0:*               LISTEN      20776/python        
tcp        0      0 127.0.0.1:43262              0.0.0.0:*               LISTEN      20752/python        
tcp        0      0 127.0.0.1:8000                0.0.0.0:*               LISTEN      20752/python        
tcp6       0      0 ::1:33878                        :::*                        LISTEN      20776/python        
tcp6       0      0 ::1:43262                        :::*                        LISTEN      20752/python        
tcp6       0      0 ::1:8000                          :::*                        LISTEN      20752/python

B. 直接用本地浏览器 登录 http://192.168.239.130:8080/   

9、配置nginx

配置nginx是为了能够支持https来访问apprtc,如果不能支持https访问,可会导致客户端无法采集音频视频的采集

安装参照:

我的nginx是安装在/usr/local/nginx/

配置文件在 /usr/local/nginx/conf/nginx.conf

具体修改:

 upstream roomserver {
       server 192.168.239.130:8080;
   }
   server {
       listen 80;
       server_name 192.168.239.130;
       return  301 https://$server_name$request_uri;

   }

  server {
       root /usr/local/nginx/html/;
       index index.php index.html index.htm;

       listen      443 ssl;
       ssl_certificate /cert/cert.pem;
       ssl_certificate_key /cert/key.pem;
       server_name 192.168.239.130;

       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;
       }

   }

websocket代理

在nginx配置目录下创建conf.d目录

mkdir  /usr/local/nginx/conf/conf.d

创建编辑websocket代理配置文件

vim /usr/local/nginx/conf/conf.d/websocket_proxy.conf

添加一下内容:

map $http_upgrade $connection_upgrade {
   default upgrade;
   '' close;
}

upstream websocket {
   server 192.168.239.130;
}

server {
   listen 8088;
   ssl on;
   ssl_certificate /cert/cert.pem;
   ssl_certificate_key /cert/key.pem;
   ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
   ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
   ssl_prefer_server_ciphers on;
   ssl_session_cache shared:SSL:10m;
   server_name easywebrtc.com;
   #access_log  /var/log/nginx/test_websocket.access.log;

   location / {
       proxy_pass https://websocket;
       proxy_http_version 1.1;
       proxy_set_header Upgrade $http_upgrade;
       proxy_set_header Connection $connection_upgrade;

   }

}

添加完成之后保存退出,nginx配置文件 http配置部分最后一行添加 

include /usr/local/nginx/conf/conf.d/*.conf;

启动nginx :/usr/local/nginx/sbin/nginx

 如果之前已经启动,这需要重新读取配置文件或者重启启动

解决跨域问题
浏览器通话跨域问题 :pushState
Messages:Failed to start signaling: Failed to execute 'pushState' on 'History'

解决方法
修改文件/root/webrtc/apprtc/src/web_app/js/appcontroller.js

vim  /root/webrtc/apprtc/src/web_app/js/appcontroller.js
#搜索  displaySharingInfo_ 大概是445行displaySharingInfo_函数第一行添加
 
roomLink=roomLink.replace("http","https");

 修改之后如下:

到这里所有的配置也就都完成了,开始测试整体效果

测试之前为了保证编辑的内容都得到更新,先关闭apprtc,重新编译,在启动

cd /root/webrtc/apprtc
go get collidermain
go install collidermain
grunt build

开始测试效果

在本地Chome浏览器输入:https://192.168.239.130/

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值