14 KiB
14 KiB
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 架构图
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+(可选,用于缓存)
- PHP 8.0+(需开启
- 工具:Git(代码拉取)、Xshell(远程连接)、FileZilla(文件传输)
4.2 安装步骤
4.2.1 本地开发环境
# 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)
# 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. 附录
- 参考文档:
- 鸣谢:感谢开源社区提供的框架和工具支持
二、应用目录结构
完整目录树
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支持),可在对应目录下新增模块。