ubuntu 搭建apprtc

搭建apprtc 主要分为3不大步骤

1.打洞服务器 turnserver
2.房间服务器 room-server
3.信令服务器 collider

一、coTurn 打洞服务器 配置

1.1安装依赖

   sudo apt-get install libssl-dev
   sudo apt-get install libevent-dev

1.2 下载并编译源码

  • 依次执行即可:
   cd ~
   git clone https://github.com/coturn/coturn.git
   cd coturn
   configure 
   make 
   make install

1.3 turnserver 的证书

turnserver 的 证书在 turnserver-4.5.1.0/examples/etc/目录下有 直接用自带的证书即可
turn_server_cert.pem和turn_server_pkey.pem

1.4 启动turnserver 服务(10.140.0.6为内网ip, 34.80.18.14为外网ip)

注意:-u 是设置的turnserver 的账号密码 这里设置的账号和密码均为mvs cert 和pkey 为证书和密钥
turnserver的参数可以查看:https://github.com/coturn/coturn/wiki/turnserver
./turnserver-4.5.1.0/bin/turnserver -L 10.140.0.6 -a -u mvs:mvs -v -f -r 34.80.18.14 -cert=turn_server_cert.pem -pkey=turn_server_pkey.pem

二、房间服务器的搭建及需要的环境

2.1 jdk1.8安装:

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
下载到/home/cc/java目录下 下载到/home/cc/java目录下

	  cd /home/cc/java
	  tar zxf jdk-8u201-linux-x64.tar.gz

设置java 的环境变量

	 //编辑配置文件
	 vim /etc/profile 
	 //在文件最下面设置环境
 	JAVA_HOME=/home/cc/java/jdk1.8.0_201
   export JRE_HOME=/home/cc/java/jdk1.8.0_201/jre 
   export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
   export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

保存退出profile文件之后执行 source /etc/profile 命令让 配置文件立马生效;
测试Java是否安装成功:
在这里插入图片描述

2.2node.js 安装

