拿到现成的短视频源码,如果自带Docker Compose配置文件是最省心的,一条命令就能部署启动。但实际操作大多不会这么顺利。源码附带文档里写的环境要求部分,建议仔细通读一遍,版本只要差一点就容易出现各类报错。PHP 7.2和7.4在部分框架下运行表现不一样,Node.js 16和18编译打包出来的前端资源也可能存在兼容问题。服务器配置要提前确定,4核8G算是比较稳妥的起步规格,系统优先选CentOS 7.x或者Ubuntu 20.04,兼容性更好,硬盘容量最少预留100G,视频文件占用空间增长很快。
环境全部装好之后不要急着启动项目,先完整浏览文档。重点确认四项内容:数据库配置文件存放位置、后台访问地址、初始管理员账号密码,还有源码对FFmpeg版本的硬性要求。不少源码文档写得很简略,只标注按需自行配置,这种情况就得手动翻阅源码查找配置。PHP项目的数据库配置一般放在config/database.php或是.env文件,Java项目查找application.yml,Node项目查看config目录下的JSON、JS格式配置文件。把数据库IP、账号、密码、库名替换成自己服务器对应的信息,这一步配置出错,打开网站就会出现白屏或者500错误。

FFmpeg可以说是短视频系统能否正常运行的关键,视频转码、截图、生成封面、切片处理全都依赖它。安装完成后执行which ffmpeg查看程序路径,再把查到的路径填写到源码配置项。有些源码默认写死路径为/usr/bin/ffmpeg,但使用系统包管理器安装的FFmpeg路径大概率是/usr/local/bin/ffmpeg,路径不匹配会直接导致转码任务失败。转码队列进程是另一个高频踩坑点。基于Laravel开发的项目需要执行php artisan queue:work,并且依靠Supervisor做进程守护,一旦进程中断,用户上传的视频就会一直卡在转码状态。如果是ThinkPHP或者自研队列体系的项目,找到对应的队列启动命令,设置开机自动运行。
数据库导入看着简单,但导入完成之后要登录后台检查初始数据是否正常。部分源码附带的SQL文件里面预置了演示视频链接,指向源码作者原先的服务器地址。这类外链迟早失效,打开短视频列表就会空白或者弹出403提示。登录后台清理掉演示数据,替换成自己的资源,最低限度也要把这些外部链接修改成本地存储路径。对象存储建议部署初期就配置好,阿里云OSS、腾讯云COS都可以,把AccessKey、SecretKey、Bucket名称和Endpoint区域信息填写完整,视频资源就不会持续占用服务器本地硬盘空间。
后台访问地址一般是域名后面拼接/admin或者/manage,默认账号密码大多为admin/admin,登录后台第一件事就是修改密码。后台有几项核心配置不能漏掉:支付接口回调地址,微信、支付宝支付都需要公网可访问地址接收异步通知,地址填写错误,用户完成付款之后系统识别不到订单;短信验证码配置,如果源码自带注册短信验证功能,需要填入阿里云或者腾讯云的短信密钥,不配置的话用户收不到验证码,注册流程直接中断;播放器域名白名单,部分源码使用第三方播放器SDK,要在对应的服务商控制台添加网站域名,不然视频无法加载播放。
伪静态规则和网站运行目录的问题,在PHP项目里出现概率最高。如果源码基于ThinkPHP或者Laravel开发,网站运行目录一般要设置成public,伪静态规则选择框架对应的模式。宝塔面板里这两项不在同一个设置页面,运行目录在网站设置板块,伪静态单独在另一个标签页,两项都配置正确网站才能正常访问。防跨站攻击选项open_basedir偶尔会拦截正常的文件读写操作,日志出现“open_basedir restriction in effect”报错时,可以临时关闭防跨站测试,确认是该项引发问题后,再把需要读写的目录加入白名单,不要长期关闭这个安全选项。
部署全部完成之后,拿手机打开网站或者App注册账号,上传一条视频,完整走一遍全部业务流程:上传是否成功、转码任务能否触发、视频列表能否正常展示、播放是否流畅,评论点赞功能和后台内容管理是否正常。哪个环节报错,就去查看对应日志。Nginx的error_log查看网页请求报错,应用日志查看框架抛出的异常,队列日志排查转码任务。短视频系统搭建难点不在于部署基础环境,而是打通上传、转码、存储、播放整套链路。链路跑通之后,后续做功能扩展和界面定制才有基础。