一、go语言环境搭建
srs4.0安装需要go语言环境,所以如果服务器没有配置过go语言环境的话,需要先配置go语言环境。
下载安装包
官网:https://golang.google.cn/dl/
下载和解析:
[root@localhost opt] cd /usr/local/
[root@localhost local] wget https://dl.google.com/go/go1.16.5.linux-amd64.tar.gz --no-check-certificate
[root@localhost local] tar -C /usr/local -xzf go1.16.5.linux-amd64.tar.gz
配置 GOROOT 和 PATH环境变量,在/etc/profile
中配置。
vi /etc/profile
# 将环境变量添加到/etc/profile文件末尾。
export GOROOT=/usr/local/go
export PATH=$PATH:$GOROOT/bin:$GOBIN
使用 source /etc/profile 命令使配置文件生效
[root@localhost local] source /etc/profile
查看安装是否成功
[root@localhost local] go version
go version go1.16.5 linux/amd64
二、srs源码下载编译
我把源码下载到了/opt/
文件夹下
[root@VM-0-13-centos opt]# git clone -b 4.0release https://gitee.com/ossrs/srs.git
编译,注意需要切换到srs/trunk目录:
[root@VM-0-13-centos signaling]# cd /opt/srs/trunk
[root@VM-0-13-centos trunk]# ./configure
[root@VM-0-13-centos trunk]# make
编译信令服务器,信令服务在srs/trunk/3rdparty/signaling
文件夹下
[root@VM-0-13-centos trunk]# cd ./3rdparty/signaling
[root@VM-0-13-centos signaling]# make
三、启动srs和信令服务
修改rtc配置文件
vi /opt/srs/trunk/conf/rtc.conf
# WebRTC streaming config for SRS.
# @see full.conf for detail config.
listen 1935;
max_connections 1000;
daemon off;
srs_log_tank file;
srs_log_file /var/log/srs.log;
http_server {
enabled on;
listen 8080;
dir ./objs/nginx/html;
}
http_api {
enabled on;
listen 1985;
}
stats {
network 0;
}
rtc_server {
enabled on;
listen 8000; # UDP port
# @see https://ossrs.net/lts/zh-cn/docs/v4/doc/webrtc#config-candidate
candidate demo.com;
}
vhost __defaultVhost__ {
rtc {
enabled on;
# @see https://ossrs.net/lts/zh-cn/docs/v4/doc/webrtc#rtmp-to-rtc
rtmp_to_rtc off;
# @see https://ossrs.net/lts/zh-cn/docs/v4/doc/webrtc#rtc-to-rtmp
rtc_to_rtmp off;
}
http_remux {
enabled on;
mount [vhost]/[app]/[stream].flv;
}
}
主要修改的配置如下:
启动srs服务,路径/opt/srs/trunk
[root@VM-0-13-centos trunk]# ./objs/srs -c ./conf/rtc.conf &
默认端口是:1985
启动信令服务:
[root@VM-0-13-centos trunk]# nohup ./3rdparty/signaling/objs/signaling > /var/log/signaling.log & disown
默认端口是:1989
三、配置nginx代理
nginx安装
# 检查和安装nginx依赖
[root@localhost local]# yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
# 下载nginx
[root@localhost local]# wget http://nginx.org/download/nginx-1.13.7.tar.gz
# 解压并进入目录
[root@localhost local] tar -zxvf nginx-1.13.7.tar.gz
[root@localhost nginx-1.13.7] cd nginx-1.13.7/
# 创建nginx安装目录
[root@localhost nginx-1.13.7] mkdir /usr/local/nginx
# 配置,注意要配置安装ssl模块
[root@localhost nginx-1.13.7] ./configure --prefix=/usr/local/nginx/ --pid-path=/var/run/nginx.pid --with-http_ssl_module
# 编译和安装
[root@localhost nginx-1.13.7] make && make install
[root@localhost nginx-1.13.7] test -d
# 启动nginx
[root@localhost nginx-1.13.7] /usr/local/nginx/sbin/nginx
生成ssl证书
具体说明参考:https://www.cnblogs.com/pcx105/p/15434332.html
openssl genrsa -des3 -out server.key 2048 # 需要输入两次密码,至少四位
openssl rsa -in server.key -out server.key # 需要输入密码
openssl req -new -x509 -key server.key -out ca.crt -days 3650
openssl req -new -key server.key -out server.csr
openssl x509 -req -days 3650 -in server.csr -CA ca.crt -CAkey server.key -CAcreateserial -out server.crt
cat server.key server.crt > server.pem
修改nginx配置文件
server {
listen 80;
## 配置https
listen 443 ssl;
## 配置域名
server_name www.demo.com;
#charset koi8-r;
#access_log logs/host.access.log main;
## 配置证书
ssl_certificate /usr/local/nginx/conf/ssl/server.pem;
ssl_certificate_key /usr/local/nginx/conf/ssl/server.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
## srs提供的demo文件路径
location / {
root /opt/srs/trunk/objs/nginx/html/;
}
## 配置信令服务地址
location /sig {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_read_timeout 3600s;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://127.0.0.1:1989/sig;
}
## 配置rtc服务
location /rtc {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_pass http://127.0.0.1:1985;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
rtc服务端口是8000/udp,服务器需要放开该端口。
firewall-cmd --zone=public --add-port=8000/udp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent
firewall-cmd --reload
因为webrtc必须在https、或localhost环境下才能访问,所以外网访问需要配置ssl,如果是在外网环境搭建,那么证书可以去阿里云购买,或申请免费的,服务都启动完成之后直接访问域名即可访问webrtc的测试页面。
如果是在vm虚拟机上搭建的测试环境,则需要生成证书,证书生成完成后,在nginx上配置即可
四、测试
访问测试页面:
https://192.168.127.128/
![image]()
点击进入srs播放器
推流
![image]()
拉流
![image]()