在Docker中安装Intel OWT 进行webrtc直播
一.准备工作
1.操作系统
CentOS7.6,验证Docker是否安装,sudo docker info,
2.网络环境
一定要找一台能连接到外网的机器,因为在安装中的过程中会下载一些国外的软件。
二.开始安装
1.生成镜像(如果不是在docker中安装,请忽略本步)
$ sudo docker run -itd --name owt-hevc --privileged=true --net=host -v /home:/host docker.io/centos:7.6.1810 /usr/sbin/init
这里几个参数要注意:
--privileged=true 是用来让docker中的root用户获取超级权限,因为在安装过程中会使用systemctl命令
-itd 交互式后台运行
不要在主机上直接运行上面的命令,会导致进入登录界面,通过远程ssh连接。
$ sudo docker exec -it owt-hevc /bin/bash 进入docker
下面的命令都是在docker中使用root权限执行,如果不是docker请直接使用root权限(sudo su root)运行。
2.验证权限
$ systemctl start
#Too few arguments
如果没有提示错误,继续,如果提示错误,查看一下上面创建docker的命令。
3.安装基础工具
$ yum install -y git curl wget vim ftp expect unzip
$ yum -y install yum-utils
$ cd ~
$ git config --global user.email "[email protected]"
$ git config --global user.name "Your Name"
4.更新gcc,g++
$ yum install centos-release-scl -y
$ yum install devtoolset-7-gcc* -y
$ echo "source /opt/rh/devtoolset-7/enable" >>/etc/profile
$ source /etc/profile
$ gcc -v
# should see: "gcc version 7.3.1 20180303 (Red Hat 7.3.1-5) (GCC)"
$ g++ -v
# should see: "gcc version 7.3.1 20180303 (Red Hat 7.3.1-5) (GCC)"
5.手动安装mongodb
$ vi /etc/yum.repos.d/mongodb-org-4.0.repo
向文件中添加以下内容:
[mngodb-org]
name=MongoDB Repository
baseurl=http://mirrors.aliyun.com/mongodb/yum/redhat/7Server/mongodb-org/4.0/x86_64/
gpgcheck=0
enabled=1
执行安装命令:
$ yum -y install mongodb-org
6.下载OWT
$ wget https://github.com/open-webrtc-toolkit/owt-server/archive/v4.3.zip -O owt-server-4.3.zip
$ unzip owt-server-4.3.zip
$ cd owt-server-4.3
7.开始安装依赖
# if running as root, delete "sudo -E" and "sudo" in *.sh
$ sed -i 's/sudo -E //' scripts/*.sh && sed -i 's/sudo //' scripts/*.sh
$ ./scripts/installDepsUnattended.sh
执行完成后,提示:
Generate libwebrtc.a OK
8.配置npm
$ source ~/.bashrc
$ nvm use v8
# using node v8.15.0
$ which npm
# should see: "/home/yourname/.nvm/versions/node/v8.15.0/bin/npm"
9.build owt-server
$ node ./scripts/build.js -t mcu -c
#i如果出现下面的错误:
gyp ERR! stack Error: ENOENT: no such file or directory, mkdir '/root/.cache/node-gyp/8.15.0'
#请先 mkdir创建目录:
$ mkdir -p /root/.cache/node-gyp/8.15.0
#重新执行:
$ node ./scripts/build.js -t mcu -c
#然后会报目录存在的错误:
gyp ERR! stack Error: EEXIST: file already exists, mkdir '/root/.cache/node-gyp/8.15.0'
#删除刚创建的目录
$ rm -rf /root/.cache/node-gyp/8.15.0
#再重新执行一次下面的命令,就OK了:
$ node ./scripts/build.js -t mcu -c
10.build owt-client
$ cd ../
$ wget https://github.com/open-webrtc-toolkit/owt-client-javascript/archive/v4.3.zip -O owt-client-javascript-4.3.zip
$ unzip owt-client-javascript-4.3.zip
$ cd owt-client-javascript-4.3/scripts/
$ npm install
$ grunt
11.pack dist
$ cd ../../owt-server-4.3
$ ./scripts/pack.js -f -s ../owt-client-javascript-4.3/dist/samples/conference/
12.修改IP地址
$ vim dist/webrtc_agent/agent.toml
修改[webrtc] 部分的 network_interfaces
[{name = "eth0", replaced_ip_address = "你的公网IP"}]
$ vim dist/portal/portal.toml
修改 [portal] 部分里的 ip_address 为服务器公网 IP 地址
13.运行owt-server
$ cd ./dist
$ ./bin/init-all.sh
#如果有提示输入YES/NO,或者用户名密码,一律按回车键
$ ./bin/start-all.sh
三.验证
访问页面:https://你的公网IP:3004
四.可能遇到的问题
1.关闭防火墙
$ systemctl stop firewalld
$ systemctl disable firewalld
2.如果云主机,请开放端口
TCP:3001,3004,8080
UDP:1-65535
3.mongodb有时会崩溃,安装一个monit来监控重启
$ yum install monit
$ vim /etc/monit.d/mongodb
# 匹配进程名
check process mongo MATCHING mongo
# 配置服务启动和重启命令
start program = "/bin/systemctl start mongod.service"
restart program = "/bin/systemctl restart mongod.service"
# 如果端口27017无法访问则认为服务失败,发报警邮件并重启服务
if failed port 27017 type tcp then alert
if failed port 27017 type tcp then restart
# 如果在三个周期内重启了3次,则不再监控
if 3 restarts within 3 cycles then unmonitor