运维教程

部署、升级、备份、监控——rsSites 的日常运维操作指南。

部署架构

一份编译好的二进制可以部署为多个完全独立的实例,每个实例自己一套目录、自己一份配置、自己一个数据库,互不感知。单个实例的目录结构:

升级流程

  1. 新版本二进制解压到该实例的 releases/<hash>/ 下
  2. 跑一次 rssites migrate 确认迁移成功
  3. 将 current 符号链接指向新版本
  4. 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 服务安装运行。