Webrtc服务器搭建后台项目地址

java项目:https://github.com/androidtencent/WebRtcJavaWeb

NodeJs项目 : https://github.com/ddssingsong/webrtc_server

本搭建是基于centos 7.6 64位系统,系统恢复原始状态,重新装系统,确保人人都能搭建成功

如果系统安装了基础软件 如git gcc++ 可以跳该步骤

yum update
yum install git
yum install  make
yum install gcc-c++

1.1 搭建Node环境

下载官网最新nodejs:https://nodejs.org/en/download

mkdir webrtc
cd webrtc
wget https://nodejs.org/dist/v10.16.0/node-v10.16.0-linux-x64.tar.xz
# 解压
tar -xvf node-v10.16.0-linux-x64.tar.xz
# 改名
mv node-v10.16.0-linux-x64 nodejs
# 进入目录
cd nodejs/# 确认一下nodejs下bin目录是否有node 和npm文件,如果有就可以执行软连接
sudo ln -s /webRTC/nodejs/bin/npm /usr/local/bin/
sudo ln -s /webRTC/nodejs/bin/node /usr/local/bin/# 看清楚,这个路径是你自己创建的路径,我的路径是/home/dds/webrtc/nodejs#查看是否安装
node -v
npm -v # 注意,ubuntu 有的是需要sudo,如果不想sudo,可以
sudo ln -s /root/webrtc/nodejs/bin/node /usr/bin/

1.2 安装turn服务器的环境准备

cd ..
yum install openssl openssl-libs libevent2 libevent-devel
yum install openssl-devel
yum install sqlite
yum install sqlite-devel
yum install postgresql-devel
yum install postgresql-server
yum install mysql-devel
yum install mysql-server
yum install hiredis
yum install hiredis-devel

1.3开始安装turn服务器

git clone https://github.com/coturn/coturn
cd coturn
./configure
make
sudo make install

./configure时报错
centos Libevent2 development libraries are not installed properly in required location

需要手动安装libevent-2.1.11-stable.tar.gz(https://github.com/libevent/libevent/releases/download/release-2.1.11-stable/libevent-2.1.11-stable.tar.gz)

编译libevent-2.1.11-stable.tar.gz时报错,
C preprocessor “/lib/cpp” fails sanity check,
 解决办法:出现该情况是由于c++编译器的相关package没有安装,以root用户登陆,在终端上执行:

# yum install glibc-headers

# yum install gcc-c++

# yum install kernel-headers

查看是否安装成功

which turnserver

生成用户名和密码

turnadmin -k -u ddssingsong -r north.gov -p 123456
0xfb76c57e823de97df580e573437ef54a
0: log file opened: /var/log/turn_1791_2019-07-31.log
0: SQLite connection was closed.

turnadmin -k -u xhh -r north.gov -p 123456
0x66cfe78c3bc3c893ae91cc8575322027
0: log file opened: /var/log/turn_11767_2019-11-28.log
0: SQLite connection was closed.

安全访问秘钥 0xfb76c57e823de97df580e573437ef54a
安全访问秘钥 0x66cfe78c3bc3c893ae91cc8575322027

接下来配置turnserver 的配置文件,配置文件存放在/usr/local/etc/turnserver.config文件下

这个文件本身是不存在的,需要我们自己创建

#user=ddssingsong:0xfb76c57e823de97df580e573437ef54a
#user=ddssingsong:123456
创建内容

verbose
fingerprint
lt-cred-mech
realm=test
user=xhh:0x66cfe78c3bc3c893ae91cc8575322027
user=xhh:123456
stale-nonce
no-loopback-peers
no-multicast-peers
mobility
no-cli

该配置文件是不存在的、

user=“是你本机生成的随机ID 不要全部直接复制了”

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KACS8uPI-1575365554077)(img/1.png)]

1.4安装Webrtc服务端

安装webrtc服务器和浏览器端git clone https://github.com/androidtencent/WebrtcNodeJS
cd WebrtcNodeJS
npm install

1.5 安装nginx服务器(推荐用编译俩安装)

wget -C http://nginx.org/download/nginx-1.12.0.tar.gz
tar xvf nginx-1.12.0.tar.gz
cd nginx-1.12.0./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_modulemake sudo make install 

1.6 更改nginx 配置文件 (额外强调 其中包含https证书,下面会告诉生成方式)

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

删除配置文件内容,更改为以下内容

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b36wnqv8-1575365554079)(img/3.png)]

