搭建服务器流程:
注意:每个人搭建服务器可能会出现奇奇怪怪的问题,照着我的方法可能会出现其他问题,不要着急,耐心搭建,确实比较烦。
1、安装JDK
apt-get update
apt-get install openjdk-8-jdk
java -version
#java version "1.8.0_181"
2、安装node.js
apt-get install nodejs-legacy
apt-get install npm
node --version
#v4.2.6
npm --version
#3.5.2
npm -g install grunt-cli
grunt --version
#grunt-cli v1.3.2
注意:这一步我出现过好多问题,有时候会出现grunt没搭建成功,有时候搭建成功了但是查找不了版本号,如果查找不了版本号,进行如下操作:
# 安装n模块
npm install -g n
# 升级nodejs到最新stable版本
n stable
# 升级最新npm
npm install npm@latest -g
3、安装Python和Python-webtest (必须2.7以上包括2.7)
apt-get install python
apt-get install python-webtest
python -V
#Python 2.7.12
4、安装google_appengine
wget https://storage.googleapis.com/appengine-sdks/featured/google_appengine_1.9.40.zip
unzip google_appengine_1.9.40.zip
配置环境变量:
vim /etc/profile
export PATH=$PATH:/root/webrtc/google_appengine
按 :wq保存退出
执行:
source /etc/profile
5、安装go
apt install golang-go
go version
#go version go1.6.2 linux/amd64
#创建go工作目录
mkdir -p /root/webrtc/goWorkspace/src
#配置环境变量:在/etc/profile文件最后增加一行:
export GOPATH=/root/webrtc/goWorkspace
source /etc/profile
6、安装libevent
当前目录:
cd root/webrtc/
wget https://github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.gz
tar xvf libevent-2.0.21-stable.tar.gz
cd libevent-2.0.21-stable
./configure
make install
7、安装apprtc
当前目录:
vim root/webrtc/
git clone https://github.com/webrtc/apprtc.git(https变成git)
#将collider的源码软连接到go的工作目录下
ln -s /root/webrtc/apprtc/src/collider/collider $GOPATH/src
ln -s /root/webrtc/apprtc/src/collider/collidermain $GOPATH/src
ln -s /root/webrtc/apprtc/src/collider/collidertest $GOPATH/src
#编译collidermain
go get collidermain
go install collidermain
(如果第一条代码安装失败,将https变成git)
如果后面两条编译失败,则执行:
#go get collidermain: 被墙
#报错: package golang.org/x/net/websocket: unrecognized import path "golang.org/x/net/websocket"
#执行:
mkdir -p $GOPATH/src/golang.org/x/
cd $GOPATH/src/golang.org/x/
git clone https://github.com/golang/net.git net
go install net
8、安装coturn
目录:
vim root/webrtc/
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
./configure
make install
配置与运行:
1、coturn Nat穿透服务器
配置防火墙,允许访问3478端口(含tcp和udp,此端口用于nat穿透)
#启动 47.94.57.236:内网ip(阿里云后台可以看到内外网ip)
nohup turnserver -L 172.31.247.136 -a -u dongnao:12345 -v -f -r nort.gov &
#账号dongnao 密码:12345 这一步随便给,但是后面配置apprtc时需要用到
#命令后加 & ,执行起来后按 ctr+c,不会停止
```
```shell
#开启新窗口 执行
netstat -ntulp | grep turnserver #或者 lsof -i:3478
#输出大致这样的成功
tcp 0 0 127.0.0.1:5766 0.0.0.0:* LISTEN 16848/turnserver
tcp 0 0 172.31.247.136:3478 0.0.0.0:* LISTEN 16848/turnserver
tcp 0 0 172.31.247.136:3478 0.0.0.0:* LISTEN 16848/turnserver
udp 0 0 172.31.247.136:3478 0.0.0.0:* 16848/turnserver
udp 0 0 172.31.247.136:3478 0.0.0.0:* 16848/turnserver
```
2、collider 信令服务器
配置防火墙,允许访问8089端口(tcp,用于客户端和collider建立websocket信令通信)
mkdir -p /cert
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="https://47.94.57.236:8080" &
#同样检查是否成功
netstat -ntulp | grep collider
tcp6 0 0 :::8089 :::* LISTEN 16864/collidermain
3、apprtc 房间服务器
配置文件修改(主要是配置apprtc对应的conturn和collider相关参数)
```shell
vim /root/webrtc/apprtc/src/app_engine/constants.py
#47.75.90.219 外网ip
主要修改红色部分的IP,自己仔细看一下,别修改错误。
#编译
cd /root/webrtc/apprtc
npm install
grunt build
#如果出现 : No module named requests
```
> **错误: requests模块不存在**
##### 安装pip
>
> 下载setup-python工具
>
> ```shell
> # 有一行命令太长了,$开头的是一行命令
> $cd /root/webrtc
> $wget https://pypi.python.org/packages/2.7/s/setuptools/setuptools-0.6c11-py2.7.egg --no-check-certificate
> $chmod +x setuptools-0.6c11-py2.7.egg
> $./setuptools-0.6c11-py2.7.egg
> $wget https://pypi.python.org/packages/source/p/pip/pip-1.5.4.tar.gz
> $tar -xf pip-1.5.4.tar.gz
> $python setup.py install(如果不成功,则网上重新下载setuptools,然后在setuptools目录下下载就可以了)
> $pip install requests(在目录下安装 cd pip-数字,具体看自己版本 )
> #安装完成后再执行编译:
> #cd /root/webrtc/apprtc
> #grunt build
启动:
#172.24.159.143 : 内网ip
nohup dev_appserver.py --host=172.24.159.143 /root/webrtc/apprtc/out/app_engine --skip_sdk_update_check &
#检查
netstat -ntulp | grep 8080
#输出下列内容
tcp 0 0 172.31.4.236:8080 0.0.0.0:* LISTEN 17032/python
以上基本实现服务器搭建成功,现在就可以访问服务器了:
http://47.94.57.236:8080,
可以在网页上面实现服务器了,如果网页打不开,应该是以上的软件没有搭建好,重新搭建,找错误可能 比较麻烦。
4、nginx
反向代理apprtc,使之支持https访问,如果http直接访问apprtc,则客户端无法启动视频音频采集(必须得用https访问)
在nginx目录执行
./configure --with-http_ssl_module
apt-get install libpcre3-dev
./configure --with-http_ssl_module
make install
配置nginx.conf
vim /usr/local/nginx/conf/nginx.conf
然后将下面代码放进去:
events {
worker_connections 1024;
}
http{
upstream roomserver {
server 47.94.57.236:8080;
}
server {
listen 80;
server_name 47.94.57.236;
return 301 https://$server_name$request_uri;
}
server {
root /usr/share/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 47.94.57.236;
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;
}
}
}
只需要将ip改成自己公网的ip就可以了。
启动:
/usr/local/nginx/sbin/nginx
以上,服务器可以打开摄像头和麦克风了。
可能会出现浏览器通话跨域问题:
Messages:Failed to start signaling: Failed to execute 'pushState' on 'History'
解决办法:
vim /root/webrtc/apprtc/out/app_engine/js/appcontroller.js
加入:
#搜索 pushState 增加:
> roomLink=roomLink.substring("http","https");
就基本完成了,结果如下:
WebRTC使用Linux搭建服务器(一)