运维教程
部署、升级、备份、监控——rsSites 的日常运维操作指南。
部署架构
一份编译好的二进制可以部署为多个完全独立的实例,每个实例自己一套目录、自己一份配置、自己一个数据库,互不感知。单个实例的目录结构:
/opt/rssites/<instance>/current—— 当前版本的二进制(符号链接,指向下面 releases 里的某一版)/opt/rssites/<instance>/releases/<hash>—— 各版本的二进制/opt/rssites/<instance>/config.toml—— 实例配置/opt/rssites/<instance>/app/—— 模板、admin-spa 构建产物/opt/rssites/<instance>/public/—— 用户上传文件
升级流程
- 新版本二进制解压到该实例的
releases/<hash>/下 - 跑一次
rssites migrate确认迁移成功 - 将
current符号链接指向新版本 systemctl restart rssites@<instance>重启这一个实例
迁移是单独一步、显式执行,不是服务启动时顺带自动跑——迁移失败和服务起不来是两类不同的故障,分开看更容易定位问题。
备份与恢复
内置备份
数据库全量 + 附件增量备份内置在后台管理里,定时自动跑也可以随时手动触发,备份记录列表里能看到每一次的时间和状态,恢复也是后台点一下的事。
异地容灾
备份文件默认落在本机磁盘上,不依赖任何第三方云存储。如果需要异地容灾,可以自行配合 rsync 之类的工具把备份目录同步到另一台机器,这部分不是 rsSites 内置能力,按你自己的运维习惯来就行。
Nginx 反向代理
rsSites 生产环境默认监听 0.0.0.0:8080(开发环境是 3000)。生产环境建议在前端放置 Nginx 处理静态文件服务和域名路由。安装脚本会自动生成基础 Nginx 配置模板。
日志与监控
rsSites 使用 tracing 输出结构化日志(开发环境 pretty 格式,生产环境 JSON 格式),支持按天切分,还会单独落一份只含 ERROR 级别的日志文件方便告警脚本盯着。可通过 config.toml 的 [log] 段配置日志级别、格式、是否开启。
核心机制解析
下面从代码实现角度,梳理运维相关机制的工作原理。
备份、健康与调度
备份模块负责设置(定时 / 保留天数)、记录列表与即时备份,恢复时对数据库做整体覆盖、对附件做整体替换,并先探测环境里的 pg_dump / psql 是否可用。系统对外暴露 /api/health、/api/health/ready(含 DB / Redis 探活)与 /api/meta(返回 is_dev、instance_id),供监控与存活检测使用;后台 Dashboard 聚合子站与平台双首页数据(待审、PV、未读、趋势、站点状态)。
这些周期性工作由调度器统一驱动:每日备份、每小时 / 每日统计聚合、敏感词全量扫描都在 jobs 模块中按周期触发,无需人工介入。
同一二进制,既是服务也是工具
rsSites 的单个二进制默认以 Web 服务运行(serve),同时内置一批运维子命令:migrate、verify-config、bootstrap-platform-admin、backup-now、restore-db / files,以及 user / site / member / content / template / category、export / import,多数支持 --dry-run 先预演再执行。版本信息(二进制版本号、Git 哈希、SHA-256 摘要)与 admin-spa 构建元信息一并暴露,既给健康端点与遥测使用,也方便回滚时确认实例身份。开发环境设 ENV=dev 时,系统返回详细错误、验证码明文、后台显示 DEV 角标并跳过部分登录锁定,降低本机联调成本。在 Windows 上,二进制实现了 SCM 握手协议,可直接作为 Windows 服务安装运行。