user root;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;events {worker_connections 768;multi_accept on;}http {sendfile on;tcp_nopush on;tcp_nodelay on;keepalive_timeout 300;types_hash_max_size 2048;default_type application/octet-stream;ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLEssl_prefer_server_ciphers on;access_log /var/log/nginx/access.log;error_log /var/log/nginx/error.log;gzip on;include /etc/nginx/conf.d/*.conf;include /etc/nginx/sites-enabled/*;upstream web {server localhost:3000;      }upstream websocket {server localhost:3000;   }server { listen       443; server_name  localhost;ssl          on;ssl_certificate     /cert/cert.crt;#配置证书ssl_certificate_key  /cert/cert.pem;#配置密钥ssl_session_cache    shared:SSL:1m;ssl_session_timeout  50m;ssl_protocols TLSv1 TLSv1.1 TLSv1.2 SSLv2 SSLv3;ssl_ciphers  HIGH:!aNULL:!MD5;ssl_prefer_server_ciphers  on;location /wss {proxy_pass http://websocket/; # 代理到上面的地址去proxy_read_timeout 300s;proxy_set_header Host $host;proxy_set_header X-Real_IP $remote_addr;proxy_set_header X-Forwarded-for $remote_addr;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection 'Upgrade';  }location / {proxy_pass         http://web/;proxy_set_header   Host             $host;proxy_set_header   X-Real-IP        $remote_addr;proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;}}
}

1.7 生成nginx中的https证书

x509证书一般会用到三类文,key,csr,crt

Key 是私用密钥openssl格,通常是rsa算法。

Csr 是证书请求文件,用于申请证书。在制作csr文件的时,必须使用自己的私钥来签署申,还可以设定一个密钥。

crt是CA认证后的证书文,(windows下面的,其实是crt),签署人用自己的key给你签署的凭证。

1.key的生成

openssl genrsa -des3 -out cert.key 2048

这样是生成rsa私钥,des3算法,openssl格式,2048位强度。server.key是密钥文件名。为了生成这样的密钥,需要一个至少四位的密码。可以通过以下方法生成没有密码的key:

openssl rsa -in cert.key -out cert.key

server.key就是没有密码的版本了。

2. 生成CA的crt

openssl req -new -x509 -key cert.key -out cert.crt -days 3650

生成的ca.crt文件是用来签署下面的server.csr文件。

3. csr的生成方法

openssl req -new -key cert.key -out cert.csr

需要依次输入国家,地区,组织,email。最重要的是有一个common name,可以写你的名字或者域名。如果为了https申请,这个必须和域名吻合,否则会引发浏览器警报。生成的csr文件交给CA签名后形成服务端自己的证书。 http://www. openboy.xyz /
348563683@qq.com

4. crt生成方法

CSR文件必须有CA的签名才可形成证书,可将此文件发送到verisign等地方由它验证,要交一大笔钱,何不自己做CA呢。

openssl x509 -req -days 3650 -in cert.csr -CA cert.crt -CAkey cert.key -CAcreateserial -out cert.crt

输入key的密钥后,完成证书生成。-CA选项指明用于被签名的csr证书,-CAkey选项指明用于签名的密钥,-CAserial指明序列号文件,而-CAcreateserial指明文件不存在时自动生成。

最后生成了私用密钥:server.key和自己认证的SSL证书:server.crt

证书合并:

cat cert.key cert.crt > cert.pem
cat server.key server.crt > cert.pem

1.8分别启动服务

启动turnserver服务

/usr/local/bin/turnserver --syslog -a -f --min-port=32355 --max-port=65535 --user=dds:123456 -r dds --cert=/cert/cert.pem --pkey==/cert/cert.pem --log-file=stdout -v

–syslog 使用系统日志
-a 长期验证机制
-f 使用指纹
–min-port 起始用的最小端口
–max-port 最大端口号
–user=dds:123456 turn用户名和密码
-r realm组别
–cert PEM格式的证书
–pkey PEM格式的私钥文件
-l, --log-file, 指定日志文件

查看端口占用 netstat -ntlp | grep

启动nginx服务

./usr/local/nginx/sbin/nginx

启动webrtc 服务

cd /root/webrtc/WebrtcNodeJS

node server

在后台运行的shell脚本

#!/bin/bash
/./usr/local/nginx/sbin/nginx
NODE=which node
nohup $NODE server.js & > log.txt
nohup /usr/local/bin/turnserver --syslog -a -f --min-port=32355 --max-port=65535 --user=dds:123456 -r dds --cert=/cert/cert.pem --pkey==/cert/cert.pem --log-file=stdout -v & > log.txt

基于WebRTC的音视频通话服务器搭建相关推荐

  1. 【复】基于 WebRTC 的音视频在线监考模块的设计与实现(上)

    文章目录 前言 什么是 WebRTC? WebRTC 架构 WebRTC 通讯内容 WebRTC 通讯协议 WebRTC 连接建立过程 后记 前言 最近在做关于考试系统的项目,其中有一项需求分析是要做 ...

  2. 运维初学者必备之SRS音视频服务器搭建

    运维初学者必备之SRS音视频服务器搭建 什么是srs音视频服务器? 答:SRS是一个流媒体集群,支持RTMP/HLS/HTTP-FLV/RTSP/DASH/WebRTC/SRT/GB28181,高效. ...

  3. 基于WebRTC实现音视频及数据通信

    文章目录 前言 一.WebRTC的组成? 二.信令交换的方式 三.会话描述 四.客户端应用 1.HTML 2.JavaScript 五.效果演示 六.项目地址 总结 前言 刚写了篇基于WebRTC使用 ...

  4. WebRTC:stun/turn服务器搭建

    基于coturn项目的stun/turn服务器搭建 VoIP (Voice over Internet Protocol), 一种语音通话技术,经由网际协议(IP)来达成语音通话与多媒体会议,也就是经 ...

  5. 微信小程序基于node.js的websocket服务器搭建和SSL证书申请、配置全家桶

    〇.前言 最近在研究微信小程序的开发,中间遇到了不少问题,趟了不少坑,这里和大家分享一下我的一些经验,希望能给大家提供一些帮助. 一.微信小程序的websocket服务器搭建 微信小程序的网络通信使用 ...

  6. 基于TCP/UDP的socket服务器搭建流程

    目录 TCP/UDP概念介绍 一.TCP/UDP对比 二.端口号的作用 三.字节序 1.概念 2.分类 3.C程序在内存空间的映射 socket服务器与客户端开发流程 一.流程介绍 二.socket服 ...

  7. freeswitch 使用sipjs 、jssip webrtc网页音视频通话

    关于linphone手机端开发参考基于linphone android sdk 的voip语音.视频通话 教程一.注册_Java_lilin的专栏-CSDN博客 配置帮助群:261074724 呼叫系 ...

  8. [Intel Edison开发板] 04、Edison开发基于nodejs和redis的服务器搭建

    一.前言 intel-iot-examples-datastore 是Intel提供用于所有Edison开发板联网存储DEMO所需要的服务器工程.该工程是基于nodejs和redis写成的一个简单的工 ...

  9. linux服务器搭建_基于LINUX系统的邮件服务器搭建和详细部署(POSTFIX)

    linux master调度所有的程序: master-->pickup/cleanup-->rewrite..... /etc/postfix/master.cf # ls /etc/p ...

最新文章

  1. 【238】◀▶IEW-Unit03
  2. matlab程序求一个正交的相似变换矩阵,图像的等距变换,相似变换,仿射变换,射影变换及其matlab实现...
  3. exe4j打包成可执行程序
  4. tomcat端口被占用了怎么办
  5. 有关windows firewall边缘遍历(Edge traversal)的一点信息
  6. 红外传感器的基础知识
  7. java的几个设计模式
  8. 数据仓库ETL工具箱——简介
  9. 计算机主板光驱插口,如何查看笔记本光驱位和主板的SATA接口版本
  10. React学习之进阶WEB组件(二十)
  11. 微软产品大升级:Surface Pro 6、Studio 2、Laptop 2 重磅来袭
  12. 移动硬盘不显示盘符修复方法
  13. html样式在ie显示不全,IE下css常见问题总结及解决
  14. eclipse mars2 安装web插件
  15. css3实现好看的边框效果
  16. 2019.9.2选择更新分离版
  17. 对于“你需要Administrator权限才能删除该文件”情况的处理办法
  18. 服务器安装macos虚拟机,windows服务器装macos虚拟机系统
  19. 使用python输出真值表
  20. Kotlin高阶函数及Lambda表达式实现接口回调

热门文章

  1. g711原理pcm转alaw,pcm转ulaw,alaw转pcm,ulaw转pcm
  2. MIT 6.S965 韩松课程 04
  3. ipython shell_IPython 1.0发布,强大的Python交互式Shell
  4. Outlook Express邮件丢失问题解决方法之一
  5. 【无标题】光纤收发器TX、RX分别表示什么?区分单纤双纤收发器的方法
  6. 2023.05.14十四届蓝桥杯青少组中高级组省赛Python
  7. 深度学习算法面试常问问题(二)
  8. Android Bluetooth蓝牙开发:发现Bluetooth蓝牙设备(1)
  9. 【外行也能看懂的RabbitMQ系列(二)】—— RabbitMQ的Web管理界面(rabbitmq_management)详解(内含Topic模式通配符实操)
  10. [附源码]计算机毕业设计Node.js应急物资管理系统(程序+LW)