关于 Gbootcms
Gbootcms 是基于 PbootCMS 3.2.12 的 Go 语言移植版,保留原版数据库结构(ay_ 前缀)、模板语法、URL 路由规则和后台 UI(Layui),用 Go 技术栈替换 PHP 后端,实现单二进制部署、毫秒级启动和低内存占用。
核心优势
- 单二进制部署 — 无需 PHP 环境,编译后直接运行,跨平台支持 Windows/Linux/macOS
- 零 CGO 依赖 — 使用 glebarez 纯 Go SQLite 驱动,无需安装 GCC
- 100% 数据库兼容 — 表结构与 PbootCMS PHP 版 1:1 对应,可双向迁移
- 双模板引擎 — 后台 pongo2(Django 风格)+ 前台自研 TagParser({gboot:xxx} 标签 + 热重载)
- 多语言支持 — 繁体中文、简体中文、英文三语前台模板,后台区域管理
已实现功能
后台管理
- 管理员登录/登出(密码 bcrypt + 双 MD5 向后兼容 + 验证码 + 登录锁定)
- 内容管理:文章/产品增删改查、批量排序、扩展字段、ext_ 自定义字段
- 栏目管理:树形结构、自定义 URL、模板选择
- 单页管理、站点信息、公司信息
- 幻灯片、友情链接、自定义标签、内链标签
- 内容模型、扩展字段、自定义表单(含 Turnstile 人机验证)
- 媒体库(图片管理)、留言管理
- 系统配置(70+ 配置项)、菜单管理、角色权限(RBAC)
- 用户管理、数据库备份、系统日志、区域管理
- 会员管理:会员列表/等级/字段/评论(含批量操作、Excel 导出)
前台展示
- 首页(轮播图、导航、产品展示)
- 列表页(分页、ext_ 筛选、子分类导航)
- 内容详情页(扩展字段、面包屑、上一篇/下一篇、访问量统计)
- 搜索页、标签页、留言页、单页
- 模板热重载(fsnotify)、.html 伪静态 URL
- 会员系统:登录/注册/登出/个人中心/资料修改/密码找回
- 评论系统:提交/列表/我的评论/删除
- Cloudflare Turnstile 人机验证整合
安全防护
- XSS 过滤(FilterUserInput,对齐 PbootCMS filter())
- SQL 注入防护(标识符白名单验证 + GORM 参数化查询)
- CSRF token 防护(32字节 crypto/rand)
- Session TTL 机制(24h 最大生命 + 2h 闲置超时 + 定期清理)
- Session Fixation 防护(登录时重新生成 Session ID)
- RBAC 细粒度权限校验(菜单过滤 + URL 级拦截)
- 密码 bcrypt 加密(含双 MD5 向后兼容 + 登录自动升级)
- 安全随机数(crypto/rand 用于验证码、文件名、ucode)
技术栈
| 层次 | 选型 | 说明 |
|---|
| 语言 | Go 1.25 | 单二进制部署,无需 CGO |
| Web 框架 | Gin v1.12 | 路由、中间件、请求处理 |
| ORM | GORM v1.31 | AutoMigrate,ay_ 前缀 |
| 数据库 | SQLite (glebarez 纯 Go) | 无需安装 CGO/GCC |
| 后台模板 | Pongo2 v6.1 | Django 风格 + PbootCMS 语法转换器 |
| 前台模板 | 自研 TagParser | {gboot:xxx} 标签 + fsnotify 热重载 |
| 后台 UI | Layui 2.5.4 + jQuery 1.12.4 | 与 PbootCMS 原版一致 |
| 配置 | Viper v1.21 | 环境变量前缀 PBOOTCMS_GO_ |
| 日志 | log/slog (stdlib) | 结构化日志 |
快速开始
# 编译(产物输出到 bin/)
go build -o bin/gbootcms.exe .
# 运行
.in\gbootcms.exe
# 前台:http://localhost:8080/
# 后台:http://localhost:8080/admin
# 预设账号:admin / 123456
开源协议
本项目采用 Apache License 2.0 开源。PbootCMS 原项目同样采用 Apache License 2.0,感谢其优秀的设计和广泛的用户基础。
Gbootcms — 保留 PbootCMS 的灵魂,拥抱 Go 的速度。