SentCMS 是基于 ThinkPHP 6.x 的内容管理系统,采用单应用架构,通过控制器命名空间划分四个模块:后台管理(admin)、前台展示(front)、用户中心(user)、API接口(api)。
项目地址:https://gitee.com/sentcms/sentcms
环境要求
生产环境推荐:Linux + Nginx + PHP-FPM + MySQL。
快速安装
# 克隆项目
git clone https://gitee.com/sentcms/sentcms.git sentcms
cd sentcms
# 安装依赖
composer install
# 配置环境变量
cp .example.env .env
# 编辑 .env 文件,填写数据库连接信息
将网站根目录指向 public/,然后访问 http://你的域名/install.php 完成安装。
URL 伪静态必须开启,否则路由无法正常工作。Apache 用户使用
public/.htaccess,Nginx 用户需自行配置 rewrite 规则。
目录结构
├─ addons/ 扩展插件目录
├─ app/ 应用核心代码
│ ├─ controller/ 控制器
│ │ ├─ admin/ 后台管理控制器(权限控制、RBAC)
│ │ ├─ api/ API 接口控制器(JWT 认证)
│ │ ├─ front/ 前台展示控制器(公开访问)
│ │ └─ user/ 用户中心控制器(Session 认证)
│ ├─ http/ HTTP 服务层
│ │ ├─ form/ 自定义表单引擎
│ │ ├─ middleware/ 中间件(Admin, Api, ApiAuth, Validate)
│ │ └─ validate/ 自动验证器
│ ├─ model/ 数据模型(按业务域分目录)
│ ├─ services/ 业务逻辑服务层
│ └─ common.php 全局辅助函数
├─ config/ 应用配置文件
├─ extend/ 自定义类库
│ ├─ com/ Database, Datatable, Sent 标签库, Version
│ └─ doc/ 文档注释解析器
├─ public/ 网站根目录(对外访问)
│ ├─ static/ 静态资源(CSS/JS/图片/插件)
│ ├─ template/ 前台主题模板目录
│ ├─ uploads/ 上传文件目录
│ ├─ index.php 入口文件
│ └─ install.php 安装向导
├─ route/
│ └─ app.php 路由定义(含动态内容模型路由)
├─ view/ 后台视图模板
│ └─ admin/ 后台管理界面模板
├─ runtime/ 运行时目录(缓存/日志/会话/备份)
├─ .example.env 环境配置模板
└─ composer.json Composer 依赖配置
核心特性
单应用架构 — 四个模块通过控制器命名空间 app\controller\{admin,front,user,api}划分,非 ThinkPHP 多应用模式动态内容模型 — 通过后台创建内容模型,自动注册路由,所有内容类型共用 Content控制器RBAC 权限系统 — 基于节点的权限控制,权限细化到按钮级别,支持超级管理员( rootuid配置)JWT API 认证 — API 模块使用 JWT Token 认证,支持跨域访问 插件系统 — 通过 addons/目录扩展功能,支持钩子事件机制自定义表单引擎 — app/http/form/提供灵活的表单构建能力多主题支持 — 前台模板位于 public/template/,支持 PC/移动端主题自动切换自定义标签库 — com\SentThinkPHP 标签库,预加载到模板引擎
认证机制
AdminadminInfo,权限通过 sent\auth\Auth 校验ApiAuthuser\Base::initialize()
环境变量说明
编辑 .env 文件(从 .example.env 复制):
APP_DEBUG = false # 调试模式
VERSION = 4.0.5 # 版本号(后台展示)
rootuid = 1 # 超级管理员用户 ID
[DATABASE]
TYPE = mysql
HOSTNAME = 127.0.0.1
DATABASE = your_database
USERNAME = root
PASSWORD = your_password
HOSTPORT = 3306
CHARSET = utf8
PREFIX = sent_ # 表前缀
[JWT]
SECRET = your_jwt_secret # JWT 签名密钥
主要依赖
开发指南
新增后台控制器
创建 app/controller/admin/{Name}.php,继承app\controller\admin\Base创建对应视图目录 view/admin/{name}/路由自动匹配: admin/{name}/{action}在 auth_menu数据表中添加菜单项
新增 API 接口
在 app/controller/api/{Name}.php中添加方法,继承app\controller\api\Base路由自动匹配: api/{name}/{action}默认启用 JWT 认证( login/register除外)
新增内容模型
通过后台管理界面创建 → 系统自动注册动态路由。内容模型统一映射到 Content 控制器处理。
新增插件
创建 addons/{name}/目录,包含controller/Admin.php和view/模板在 addons配置和数据库表中注册
注意事项
勿删 install.lock— 它是安装锁文件,防止重复安装勿提交 .env— 已在.gitignore中忽略composer.lock已忽略 — 每次需composer install重新生成runtime/和public/uploads/目录需可写权限前台模板在 public/template/而非view/(view/仅存放后台模板)内容模型控制器是虚拟的,所有路由映射到 Content控制器
在线预览
演示地址:http://www.sentcms.com/ 账号:admin / admin888(请勿修改密码或删除数据) 交流社区:http://bbs.sentcms.com