DJM CMS 是什么:高性能、高安全的 Go 内容管理系统

从性能、安全、模板与插件机制出发,了解 DJM CMS 适合解决什么问题。

DJM CMS 是一套用 Go 编写的内容管理系统。它把“内容结构、前台渲染、扩展能力、后台运营”放在同一套可独立部署的服务里,并且安装时可以选择 SQLite 单文件数据库,也可以连接 MySQL——不需要先准备 MySQL。

一套可独立部署的内容系统

发布包内已经包含编译好的 Go 程序、模板和迁移脚本。默认监听 127.0.0.1:23180,不直接暴露到公网,由 Nginx 负责域名、HTTPS 和静态缓存。

SQLite 与 MySQL 双数据库

首次启动时会在 storage/database/djm.sqlite 创建数据库文件。备份时复制这个文件即可,迁移服务器也不用导出 SQL。只有当站点需要多实例同时写入、或数据量明显增长时,才建议切换 MySQL 8.0+;切换通过 database.driver 配置完成。

核心能力

  • 内容模型:内置文章、单页、产品、图集、下载五种模型,也可以创建自定义模型与字段。
  • 栏目体系:无限级栏目、独立 SEO、访问范围、外部链接与单页正文。
  • 模板引擎:42 个内置标签,通过 arclist、list、field 等标签直接渲染数据。
  • 主题与插件:主题是纯文件目录,插件运行在受限沙箱中,升级不覆盖业务内容。
  • 运营能力:定时发布、专题、会员、评论、广告位、友情链接、备份与在线更新。

技术架构

层次实现
HTTP 服务Go 标准库 + Echo 风格路由,前后台统一进程
数据存储SQLite(单文件)或 MySQL 8.0+,安装时选择
模板自定义 AST 解析器,编译期校验标签、属性与包含关系
插件Starlark 沙箱,清单声明权限、后台入口与模板标签
部署单二进制 + releases/current 版本目录,支持原子切换

性能与安全

  • 性能:Go 单进程运行时、受控索引与稳定 ID 窗口、页面缓存和多实例缓存失效,减少数据库压力与页面等待。
  • 安全:管理员会话与 CSRF、角色权限与内容范围、富文本服务端白名单、评论限频和审计日志,按最小权限运行。
  • 模板:42 个内置标签覆盖导航、列表、分页、详情字段和标签;主题是文件目录,可以在后台编辑并即时校验。
  • 插件:运行在受限沙箱中,清单声明权限、后台入口和模板标签,停用或升级不会改动核心内容。

适合谁

如果你希望内容结构可控、部署链路简单、模板可以直接改,而不是被封闭的 SaaS 或复杂的技术栈绑定,DJM CMS 会是一个合适的选择。下一步可以从本地运行开始,或者直接阅读宝塔部署指南。

继续阅读

快速开始 本地运行 DJM CMS 的最短路径(SQLite / MySQL 可选)

讨论