1. 环境准备与基础配置在开始搭建直播推流环境之前我们需要确保服务器满足基本运行条件。我推荐使用CentOS 7.x或Ubuntu 20.04 LTS系统这两个版本在兼容性和稳定性方面表现最佳。实测下来2核4G配置的云服务器已经能够支撑10人左右的720P直播需求如果是企业级应用建议选择4核8G以上配置。宝塔面板的安装非常简单只需在终端执行以下命令以CentOS为例yum install -y wget wget -O install.sh http://download.bt.cn/install/install_6.0.sh sh install.sh安装完成后会显示面板访问地址和初始账号密码记得第一时间在面板设置中修改默认端口和密码。这里有个小技巧建议将默认的8888端口改为其他非标准端口可以有效减少自动化扫描攻击。安装完基础环境后我们需要处理几个关键依赖开发工具包yum groupinstall Development ToolsPCRE库yum install pcre-develOpenSSLyum install openssl-develzlib库yum install zlib-devel这些依赖是后续编译Nginx-RTMP模块的基础缺少任何一个都可能导致编译失败。我曾经因为漏装PCRE库折腾了半天所以特别提醒大家要检查清楚。2. Nginx-RTMP模块编译安装现在进入核心环节——为Nginx添加RTMP模块。宝塔面板自带的Nginx并不包含RTMP功能我们需要手动编译。这里有个重要提示操作前务必在宝塔面板的网站菜单中备份所有站点配置首先下载官方RTMP模块源码mkdir -p /www/server/nginx_plus cd /www/server/nginx_plus git clone https://github.com/arut/nginx-rtmp-module接下来修改宝塔的Nginx安装脚本vi /www/server/panel/install/nginx.sh找到大约337行的./configure部分在原有参数后面追加--add-module/www/server/nginx_plus/nginx-rtmp-module保存后执行重装命令以Nginx 1.22版本为例sh /www/server/panel/install/nginx.sh install 1.22编译过程可能需要10-30分钟取决于服务器性能。完成后用nginx -V检查输出中是否包含nginx-rtmp-module字样。3. 宝塔面板配置优化编译成功后我们需要在宝塔面板中进行多项配置。首先在Nginx主配置文件中添加RTMP服务段打开宝塔面板 → 软件商店 → Nginx → 配置修改在worker_rlimit_nofile 51200;下方添加rtmp { server { listen 1935; chunk_size 4000; application live { live on; record off; hls on; hls_path /www/wwwroot/live_stream/hls; hls_fragment 5s; hls_playlist_length 30s; } } }然后为HLS流创建存储目录并设置权限mkdir -p /www/wwwroot/live_stream/hls chown -R www:www /www/wwwroot/live_stream在安全组和宝塔防火墙中放行1935端口是很多新手容易忽略的步骤。我遇到过好几次推流失败都是因为这个端口没开所以特别提醒大家要双重检查云服务器控制台的安全组规则宝塔面板的防火墙设置4. 推流测试与性能调优配置完成后我们可以用OBS Studio进行测试。在OBS的设置 → 推流中填写服务器rtmp://你的服务器IP/live串流密钥任意填写如test123点击开始推流后可以通过以下命令查看实时状态tail -f /www/wwwlogs/nginx_error.log对于性能调优我总结了几点实战经验延迟优化将hls_fragment调整为3shls_playlist_length设为15s可以降低延迟但会增加服务器负载内存盘加速将hls_path挂载到内存盘能显著提升性能mount -t tmpfs -o size256M tmpfs /www/wwwroot/live_stream/hls工作进程调优在Nginx配置中设置worker_processes auto;让Nginx自动匹配CPU核心数如果观众反映卡顿可以通过Nginx日志分析瓶颈grep rtmp /www/wwwlogs/nginx_error.log | awk {print $1,$2,$NF}5. 常见问题解决方案在实际部署过程中有几个高频问题值得特别注意推流连接失败检查1935端口是否开放telnet 你的IP 1935确认Nginx RTMP服务正常运行ps aux | grep nginx测试本地防火墙规则iptables -L -nHLS流无法播放检查m3u8文件是否生成ls -lh /www/wwwroot/live_stream/hls验证文件权限namei -l /www/wwwroot/live_stream/hls/index.m3u8测试跨域配置是否正确add_header Access-Control-Allow-Origin *; add_header Access-Control-Allow-Methods GET, POST, OPTIONS;高并发优化方案 对于观众较多的场景建议开启Nginx的epoll模式调整worker_connections至4096启用gzip压缩减少带宽消耗考虑使用CDN分发HLS流6. 进阶配置与监控系统稳定运行后我们可以添加一些增强功能状态监控页面 在Nginx配置中添加location /stat { rtmp_stat all; rtmp_stat_stylesheet stat.xsl; } location /stat.xsl { root /www/server/nginx_plus/nginx-rtmp-module; }访问http://你的IP/stat即可查看实时推流数据。自动录制功能 在RTMP配置段中添加record all; record_path /www/wwwroot/live_stream/rec; record_unique on; record_suffix -%Y-%m-%d-%H_%M_%S.flv;日志分析脚本 可以定期运行这个脚本统计观看情况#!/bin/bash LOG_FILE/www/wwwlogs/access.log START_TIME$(date -d 1 hour ago %H:%M:%S) END_TIME$(date %H:%M:%S) awk -v start$START_TIME -v end$END_TIME $0 start $0 end $LOG_FILE \ | grep .m3u8 \ | awk {print $1} \ | sort | uniq -c | sort -nr这套环境在我负责的多个教育直播项目中运行稳定单台4核8G服务器最高支撑过200并发观看。关键是要根据实际业务需求灵活调整参数定期检查系统资源使用情况。遇到突发流量时及时启用备用服务器做负载均衡是最稳妥的方案。