Ubuntu20.04下SRS流媒体服务器一键安装与自启动配置(避坑指南)
Ubuntu 20.04下SRS流媒体服务器高效部署与自启动优化指南
在视频直播和实时通信技术快速发展的今天,SRS(Simple Realtime Server)作为一款开源的流媒体服务器,因其轻量级和高性能的特点,成为众多开发者的首选。本文将深入探讨如何在Ubuntu 20.04系统上快速部署SRS服务器,并解决自启动配置中的常见问题,帮助开发者避开那些令人头疼的"坑"。
1. 环境准备与SRS安装
在开始安装之前,我们需要确保系统环境满足SRS的基本要求。Ubuntu 20.04作为长期支持版本,提供了稳定的基础,但还需要一些额外的开发工具。
首先更新系统并安装必要的依赖:
sudo apt update && sudo apt upgrade -y sudo apt install -y build-essential cmake gitSRS提供了多种安装方式,从源码编译安装可以获得最新功能和最佳性能。以下是详细的编译安装步骤:
克隆SRS仓库(推荐使用国内镜像加速下载):
git clone -b 4.0release https://gitee.com/ossrs/srs.git进入项目目录并配置:
cd srs/trunk ./configure使用多核编译加速构建过程:
make -j$(($(nproc)-1))
提示:编译过程中如果遇到依赖问题,可以尝试安装
libssl-dev和zlib1g-dev等常见开发库。
安装完成后,可以通过以下命令测试SRS是否正常运行:
./objs/srs -c conf/srs.conf验证服务是否启动成功:
- 浏览器访问
http://localhost:8080/ - 或者查看实时日志:
tail -f ./objs/srs.log
2. SRS基础配置优化
默认配置可能不适合所有场景,我们需要根据实际需求调整SRS的参数。以下是几个关键配置项的说明:
| 配置项 | 默认值 | 推荐值 | 说明 |
|---|---|---|---|
| listen | 1935 | 自定义 | RTMP服务端口 |
| http_server | 启用 | 按需 | HTTP API服务 |
| hls | 禁用 | 按需 | HLS切片功能 |
| rtc | 禁用 | 启用 | WebRTC支持 |
典型的配置修改示例(conf/srs.conf):
listen 1935; max_connections 1000; http_server { enabled on; listen 8080; dir ./objs/nginx/html; } rtc { enabled on; listen 8000; }对于需要支持WebRTC的场景,还需特别注意以下参数:
./configure --with-rtc=on make clean && make3. 系统服务集成与自启动配置
让SRS随系统自动启动是生产环境的基本要求。Ubuntu 20.04使用systemd作为初始化系统,我们需要创建相应的服务单元文件。
3.1 官方安装方式
最简单的方法是使用SRS提供的安装脚本:
sudo make install这将自动设置systemd服务,但在某些自定义安装路径情况下可能会出现问题。
3.2 手动配置systemd服务
对于自定义安装路径,推荐手动创建服务文件。首先准备服务定义文件:
sudo nano /etc/systemd/system/srs.service文件内容示例:
[Unit] Description=SRS Media Server After=network.target [Service] Type=forking ExecStart=/usr/local/srs/objs/srs -c /usr/local/srs/conf/srs.conf ExecReload=/bin/kill -HUP $MAINPID ExecStop=/bin/kill -QUIT $MAINPID Restart=always User=root WorkingDirectory=/usr/local/srs [Install] WantedBy=multi-user.target关键配置说明:
- WorkingDirectory:必须设置为SRS的安装目录
- ExecStart:指定srs二进制文件和配置文件的全路径
- Type=forking:告知systemd这是一个后台服务
完成配置后执行:
sudo systemctl daemon-reload sudo systemctl enable srs sudo systemctl start srs验证服务状态:
systemctl status srs3.3 解决常见路径问题
当遇到服务启动失败时,90%的问题都与路径配置有关。以下是排查步骤:
检查服务日志:
journalctl -u srs -xe确认二进制文件和配置文件路径:
ls -l /usr/local/srs/objs/srs ls -l /usr/local/srs/conf/srs.conf如果使用自定义路径,确保systemd服务文件中的路径与实际一致
对于从源码编译直接运行的场景(非make install),可以采用软链接方式:
sudo ln -sf /path/to/srs/trunk/etc/init.d/srs /etc/init.d/srs sudo cp -f /path/to/srs/trunk/usr/lib/systemd/system/srs.service /lib/systemd/system/ sudo systemctl daemon-reload4. 高级配置与性能调优
SRS提供了丰富的配置选项来满足不同场景的需求。以下是一些值得关注的高级配置技巧。
4.1 多进程与负载均衡
对于高并发场景,可以配置SRS以多进程模式运行:
# conf/srs.conf worker_processes 4; worker_cpu_affinity 0001 0010 0100 1000;4.2 日志与监控配置
合理的日志配置有助于问题排查:
srs_log_tank file; srs_log_file ./objs/srs.log; srs_log_level trace;集成Prometheus监控:
./configure --with-prometheus=on配置示例:
http_api { enabled on; listen 1985; } stats { network 0; disk sda,vda; }4.3 安全加固建议
生产环境必须考虑的安全措施:
- 修改默认HTTP API端口和RTMP端口
- 配置HTTP API访问权限:
http_api { enabled on; listen 1985; auth { enabled on; username admin; password your_strong_password; } } - 启用SSL/TLS加密:
配置示例:./configure --with-ssl=onrtmp { listen 1935; ssl_listen 1936; ssl_certificate ./conf/server.crt; ssl_certificate_key ./conf/server.key; }
5. 常见问题解决方案
在实际部署过程中,开发者常会遇到一些典型问题。以下是经过验证的解决方案。
5.1 端口冲突处理
如果遇到端口被占用的情况,可以:
查找占用端口的进程:
sudo lsof -i :1935 sudo netstat -tulnp | grep 1935终止冲突进程或修改SRS配置使用其他端口
5.2 服务启动失败排查
当systemctl start srs失败时,按顺序检查:
配置文件语法:
/usr/local/srs/objs/srs -t -c /usr/local/srs/conf/srs.conf文件权限:
sudo chmod -R 755 /usr/local/srs/objs/srs依赖库:
ldd /usr/local/srs/objs/srs
5.3 性能问题优化
对于高并发场景下的性能瓶颈,可以考虑:
调整Linux内核参数:
echo 'net.core.somaxconn = 2048' >> /etc/sysctl.conf echo 'fs.file-max = 65535' >> /etc/sysctl.conf sysctl -p优化SRS配置参数:
worker_processes auto; events { worker_connections 10240; }启用TCP快速打开:
tcp_nodelay on; tcp_fastopen on;
在最近的一个直播项目中,我们通过调整worker_connections和优化内核参数,成功将单台服务器的并发连接数从3000提升到了8000,这充分证明了合理配置的重要性。
