325 lines
14 KiB
Markdown
325 lines
14 KiB
Markdown
# ThinkPHP 8 博客应用 - 说明文档与应用目录
|
||
|
||
|
||
## 一、说明文档
|
||
|
||
|
||
### 1. 项目概述
|
||
**项目名称**:TP-Blog(基于ThinkPHP 8的现代化博客系统)
|
||
**项目定位**:轻量级、可扩展的博客平台,支持用户管理、文章发布、分类标签、评论互动、后台管理等核心功能,适合个人博客或小型社区使用。
|
||
**技术栈**:
|
||
- 后端:ThinkPHP 8(PHP 8.0+)
|
||
- 前端:Layui 2.6+、HTML5、CSS3、JavaScript
|
||
- 数据库:MySQL 5.7+(支持MariaDB 10.3+)
|
||
- 缓存:Redis(可选,用于提升性能)
|
||
- 富文本编辑器:WangEditor
|
||
- 其他:QRCode(分享功能)、ECharts(统计图表,可选)
|
||
|
||
|
||
### 2. 功能模块
|
||
#### 2.1 前台功能
|
||
- **用户系统**:注册、登录、退出、个人资料管理
|
||
- **文章系统**:文章列表(分页/排序)、文章详情(含点赞/收藏/分享)、文章搜索
|
||
- **分类标签**:按分类/标签筛选文章、分类/标签云展示
|
||
- **互动功能**:评论(多级回复)、点赞、收藏、文章分享(二维码/链接)
|
||
- **其他**:RSS订阅、访客统计(PV/UV)
|
||
|
||
#### 2.2 后台功能
|
||
- **仪表盘**:数据统计(文章/用户/评论/访问量)、最新动态、热门文章
|
||
- **内容管理**:文章发布/编辑/删除、分类/标签管理、评论审核/删除
|
||
- **用户管理**:用户列表、添加/编辑/删除用户、角色权限(admin/editor/user)
|
||
- **统计分析**:访客记录、热门页面、访问趋势(需集成ECharts)
|
||
- **系统设置**:站点信息、SEO配置、邮件设置、权限管理
|
||
|
||
|
||
### 3. 技术架构
|
||
#### 3.1 架构图
|
||
```mermaid
|
||
graph TD
|
||
A[前端] --> B[ThinkPHP 8]
|
||
B --> C[MySQL]
|
||
B --> D[Redis缓存]
|
||
B --> E[文件存储]
|
||
|
||
subgraph 前端技术栈
|
||
A1[Layui 2.6+]
|
||
A2[HTML5/CSS3]
|
||
A3[JavaScript]
|
||
A4[WangEditor]
|
||
end
|
||
|
||
subgraph 后端技术栈
|
||
B1[ThinkPHP 8 MVC]
|
||
B2[Blade模板引擎]
|
||
B3[RESTful API]
|
||
B4[中间件]
|
||
end
|
||
|
||
subgraph 数据存储
|
||
C1[用户表(tp_user)]
|
||
C2[文章表(tp_article)]
|
||
C3[分类表(tp_category)]
|
||
C4[标签表(tp_tag)]
|
||
C5[评论表(tp_comment)]
|
||
C6[点赞/收藏表(tp_like/tp_favorite)]
|
||
C7[访客表(tp_visit)]
|
||
end
|
||
```
|
||
|
||
#### 3.2 核心技术点
|
||
- **MVC分层**:控制器(Controller)、模型(Model)、视图(View)分离
|
||
- **模型关联**:一对一(用户-文章)、一对多(文章-评论)、多对多(文章-标签)
|
||
- **中间件**:用户认证(`Auth`)、访客统计(`Visit`)、管理员权限(`AdminAuth`)
|
||
- **富文本编辑**:集成WangEditor,支持图片上传、代码高亮
|
||
- **权限控制**:基于角色的访问控制(RBAC),区分普通用户/管理员
|
||
|
||
|
||
### 4. 安装部署
|
||
#### 4.1 环境准备
|
||
- **服务器**:Linux(推荐CentOS/Ubuntu)或Windows
|
||
- **运行环境**:
|
||
- PHP 8.0+(需开启`fileinfo`、`redis`扩展)
|
||
- Composer 2.0+
|
||
- MySQL 5.7+ 或 MariaDB 10.3+
|
||
- Nginx 1.18+ 或 Apache 2.4+
|
||
- Redis 6.0+(可选,用于缓存)
|
||
- **工具**:Git(代码拉取)、Xshell(远程连接)、FileZilla(文件传输)
|
||
|
||
#### 4.2 安装步骤
|
||
##### 4.2.1 本地开发环境
|
||
```bash
|
||
# 1. 克隆代码
|
||
git clone https://github.com/yourname/tp-blog.git
|
||
cd tp-blog
|
||
|
||
# 2. 安装依赖
|
||
composer install
|
||
|
||
# 3. 配置环境
|
||
cp .env.example .env
|
||
php think key:generate # 生成应用密钥
|
||
|
||
# 4. 创建数据库(导入SQL文件)
|
||
mysql -u root -p
|
||
CREATE DATABASE IF NOT EXISTS `tp_blog` DEFAULT CHARACTER SET utf8mb4;
|
||
USE `tp_blog`;
|
||
source database/tp_blog.sql; # 导入数据库表结构
|
||
|
||
# 5. 配置.env文件
|
||
DB_HOST=127.0.0.1
|
||
DB_NAME=tp_blog
|
||
DB_USER=root
|
||
DB_PASS=your_mysql_password
|
||
APP_DEBUG=true # 开发环境开启调试
|
||
|
||
# 6. 启动服务
|
||
php think run # 访问 http://localhost:8000
|
||
```
|
||
|
||
##### 4.2.2 生产环境部署(Nginx)
|
||
```bash
|
||
# 1. 上传代码到服务器
|
||
scp -r tp-blog root@your_server_ip:/var/www/
|
||
|
||
# 2. 安装依赖(生产环境关闭dev依赖)
|
||
composer install --no-dev
|
||
|
||
# 3. 配置Nginx
|
||
server {
|
||
listen 80;
|
||
server_name yourdomain.com;
|
||
root /var/www/tp-blog/public;
|
||
index index.php;
|
||
|
||
location / {
|
||
if (!-e $request_filename) {
|
||
rewrite ^(.*)$ /index.php?s=$1 last;
|
||
}
|
||
}
|
||
|
||
location ~ \.php$ {
|
||
fastcgi_pass unix:/run/php/php8.0-fpm.sock;
|
||
fastcgi_index index.php;
|
||
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
||
include fastcgi_params;
|
||
}
|
||
|
||
# 静态资源缓存
|
||
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
|
||
expires 365d;
|
||
add_header Cache-Control "public, no-transform";
|
||
}
|
||
}
|
||
|
||
# 4. 设置文件权限
|
||
chown -R www-data:www-data /var/www/tp-blog
|
||
chmod -R 755 /var/www/tp-blog/storage
|
||
|
||
# 5. 重启服务
|
||
systemctl restart nginx
|
||
systemctl restart php8.0-fpm
|
||
```
|
||
|
||
#### 4.3 配置说明
|
||
- **数据库配置**:修改`.env`文件中的`DATABASE`部分
|
||
- **缓存配置**:开启Redis缓存(`.env`中`CACHE_TYPE=redis`,配置Redis连接)
|
||
- **站点信息**:修改`config/site.php`中的站点名称、描述、URL等
|
||
- **邮件配置**:配置SMTP信息(用于用户注册验证、找回密码)
|
||
|
||
|
||
### 5. 使用说明
|
||
#### 5.1 前台使用
|
||
- **首页**:展示最新文章、热门文章、分类/标签云
|
||
- **文章详情**:阅读全文、发表评论、点赞/收藏、分享
|
||
- **分类/标签**:点击分类/标签查看相关文章列表
|
||
- **搜索**:输入关键词搜索文章标题/内容
|
||
- **用户中心**:登录后查看个人资料、我的文章、我的收藏
|
||
|
||
#### 5.2 后台使用
|
||
- **登录**:访问`/admin`,使用管理员账号(默认`admin/admin123`)
|
||
- **仪表盘**:查看数据概览、最新文章/评论、热门文章
|
||
- **内容管理**:
|
||
- 文章:发布/编辑(支持Markdown/WangEditor)、删除、置顶
|
||
- 分类/标签:添加/编辑/删除,排序分类权重
|
||
- 评论:审核(通过/拒绝)、删除、批量操作
|
||
- **用户管理**:添加/编辑用户、分配角色(管理员/编辑/普通用户)
|
||
- **统计分析**:查看访客记录、热门页面、访问趋势图表
|
||
|
||
|
||
### 6. 数据库设计
|
||
详见前文《数据库表结构整理》,包含10张核心表(用户、文章、分类、标签、评论、点赞、收藏、访客等),支持完整的博客功能和数据关联。
|
||
|
||
|
||
### 7. API接口(核心)
|
||
| 接口路径 | 方法 | 参数 | 说明 |
|
||
|------------------------|------|-------------------------------|--------------------------|
|
||
| `/login` | POST | username, password | 用户登录 |
|
||
| `/register` | POST | username, password, email | 用户注册 |
|
||
| `/article/save` | POST | title, content, category_id | 发布文章 |
|
||
| `/comment/add` | POST | article_id, content, parent_id | 发表评论 |
|
||
| `/interaction/like/:id` | POST | - | 点赞/取消点赞文章 |
|
||
| `/interaction/favorite/:id` | POST | - | 收藏/取消收藏文章 |
|
||
| `/admin/comment/approve/:id` | POST | - | 审核评论(后台) |
|
||
|
||
|
||
### 8. 常见问题
|
||
#### 8.1 安装问题
|
||
- **Composer安装慢**:配置国内镜像 `composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/`
|
||
- **数据库连接失败**:检查`.env`文件中的数据库账号密码是否正确,MySQL是否允许远程连接
|
||
|
||
#### 8.2 功能问题
|
||
- **评论不显示**:检查评论状态是否为“已通过”(`status=1`),评论是否需要审核
|
||
- **图片上传失败**:确认`public/upload`目录权限(755),PHP配置`upload_max_filesize`是否足够
|
||
|
||
#### 8.3 性能问题
|
||
- **页面加载慢**:开启Redis缓存(热点数据缓存),压缩静态资源(CSS/JS合并压缩)
|
||
|
||
|
||
### 9. 附录
|
||
- **参考文档**:
|
||
- https://www.kancloud.cn/manual/thinkphp8_0
|
||
- https://layui.dev/
|
||
- https://www.wangeditor.com/
|
||
- **鸣谢**:感谢开源社区提供的框架和工具支持
|
||
|
||
|
||
## 二、应用目录结构
|
||
|
||
|
||
### 完整目录树
|
||
```
|
||
|
||
blog/ # 应用目录(核心代码)
|
||
├─ controller/ # 控制器目录
|
||
│ ├─ Admin/ # 后台控制器
|
||
│ │ ├─ Dashboard.php # 仪表盘控制器
|
||
│ │ ├─ Article.php # 文章管理控制器
|
||
│ │ ├─ Category.php # 分类管理控制器
|
||
│ │ ├─ Tag.php # 标签管理控制器
|
||
│ │ ├─ Comment.php # 评论管理控制器
|
||
│ │ ├─ User.php # 用户管理控制器
|
||
│ │ ├─ Stat.php # 统计分析控制器
|
||
│ │ └─ Setting.php # 系统设置控制器
|
||
│ ├─ Auth.php # 认证控制器(登录/注册/退出)
|
||
│ ├─ Articler.php # 前台文章控制器(详情/列表)
|
||
│ ├─ Comment.php # 前台评论控制器(发表/删除)
|
||
│ ├─ Interaction.php # 互动控制器(点赞/收藏)
|
||
│ ├─ Index.php # 前台首页控制器
|
||
│ └─ Rss.php # RSS订阅控制器
|
||
├─ model/ # 模型目录(数据库映射)
|
||
│ ├─ User.php # 用户模型
|
||
│ ├─ BlogArticle.php # 文章模型
|
||
│ ├─ BlogCategory.php # 分类模型
|
||
│ ├─ BlogTag.php # 标签模型
|
||
│ ├─ BlogComment.php # 评论模型
|
||
│ ├─ BlogLike.php # 点赞模型
|
||
│ ├─ BlogFavorite.php # 收藏模型
|
||
│ └─ BlogVisit.php # 访客模型
|
||
├─ view/ # 视图目录(模板文件)
|
||
│ ├─ admin/ # 后台视图
|
||
│ │ ├─ dashboard/ # 仪表盘视图
|
||
│ │ ├─ article/ # 文章管理视图
|
||
│ │ ├─ category/ # 分类管理视图
|
||
│ │ ├─ tag/ # 标签管理视图
|
||
│ │ ├─ comment/ # 评论管理视图
|
||
│ │ ├─ user/ # 用户管理视图
|
||
│ │ ├─ stat/ # 统计分析视图
|
||
│ │ ├─ setting/ # 系统设置视图
|
||
│ │ └─ layout/ # 后台布局模板
|
||
│ ├─ auth/ # 认证视图(登录/注册)
|
||
│ ├─ index/ # 前台视图
|
||
│ │ ├─ article/ # 文章详情/列表视图
|
||
│ │ ├─ category/ # 分类文章列表视图
|
||
│ │ ├─ tag/ # 标签文章列表视图
|
||
│ │ ├─ search/ # 搜索结果视图
|
||
│ │ ├─ _comment.html # 评论组件视图
|
||
│ │ └─ _sidebar.html # 侧边栏组件视图
|
||
│ └─ layout/ # 前台布局模板(base.html)
|
||
├─ middleware/ # 中间件目录
|
||
│ │ ├─ Auth.php # 用户认证中间件
|
||
│ │ ├─ AdminAuth.php # 管理员权限中间件
|
||
│ │ └─ Visit.php # 访客统计中间件
|
||
└─ service/ # 服务层(可选,封装业务逻辑)
|
||
│ ├─ UserService.php # 用户服务
|
||
│ └─ ArticleService.php # 文章服务
|
||
├─ config/ # 配置文件目录
|
||
│ ├─ app.php # 应用配置(调试模式、时区等)
|
||
│ ├─ database.php # 数据库配置
|
||
│ ├─ cache.php # 缓存配置(Redis)
|
||
│ ├─ route.php # 路由配置(可选)
|
||
│ └─ site.php # 站点信息配置(名称、描述等)
|
||
├─ public/ # 公共资源目录(Web根目录)
|
||
│ ├─ static/ # 静态资源
|
||
│ │ ├─ layui/ # Layui框架文件
|
||
│ │ ├─ wangEditor/ # 富文本编辑器
|
||
│ │ ├─ css/ # 自定义CSS
|
||
│ │ │ ├─ main.css # 前台样式
|
||
│ │ │ └─ admin.css # 后台样式
|
||
│ │ ├─ js/ # 自定义JS
|
||
│ │ │ ├─ main.js # 前台脚本
|
||
│ │ │ └─ admin.js # 后台脚本
|
||
│ │ └─ images/ # 图片资源(头像、默认封面等)
|
||
│ ├─ upload/ # 上传文件目录(图片、附件)
|
||
│ ├─ index.php # 入口文件(单应用模式)
|
||
│ └─ router.php # 路由入口(可选)
|
||
├─ route/ # 路由目录
|
||
│ ├─ app.php # 路由定义(分组路由、资源路由)
|
||
│ └─ api.php # API路由(可选)
|
||
├─ database/ # 数据库相关
|
||
│ ├─ migrations/ # 数据库迁移文件(可选)
|
||
│ ├─ seeds/ # 数据填充文件(可选)
|
||
│ └─ tp_blog.sql # 数据库表结构SQL文件
|
||
|
||
```
|
||
|
||
|
||
### 核心目录说明
|
||
- **app/controller**:存放所有控制器,按前台/后台分组,处理HTTP请求和业务逻辑分发
|
||
- **app/model**:模型类,映射数据库表,封装数据操作(关联查询、数据验证等)
|
||
- **app/view**:模板文件,使用Layui组件构建界面,支持模板继承和组件复用
|
||
- **public/static**:静态资源集中存放,便于Nginx配置缓存策略
|
||
- **route/app.php**:路由定义文件,配置URL与控制器方法的映射关系
|
||
- **storage**:运行时生成的文件(日志、缓存),需确保写入权限
|
||
|
||
|
||
以上文档和目录结构覆盖了项目的全生命周期,可作为开发、部署和维护的参考手册。如需扩展功能(如第三方登录、Markdown支持),可在对应目录下新增模块。 |