# 开源CMS框架系统
**Repository Path**: tanw/tanzcms
## Basic Information
- **Project Name**: 开源CMS框架系统
- **Description**: Tanzcms开源CMS系统
- **Primary Language**: PHP
- **License**: MIT
- **Default Branch**: master
- **Homepage**: https://www.tanz.cn
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 1
- **Created**: 2025-09-27
- **Last Updated**: 2026-05-29
## Categories & Tags
**Categories**: Uncategorized
**Tags**: PHPCMS, Laravel, tanzcms, 免费开源
## README
# TanzCMS 安装与使用说明
TanzCMS 是一套基于 Laravel 13 与 PHP 8.4 的模块化内容管理系统,适用于企业官网、内容门户、资料下载站、会员投稿平台、自定义表单收集、简单订单支付以及需要二次开发的行业 CMS 项目。
本项目面向正式网站部署设计,核心能力包括内容模型、栏目、单页面、主题模板、自定义字段、自定义表单、会员、订单、支付、模块、插件、缓存、搜索索引和后台权限管理。后台 UI 基于 Layui 2.13.x 构建,适合传统 CMS 管理后台的表格、表单、弹窗和权限操作场景。
## 系统截图预览
### 后台控制台

### 内容字段管理

### 站点基础设置

### 会员注册设置

### 菜单权限管理

### 模块管理

