环境准备:Linux 服务器基础操作与云服务器选购
说实话,推流部署这件事,七成以上的坑都出在环境上。我自己带团队时,见过太多人把精力花在配置推流参数上,结果服务器连 SSH 都连不上,或者安全组把端口全封了——那真是白忙活。
这一章,咱们就把地基打牢。你跟着我走一遍,保证后面推流的时候不慌。
SSH 连接:你的第一把钥匙
拿到一台 Linux 服务器,第一件事就是连上去。SSH 是标配,没什么好说的。但我发现很多新手会卡在「连不上」这个问题上。
核心命令就这一条:
ssh -i /path/to/key.pem root@你的服务器IP -p 22
如果你用的是云厂商的默认密码,那就更简单了:
ssh root@你的服务器IP
嗯,这里要注意几个细节。我刚开始做运维时,经常被「Permission denied」搞到怀疑人生。后来发现,八成是密钥权限没设对。
我的习惯:拿到密钥文件后,先跑一句:
chmod 400 /path/to/key.pem
密钥权限必须是 400 或 600,否则 SSH 直接拒绝你。这是安全机制,不是 bug。
还有一个坑——第一次连接时,SSH 会问你要不要保存主机指纹。很多人直接敲 yes,但如果你换了服务器或重装了系统,指纹会变。这时候会报「WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED」。别慌,删掉旧的指纹就行:
ssh-keygen -R 你的服务器IP
我曾经因为没删旧指纹,在客户现场折腾了半小时,最后发现就是这么简单的事。你说冤不冤?
文件操作:别用鼠标了,用键盘
在 Linux 上操作文件,说白了就是几个命令来回用。我列个表,你记牢就行。
| 操作 | 命令 | 说明 |
|---|---|---|
| 查看目录 | ls -la |
显示所有文件,包括隐藏的 |
| 切换目录 | cd /path/to/dir |
绝对路径或相对路径都行 |
| 创建目录 | mkdir -p a/b/c |
-p 可以一次性创建多级目录 |
| 复制文件 | cp source dest |
加 -r 复制目录 |
| 移动/重命名 | mv old new |
同一个目录下就是重命名 |
| 删除文件 | rm -rf target |
慎用!没有回收站 |
| 查看文件 | cat / less / tail |
tail -f 实时看日志 |
我曾经犯过的错:在线上服务器跑 rm -rf /,结果把整个系统删了。还好那是测试机。记住,rm -rf 后面一定要确认路径,尤其是通配符和变量展开的时候。
上传下载文件,我推荐用 scp 或 rsync。推流配置文件和视频素材经常要传,用这个最稳:
# 从本地传到服务器
scp -i key.pem local_file root@IP:/remote/path/
# 从服务器拉下来
scp -i key.pem root@IP:/remote/file ./local_dir/
如果你要传大量小文件,用 rsync。它只传变化的部分,省时间:
rsync -avz -e "ssh -i key.pem" ./local_dir/ root@IP:/remote_dir/
进程管理:让推流服务跑起来
推流本质上是一个长期运行的进程。你想想看,如果进程挂了,直播就断了。所以管理进程是必修课。
先看几个常用命令:
ps aux—— 列出所有进程,看 PID 和状态top或htop—— 实时看 CPU、内存占用kill -9 PID—— 强制杀掉进程(慎用)nohup command &—— 让进程在后台跑,退出终端也不停
推流部署的典型场景:你启动了一个 FFmpeg 推流进程,然后关掉终端,结果推流停了。为什么?因为进程收到了 SIGHUP 信号。
解决方案:用 nohup 或 screen / tmux。
nohup ffmpeg -i input -f flv rtmp://your-server/live/stream > ffmpeg.log 2>&1 &
这样就算你退出 SSH,推流也不会断。
我个人更推荐用 tmux。它比 nohup 灵活,可以随时重新连回去看日志:
# 启动 tmux 会话
tmux new -s push
# 在里面跑推流命令
ffmpeg -i input -f flv rtmp://...
# 按 Ctrl+B 然后按 D 分离会话
# 下次连上来,重新附加
tmux attach -t push
我在生产环境里,所有推流进程都用 tmux 管理。方便排查问题,也方便重启。
云服务器选购:别花冤枉钱
选云服务器,说白了就是看你的推流场景。我列个对照表,你照着选就行。
| 场景 | 推荐配置 | 带宽要求 | 备注 |
|---|---|---|---|
| 单路 1080p 推流 | 2 核 4G | 10Mbps 上行 | 入门级就够了 |
| 多路转码 + 推流 | 4 核 8G | 50Mbps 上行 | 建议用 Intel 或 AMD 高主频 |
| 大规模直播集群 | 8 核 16G 起步 | 100Mbps+ | 考虑负载均衡和 CDN |
我的建议:新手先买按量付费的实例,测试完了再转包年包月。别一上来就买三年,万一配置选错了,退都退不掉。
选云厂商时,注意三点:
- 地域:离你的观众近一点,延迟会低。国内就选华东、华北、华南。
- 操作系统:推荐 Ubuntu 20.04 或 CentOS 7/8。我习惯用 Ubuntu,软件源更新快。
- 数据盘:推流日志和录像文件很占空间,建议单独挂一块数据盘,至少 50G。
安全组配置:别把门全打开
安全组就是云服务器的防火墙。你配置错了,要么连不上,要么被人黑。我见过最离谱的案例——有人把 0.0.0.0/0 的 22 端口开着,结果服务器被暴力破解,成了矿机。
推流服务需要开放的端口,我整理了一下:
| 端口 | 协议 | 用途 | 建议来源 |
|---|---|---|---|
| 22 | TCP | SSH 管理 | 只允许你的办公 IP |
| 80/443 | TCP | HTTP/HTTPS 播放 | 0.0.0.0/0 |
| 1935 | TCP | RTMP 推流 | 推流端 IP 或 0.0.0.0/0 |
| 8080 | TCP | Web 管理界面 | 只允许内网或办公 IP |
避坑指南:我曾经把 RTMP 端口 1935 只对推流端开放,结果观众拉流也走这个端口,全被拦了。后来才搞清楚,拉流走的是 HTTP 或 RTMP 的播放端口。所以,推流和拉流的端口要分开配置。
安全组配置的原则就一句话:最小权限原则。能不开的端口就不开,能限制 IP 就限制 IP。你想想看,一个推流服务器,除了推流和播放,根本不需要对外暴露其他服务。
本章知识体系
下面这张图,把这一章的核心逻辑串起来了。你保存下来,以后忘了就看看。
这一章的内容,说白了就是让你能「连得上、传得动、管得住、选得对、防得牢」。后面我们开始装推流软件的时候,这些基础操作会反复用到。你先把这些命令敲熟,后面就顺了。