当前位置:   article > 正文

WebRTC使用Linux搭建服务器(二)_webrtc linux

webrtc linux

搭建服务器流程:

 

注意:每个人搭建服务器可能会出现奇奇怪怪的问题,照着我的方法可能会出现其他问题,不要着急,耐心搭建,确实比较烦。

1、安装JDK

  1. apt-get update
  2. apt-get install openjdk-8-jdk
  3. java -version
  4. #java version "1.8.0_181"

2、安装node.js

  1. apt-get install nodejs-legacy
  2. apt-get install npm
  3. node --version
  4. #v4.2.6
  5. npm --version
  6. #3.5.2
  7. npm -g install grunt-cli
  8. grunt --version
  9. #grunt-cli v1.3.2

注意:这一步我出现过好多问题,有时候会出现grunt没搭建成功,有时候搭建成功了但是查找不了版本号,如果查找不了版本号,进行如下操作:
 

  1. # 安装n模块
  2. npm install -g n
  3. # 升级nodejs到最新stable版本
  4. n stable
  5. # 升级最新npm
  6. npm install npm@latest -g

3、安装Python和Python-webtest (必须2.7以上包括2.7)

  1. apt-get install python
  2. apt-get install python-webtest
  3. python -V
  4. #Python 2.7.12

4、安装google_appengine

  1. wget https://storage.googleapis.com/appengine-sdks/featured/google_appengine_1.9.40.zip
  2. unzip google_appengine_1.9.40.zip

配置环境变量:

  1. vim /etc/profile
  2. export PATH=$PATH:/root/webrtc/google_appengine

按  :wq保存退出

执行:

source /etc/profile

5、安装go

  1. apt install golang-go
  2. go version
  3. #go version go1.6.2 linux/amd64
  1. #创建go工作目录
  2. mkdir -p /root/webrtc/goWorkspace/src
  3. #配置环境变量:在/etc/profile文件最后增加一行:
  4. export GOPATH=/root/webrtc/goWorkspace
  5. source /etc/profile

6、安装libevent

当前目录:

cd root/webrtc/
  1. wget https://github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.gz
  2. tar xvf libevent-2.0.21-stable.tar.gz
  3. cd libevent-2.0.21-stable
  4. ./configure
  5. make install

7、安装apprtc

当前目录:

vim root/webrtc/
  1. git clone https://github.com/webrtc/apprtc.git(https变成git)
  2. #将collider的源码软连接到go的工作目录下
  3. ln -s /root/webrtc/apprtc/src/collider/collider $GOPATH/src
  4. ln -s /root/webrtc/apprtc/src/collider/collidermain $GOPATH/src
  5. ln -s /root/webrtc/apprtc/src/collider/collidertest $GOPATH/src
  6. #编译collidermain
  7. go get collidermain
  8. go install collidermain

(如果第一条代码安装失败,将https变成git)

如果后面两条编译失败,则执行:

  1. #go get collidermain: 被墙
  2. #报错: package golang.org/x/net/websocket: unrecognized import path "golang.org/x/net/websocket"
  3. #执行:
  4. mkdir -p $GOPATH/src/golang.org/x/
  5. cd $GOPATH/src/golang.org/x/
  6. git clone https://github.com/golang/net.git net
  7. go install net

8、安装coturn

目录:

vim root/webrtc/
  1. wget http://coturn.net/turnserver/v4.5.0.7/turnserver-4.5.0.7.tar.gz
  2. tar xvfz turnserver-4.5.0.7.tar.gz
  3. cd turnserver-4.5.0.7
  4. ./configure
  5. make install

配置与运行:

1、coturn Nat穿透服务器