## 一、环境要求
推荐运行环境:
| 项目 | 要求 |
| --- | --- |
| PHP | 8.4 或更高版本 |
| Composer | 2.x |
| 数据库 | MySQL 8.x 或兼容数据库 |
| Web 服务 | Nginx / Apache |
| 缓存 | 文件缓存可运行,生产高并发建议 Redis |
| 队列 | 数据库队列可运行,生产高并发建议独立队列进程 |
PHP 扩展建议开启:
- `mbstring`
- `pdo_mysql`
- `openssl`
- `fileinfo`
- `gd`
- `curl`
- `zip`
- `xml`
- `redis`,生产环境推荐
生产环境建议同时开启:
- PHP OPcache
- HTTPS
- Redis 缓存
- 队列进程
- 定时任务
- Web 服务静态资源缓存
## 二、目录部署
将项目代码上传到服务器后,Web 站点根目录必须指向项目的 `public/` 目录。
示例:
```text
/www/wwwroot/tanzcms/ 项目根目录
/www/wwwroot/tanzcms/public/ Web 访问目录
```
请不要把 Web 根目录直接指向项目根目录,否则 `.env`、`storage`、`vendor` 等目录可能被外部访问。
以下目录需要 PHP 进程具备写入权限:
```text
storage/
bootstrap/cache/
public/uploads/
```
## 三、伪静态配置
TanzCMS 入口文件为 `public/index.php`。无论使用 Nginx、Apache 还是 IIS,站点根目录都应指向 `public/`,伪静态规则负责把不存在的文件和目录转发给 `index.php`。
### Nginx
示例配置:
```nginx
server {
listen 80;
server_name example.com;
root /www/wwwroot/tanzcms/public;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.(?!well-known).* {
deny all;
}
location ~* \.(?:css|js|jpg|jpeg|gif|png|webp|svg|ico|woff|woff2|ttf|eot)$ {
expires 30d;
access_log off;
try_files $uri =404;
}
}
```
如果使用面板环境,只需要在站点伪静态中保留核心规则:
```nginx
location / {
try_files $uri $uri/ /index.php?$query_string;
}
```
### Apache
Apache 需要开启 `mod_rewrite`,并允许站点目录读取 `.htaccess`。
如果 Web 根目录已指向 `public/`,可使用:
```apache
{$category.description}
{else}暂无栏目介绍
{/if} ``` 循环: ```html {loop $items $item} {$item.title} {/loop} ``` ### 常用数据标签 内容列表: ```html {content category="news" num=10} {$t.title} {empty}暂无内容
{/content} ``` 栏目列表: ```html {category parent="0" num=20} {$t.name} {/category} ``` 搜索结果: ```html {search keyword=$keyword num=10} {$t.title} {empty}没有找到相关内容
{/search} ``` 表格数据: ```html {table name="links" num=10} {$t.title} {/table} ``` 自定义表单: ```html {custom_form code="contact"} ``` ### 常用资源标签 主题资源: ```html {theme_asset "css/style.css"} {theme_asset "js/app.js"} ``` 公共资源: ```html {public_asset "assets/app.css"} ``` 上传文件地址: ```html {upload_url $image} ``` 缩略图: ```html {thumb_img $thumb} ``` ### 模板安全规则 - 普通变量使用 `{$value}`。 - 可信富文本才使用 `{html $value}`。 - 不要把用户提交的原始 HTML 直接输出。 - 表单提交必须包含系统生成的表单令牌。 - 模块和插件新增模板标签时,应优先返回结构化数据,让主题自行控制 HTML。 ## 九、缓存与负载能力 TanzCMS 内置多层缓存能力: - 前台匿名页面缓存。 - 模板编译缓存。 - 模板标签渲染缓存。 - 元数据缓存。 - 搜索索引缓存。 - 浏览量缓冲。 - 首页静态生成。 - 模块和插件按需启动。 公开页面会根据页面上下文判断是否允许匿名整页缓存。首页、栏目页、详情页、单页等公开页面适合缓存;登录、注册、会员中心、订单、投稿等身份相关页面不会进入匿名整页缓存。 首页静态生成命令: ```bash php artisan tanzcms:static-home build php artisan tanzcms:static-home status ``` ### 生产负载建议 小型站点可以使用文件缓存和数据库队列运行。 中高访问站点建议: - 使用 Redis 作为缓存。 - 开启 OPcache。 - 配置队列进程处理异步任务。 - 配置定时任务写回浏览量和发布定时内容。 - 开启 Web 服务静态资源缓存。 - 对首页、栏目页、详情页启用页面缓存。 - 对高频首页启用首页静态生成。 - 定期重建搜索索引和字段索引。 百万级内容站点建议: - 使用 MySQL 8.x。 - 保留默认表前缀 `tz_` 或规划统一表前缀。 - 使用内容搜索索引表。 - 为搜索、栏目、状态、发布时间等字段建立有效索引。 - 避免后台深分页长期直接查询大表。 - 导出、批量处理、索引重建走队列或命令行任务。 - 根据业务规模预留 Meilisearch / Elasticsearch 等搜索引擎接入。 实际承载能力与服务器 CPU、内存、磁盘、PHP-FPM 配置、数据库配置、Redis 配置、模板复杂度、插件数量和访问模型有关。上线前建议按首页、栏目页、详情页、搜索页、会员中心和后台列表分别压测。 性能相关命令: ```bash php artisan tanzcms:performance-baseline php artisan tanzcms:performance-assert php artisan tanzcms:frontend-hotpath-probe php artisan tanzcms:admin-hotpath-probe php artisan tanzcms:query-plan-explain "select * from tz_contents where status = 'published' limit 10" ``` 搜索和索引命令: ```bash php artisan tanzcms:search-rebuild php artisan tanzcms:search-index-audit php artisan tanzcms:field-index-rebuild ``` ## 十、后台管理能力 后台提供: - 管理员管理。 - 角色管理。 - 权限管理。 - 后台菜单管理。 - 系统设置。 - 上传设置。 - 缓存设置。 - 搜索设置。 - 内容模型管理。 - 栏目管理。 - 内容管理。 - 自定义字段管理。 - 自定义表单管理。 - 会员管理。 - 会员组管理。 - 投稿审核。 - 订单管理。 - 支付管理。 - 模块管理。 - 插件管理。 - 应用市场入口。 - 健康检查。 - 首页静态管理。 - 发布前检查。 后台 UI 基于 Layui 2.13.x,主要面向内容录入、列表筛选、批量操作、权限控制和系统配置等高频管理场景。 后台入口由 `.env` 中的 `TANZCMS_ADMIN_ENTRANCE` 控制,安装时可以自定义。 ## 十一、常用维护命令 清理缓存: ```bash php artisan optimize:clear ``` 生成 Laravel 配置缓存: ```bash php artisan config:cache php artisan route:cache ``` 清理模板缓存: ```bash php artisan tanzcms:template-clear ``` 编译默认主题模板: ```bash php artisan tanzcms:template-compile default ``` 查看模板状态: ```bash php artisan tanzcms:template-status ``` 发布主题资源: ```bash php artisan tanzcms:publish-theme-assets ``` 清理元数据缓存: ```bash php artisan tanzcms:meta-clear ``` 写回浏览量: ```bash php artisan tanzcms:flush-views ``` 健康检查: ```bash php artisan tanzcms:health-check ``` 发布前检查: ```bash php artisan tanzcms:release-check ``` ## 十二、安全建议 - `.env` 不应提交到公开仓库。 - Web 根目录必须指向 `public/`。 - 生产环境必须关闭 `APP_DEBUG`。 - 生产环境建议开启 `SESSION_ENCRYPT=true`。 - 后台入口不要使用容易猜测的路径。 - 管理员密码必须使用高强度密码。 - 上传文件应限制扩展名、MIME、大小和图片内容。 - 支付、短信、对象存储等密钥必须由服务器环境单独配置。 - 插件和模块应通过服务层访问核心数据,避免绕过业务边界。 - 安装完成后不要删除 `storage/app/installed.lock`,除非明确需要重新安装。 ## 十三、目录结构 ```text app/ 核心应用代码 app/Cms/ CMS 核心能力 app/Core/ 模块、包、运行时等底层能力 app/Plugins/ 插件运行、市场、回调等能力 modules/ 官方模块 themes/default/ 默认前台主题模板 public/ Web 访问目录 public/themes/ 前台主题静态资源 resources/views/ 后台页面和系统视图 routes/ 路由定义 database/migrations/ 数据库迁移 config/ 系统配置 storage/ 运行时缓存、日志、安装锁和中间数据 ``` ## 十四、适用场景 TanzCMS 适合: - 企业官网。 - 产品展示站。 - 资料下载站。 - 内容门户。 - 会员投稿平台。 - 留言、预约、报名类表单站点。 - 简单订单和支付场景。 - 需要二次开发的行业 CMS。 - 需要模块化、插件化扩展的内容系统。 ## 十五、许可证 本项目使用 MIT License。实际发布版本中如包含第三方 SDK、模块或插件,请同时遵守对应组件的许可协议。