5分钟极速部署SRS流媒体服务器Docker与防火墙联动手册当直播带货成为新零售标配当在线教育渗透每个家庭流媒体服务器的部署效率直接决定业务上线速度。传统编译安装动辄半小时的等待在快节奏的互联网时代显得格格不入。本文将演示如何用Docker在CentOS 7上闪电部署SRS流媒体服务器并解决80%用户会遇到的防火墙端口配置难题。1. 环境准备最小化CentOS 7配置在开始前请确保您的CentOS 7系统已进行基础优化# 更新系统并安装必要工具 yum update -y yum install -y yum-utils device-mapper-persistent-data lvm2推荐配置2核CPU及以上4GB内存推流场景建议8GB带宽≥10Mbps高清推流需50Mbps生产环境建议关闭SELinuxsetenforce 0并修改/etc/selinux/config中SELINUXdisabled2. Docker化部署SRS全流程2.1 一键安装Docker引擎# 添加Docker官方仓库 yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo # 安装社区版 yum install -y docker-ce docker-ce-cli containerd.io # 启动并设置开机自启 systemctl start docker systemctl enable docker验证安装docker --version # 输出应类似Docker version 20.10.17, build 100c7012.2 单命令启动SRS容器使用阿里云镜像仓库的官方镜像docker run -d --name srs \ -p 1935:1935 -p 1985:1985 -p 8080:8080 \ -v /opt/srs/conf:/usr/local/srs/conf \ registry.cn-hangzhou.aliyuncs.com/ossrs/srs:4 \ ./objs/srs -c conf/srs.conf端口作用说明端口协议用途1935RTMP推流/拉流主端口8080HTTPHLS/HTTP-FLV播放端口1985HTTPAPI管理端口2.3 验证服务状态# 查看容器日志 docker logs -f srs # 进入容器检查进程 docker exec -it srs bash ps aux | grep srs正常输出应包含SRS server started3. 防火墙配置深度解析3.1 firewalld基础操作# 查看默认区域 firewall-cmd --get-default-zone # 开放端口永久生效 firewall-cmd --permanent --add-port1935/tcp firewall-cmd --permanent --add-port8080/tcp firewall-cmd --permanent --add-port1985/tcp # 重载配置 firewall-cmd --reload3.2 端口测试技巧使用nc命令验证端口可达性# 服务器自测 yum install -y nc nc -zv localhost 1935 # 客户端测试替换SERVER_IP nc -zv SERVER_IP 1935常见问题排查如果本地通但外网不通检查云服务商安全组规则出现No route to host需检查网络链路4. 推拉流实战案例4.1 OBS推流配置参数设置服务器URLrtmp://your_server_ip/live流密钥自定义字符串如test123高级设置建议视频码率2000-6000Kbps根据网络调整关键帧间隔2秒编码预设veryfast4.2 Python自动化推流import cv2 import subprocess rtmp_url rtmp://your_server_ip/live/stream_key cap cv2.VideoCapture(0) # 摄像头设备号 # 推流参数硬编推荐 command [ ffmpeg, -y, -an, -f, rawvideo, -vcodec,rawvideo, -pix_fmt, bgr24, -s, 1280x720, # 分辨率 -r, 30, # 帧率 -i, -, -c:v, libx264, -preset, fast, -f, flv, rtmp_url ] process subprocess.Popen(command, stdinsubprocess.PIPE) while cap.isOpened(): ret, frame cap.read() if not ret: break process.stdin.write(frame.tostring())4.3 多终端播放方案播放地址格式RTMP原生rtmp://server_ip/live/stream_keyHTTP-FLVhttp://server_ip:8080/live/stream_key.flvHLShttp://server_ip:8080/live/stream_key.m3u8播放器推荐VLC全协议支持ffplayffplay http://server_ip:8080/live/stream_key.flv网页播放器flv.js/hls.js5. 性能优化与监控5.1 容器资源限制docker update srs \ --cpus 2 \ --memory 4g \ --memory-swap 4g5.2 日志分析命令# 查看实时带宽 docker exec srs ./objs/srs -c conf/srs.conf 21 | grep ingest # 统计客户端连接数 netstat -anp | grep 1935 | wc -l5.3 高可用方案多节点部署架构边缘节点推流到中心SRS中心节点转推到CDN使用Nginx做负载均衡rtmp { server { listen 1935; application live { live on; push rtmp://center_node/live/$name; } } }