配置防火墙,允许访问3478端口(含tcp和udp,此端口用于nat穿透)
 

  1. #启动 47.94.57.236:内网ip(阿里云后台可以看到内外网ip)
  2. nohup turnserver -L 172.31.247.136 -a -u dongnao:12345 -v -f -r nort.gov &
  3. #账号dongnao 密码:12345 这一步随便给,但是后面配置apprtc时需要用到
  4. #命令后加 & ,执行起来后按 ctr+c,不会停止
  5. ```
  6. ```shell
  7. #开启新窗口 执行
  8. netstat -ntulp | grep turnserver #或者 lsof -i:3478
  9. #输出大致这样的成功
  10. tcp        0      0 127.0.0.1:5766          0.0.0.0:*                LISTEN      16848/turnserver
  11. tcp        0      0 172.31.247.136:3478       0.0.0.0:*               LISTEN      16848/turnserver
  12. tcp        0      0 172.31.247.136:3478       0.0.0.0:*               LISTEN      16848/turnserver
  13. udp        0      0 172.31.247.136:3478       0.0.0.0:*                           16848/turnserver
  14. udp        0      0 172.31.247.136:3478       0.0.0.0:*                           16848/turnserver
  15. ```

2、collider 信令服务器

配置防火墙,允许访问8089端口(tcp,用于客户端和collider建立websocket信令通信)

  1. mkdir -p /cert
  2. cd /cert
  3. # CA私钥
  4. openssl genrsa -out key.pem 2048 
  5. # 自签名证书
  6. openssl req -new -x509 -key key.pem -out cert.pem -days 1095
  7. nohup $GOPATH/bin/collidermain -port=8089 -tls=true -room-server="https://47.94.57.236:8080" &
  8. #同样检查是否成功
  9. netstat -ntulp | grep collider
  10. tcp6 0 0 :::8089 :::* LISTEN 16864/collidermain

3、apprtc 房间服务器

  1. 配置文件修改(主要是配置apprtc对应的conturn和collider相关参数)
  2. ```shell
  3. vim /root/webrtc/apprtc/src/app_engine/constants.py
  4. #47.75.90.219 外网ip

 主要修改红色部分的IP,自己仔细看一下,别修改错误。

  1. #编译
  2. cd /root/webrtc/apprtc
  3. npm install
  4. grunt build
  5. #如果出现 : No module named requests
  6. ```
  7. > **错误: requests模块不存在**
  1. ##### 安装pip
  2. >
  3. > 下载setup-python工具
  4. >
  5. > ```shell
  6. > # 有一行命令太长了,$开头的是一行命令
  7. > $cd /root/webrtc
  8. > $wget https://pypi.python.org/packages/2.7/s/setuptools/setuptools-0.6c11-py2.7.egg --no-check-certificate
  9. > $chmod +x setuptools-0.6c11-py2.7.egg
  10. > $./setuptools-0.6c11-py2.7.egg
  11. > $wget https://pypi.python.org/packages/source/p/pip/pip-1.5.4.tar.gz
  12. > $tar -xf pip-1.5.4.tar.gz
  13. > $python setup.py install(如果不成功,则网上重新下载setuptools,然后在setuptools目录下下载就可以了)
  14. > $pip install requests(在目录下安装 cd pip-数字,具体看自己版本 )
  15. > #安装完成后再执行编译:
  16. > #cd /root/webrtc/apprtc
  17. > #grunt build

启动:

  1. #172.24.159.143 : 内网ip
  2. nohup dev_appserver.py --host=172.24.159.143 /root/webrtc/apprtc/out/app_engine --skip_sdk_update_check &
  3. #检查
  4. netstat -ntulp | grep 8080
  5. #输出下列内容
  6. 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目录执行

  1. ./configure --with-http_ssl_module
  2. apt-get install libpcre3-dev
  3. ./configure --with-http_ssl_module
  4. make install

配置nginx.conf

vim /usr/local/nginx/conf/nginx.conf

然后将下面代码放进去:

  1. events {
  2. worker_connections 1024;
  3. }
  4. http{
  5. upstream roomserver {
  6. server 47.94.57.236:8080;
  7. }
  8. server {
  9. listen 80;
  10. server_name 47.94.57.236;
  11. return 301 https://$server_name$request_uri;
  12. }
  13. server {
  14. root /usr/share/nginx/html;
  15. index index.php index.html index.htm;
  16. listen 443 ssl;
  17. ssl_certificate /cert/cert.pem;
  18. ssl_certificate_key /cert/key.pem;
  19. server_name 47.94.57.236;
  20. location / {
  21. proxy_pass http://roomserver$request_uri;
  22. proxy_set_header Host $host;
  23. }
  24. location ~ .php$ {
  25. fastcgi_pass unix:/var/run/php5-fpm.sock;
  26. fastcgi_index index.php;
  27. include fastcgi_params;
  28. }
  29. }
  30. }

只需要将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

加入:

  1. #搜索 pushState 增加:
  2. > roomLink=roomLink.substring("http","https");

就基本完成了,结果如下:

WebRTC使用Linux搭建服务器(一)

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号