關於 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 的速度。