sudo apt-get install nodejs (ubuntu 14 不建议使用这种方式安装,建议源码安装:参考链接:https://blog.csdn.net/taoerchun/article/details/80943660)
sudo npm install -g npm
sudo apt-get install nodejs-legacy
sudo npm -g install grunt-cli

2.3 安装Python和Python-webtest (python2.7 环境)

ubuntu 一般都会自带python 2.7 输入 python -v 输出版本则已经有了
在这里插入图片描述

	//没有则输入下命令
	sudo apt-get install python
	//python 安装之后安装 Python-webtest
	sudo apt-get install python-webtest

2.4下载apprtc源码并安装

	cd ~
	//下载源码
    git clone https://github.com/webrtc/apprtc.git
    //编译
    cd apprtc
	npm install 

如果在npm install 报如下错误可以换 cnpm install(cnpm需要下载) 解决 或者更换 npm 到淘宝镜像
在这里插入图片描述

  • 修改配置文件:
    修改:apprtc/src/app_engine/constants.py 文件 内容如下 34.80.18.14 是外网 ip:

    ICE_SERVER_BASE_URL = ‘https://34.80.18.14
    ICE_SERVER_URL_TEMPLATE = ‘%s/v1alpha/iceconfig?key=%s’
    ICE_SERVER_API_KEY = os.environ.get(‘ICE_SERVER_API_KEY’)
    WSS_INSTANCE_HOST_KEY = ‘34.80.18.148089’
    WSS_INSTANCE_NAME_KEY = ‘vm_name’
    WSS_INSTANCE_ZONE_KEY = ‘zone’
    WSS_INSTANCES = [{
    WSS_INSTANCE_HOST_KEY: ‘34.80.18.14:8089’,
    WSS_INSTANCE_NAME_KEY: ‘wsserver-std’,
    WSS_INSTANCE_ZONE_KEY: ‘us-central1-a’
    }, {
    WSS_INSTANCE_HOST_KEY: ‘34.80.18.14:8089’,
    WSS_INSTANCE_NAME_KEY: ‘wsserver-std-2’,
    WSS_INSTANCE_ZONE_KEY: ‘us-central1-f’
    }]

说明一下apprtc/src/app_engine/apprtc.py 文件不需要修改 ,如果用http 需要改这里:
在这里插入图片描述

  • 修改/apprtc/src/web_app/js/utils.js

** 找到requestIceServers 函数 把原来的函数注释换成新的函数如下:**
/**
function requestIceServers(iceServerRequestUrl, iceTransports) {
return new Promise(function(resolve, reject) {
sendAsyncUrlRequest(‘POST’, iceServerRequestUrl).then(function(response) {
var iceServerRequestResponse = parseJSON(response);
if (!iceServerRequestResponse) {
reject(Error('Error parsing response JSON: ’ + response));
return;
}
if (iceTransports !== ‘’) {
filterIceServersUrls(iceServerRequestResponse, iceTransports);
}
trace(‘Retrieved ICE server information.’);
resolve(iceServerRequestResponse.iceServers);
}).catch(function(error) {
reject(Error('ICE server request error: ’ + error.message));
return;
});
});
}**/
下面是修改后的:username 和credential 是turnserver 启动时设置的账号密码
function requestIceServers(iceServerRequestUrl, iceTransports) {
return new Promise(function(resolve, reject) {
var servers = [{
credential: “mvs”,
username: “mvs”,
urls: [
“turn:34.80.18.14:3478?transport=udp”,
“turn:34.80.18.14:3478?transport=tcp”
]
}];
resolve(servers);
});
}

  • 编译
	grunt build

2.5 安装google_appengine 需要fq

google_appengine 下载地址:
https://cloud.google.com/appengine/docs/standard/python/download
这里注意一下 别下成 Google Cloud SDK 了
点击下图的链接 下载 google_appengine 即可
在这里插入图片描述

  • 下载解压完成设置环境变量:
	  sudo  /etc/profile
      export PATH=$PATH:/home/cc/google_appengine
      source /etc/profile

2.6启动房间服务器

	  //进入到google_appengine根目录下 10.140.0.6 为本地ip
	  sudo ./dev_appserver.py --host=10.140.0.6 /home/cc/apprtc/out/app_engine

三、collider 信令服务器的搭建

collider 服务器在 apprtc 的源码里已经有了 在 apprtc/src/collider 路径下

3.1 安装go

	   sudo apt-get install golang-go(如果go版本过低 请源码安装)
	   //检测go 版本 
	   go version
  • 创建 的工作目录
      mkdir -p ~/collider/src
  • 将 apprtc/src/collider 路径下 的所有文件拷贝到 刚刚创建的 collider/src 目录下
  • 这里需要生成 一个 自签名的ssl 证书:
    sudo apt-get install openssl (有openssl 则不用安装)
  	sudo mkdir -p /cert
  	cd /cert
  	//私钥
  	openssl genrsa -out key.pem 2048 
  	//自签证书
  	openssl req -new -x509 -key key.pem -out cert.pem -days 1095
  • 修改 collider/src/collider/collider.go 文件
    打开collider.go 文件 把证书修改成刚才自己生成的证书:
    在这里插入图片描述
  • 设置GO 的环境变量

    vim /etc/profile
    export GOPATH=/home/cc/collider
    source /etc/profile

3.2编译collide服务器

3.3 启动信令服务器

cd /home/cc/collider/bin
./collidermain -port=8089 -tls=true -room-server="https://34.80.18.14 :8080"

四、nginx 的搭建反向代理https

4.1 安装nginx

	 cd  /home/ccnginx-1.15.6
	 ./configure
	 make
	 make install

4.2修改配置文件

安装成功后 nginx 默认放置在/usr/local/nginx目录下
/usr/local/nginx/conf/nginx.conf 为主要配置文件
/usr/local/nginx/sbin/nginx 为执行文件

进入 修改成如下内容ssl_certificate 和ssl_certificate_key 分别时创建信令服务器时生成的证书和密钥

events {
worker_connections 1024;
}
http{
upstream roomserver {
server 34.80.18.14:8080;
}
server {
listen 80;
server_name 34.80.18.14;
return 301 https:// s e r v e r n a m e server_name servernamerequest_uri;
}
server {
root /usr/share/nginx/html;
index index.php index.html index.htm;
listen 443 ssl;
ssl_certificate /root/cert/cert.pem;
ssl_certificate_key /root/cert/key.pem;
server_name 34.80.18.14;
location / {
proxy_pass http://roomserver$request_uri;
proxy_set_header Host KaTeX parse error: Expected 'EOF', got '}' at position 10: host; }̲ location ~ .… {
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
}
}

4.3启动nginx

	cd /usr/local/nginx
	sbin/nginx

五、视频

本地访问:https://lcoalhosthttps://本地ip http://外网ip
外部 https://外网ip

六、最后的问题

  • 出现下面跨越问题
    在这里插入图片描述

一种解决办法是下面这种这个是在GitHub里看的亲测可行:在这里插入图片描述
还有一种是 一下方法 在https://juejin.im/post/5bec4a3051882551236e7b35 在这个博客看的 没试过应该可以:
在这里插入图片描述
最后当然启动都可以在后台启动服务

主要参考博客链接:
https://juejin.im/post/5bec4a3051882551236e7b35
https://blog.csdn.net/jwcqc/article/details/53156347
https://blog.csdn.net/china_jeffery/article/details/80092309
https://blog.csdn.net/danfengw/article/details/68485223

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值