Files

14 KiB
Raw Permalink Blame History

ThinkPHP 8 博客应用 - 说明文档与应用目录

一、说明文档

1. 项目概述

项目名称TP-Blog(基于ThinkPHP 8的现代化博客系统)
项目定位:轻量级、可扩展的博客平台,支持用户管理、文章发布、分类标签、评论互动、后台管理等核心功能,适合个人博客或小型社区使用。
技术栈

  • 后端:ThinkPHP 8PHP 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+(需开启fileinforedis扩展)
    • 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 本地开发环境
# 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缓存(.envCACHE_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支持),可在对应目录下新增模块。