AI 点评
cover

Fool Blog博客项目部署

Fool Lv.6 2026-06-24 13:02 1432 字 浏览 183 点赞 评论 6 学习Git

一个简洁优雅的个人博客系统

Go Gin GORM License

一个轻量级、功能完整的博客系统,基于 Go 构建,支持 SQLite/MySQL 双数据库,开箱即用。

image-20260624130048434


功能特性

前台功能

  • 文章展示 - 置顶文章(定时过期/锁定/隐藏/置底)、分页列表、Markdown 渲染、目录导航、阅读进度条、相关文章推荐
  • 互动功能 - 浏览量统计、点赞、嵌套评论(支持回复)、代码块一键复制、代码语言标签
  • 内容发现 - 全文搜索(标题/摘要/正文/标签)、标签分类、按年月归档
  • AI 点评 - 接入 LLM 自动生成文章点评、打字机效果展示
  • 个性化 - 随机壁纸、站点配置、暗黑模式(可自定义颜色)、图片点击放大预览
  • 订阅通知 - 邮件订阅新文章通知

后台管理

  • 数据仪表盘 - 文章/用户/评论统计概览
  • 文章管理 - 新建/编辑/删除/置顶(含高级置顶设置)/发布/草稿、Markdown 导入导出(单篇/批量 ZIP)
  • 内容管理 - 标签管理、评论管理(含批量操作)
  • 用户管理 - 角色分配、状态控制、禁用/删除
  • 站点设置 - 名称/副标题/公告/壁纸/备案号/建站时间/关于页面/Font Awesome CDN
  • 订阅管理 - 查看/取消邮件订阅用户
  • 操作日志 - 全操作审计记录

用户系统

  • 注册(邮箱验证码验证)
  • 登录/登出
  • 个人中心(修改资料/随机头像)
  • 忘记密码 / 重置密码

技术栈

组件 技术
后端框架 Gin
ORM GORM
数据库 SQLite / MySQL
模板引擎 Go html/template
Markdown Goldmark
代码高亮 Chroma
AI 集成 兼容 OpenAI API 的 LLM 服务

快速开始

环境要求

  • Go 1.25+

安装

git clone https://github.com/your-username/fool-blog.git
cd fool-blog
go mod tidy

配置

复制并编辑配置文件:

cp config.yaml config.yaml

编辑 config.yaml:

app:
  addr: 0.0.0.0:9200
  name: My Blog

database:
  driver: sqlite          # sqlite 或 mysql
  path: data/blog.db      # SQLite 路径
  # MySQL 配置(driver 为 mysql 时启用)
  # host: 127.0.0.1
  # port: "3306"
  # name: blog
  # user: root
  # password: ""

security:
  session_key: your-random-session-key-here
  password_salt: your-password-salt

admin:
  default_username: admin
  default_password: admin123

# 可选:AI 文章点评
ai:
  base_url: https://api.openai.com/v1
  api_key: sk-your-api-key
  model: gpt-4o-mini

运行

go run main.go

访问 http://localhost:9200 查看博客,http://localhost:9200/admin 进入后台。

默认管理员账号:admin / admin123

编译

# Linux/macOS
go build -o fool_blog

# Windows
go build -o fool_blog.exe

目录结构

fool-blog/
├── main.go                 # 应用入口
├── config.yaml             # 配置文件
├── go.mod                  # Go 依赖
├── internal/
│   ├── ai/                 # AI 点评集成
│   ├── config/             # 配置加载
│   ├── database/           # 数据库初始化
│   ├── email/              # 邮件服务
│   ├── handler/            # HTTP 路由处理
│   │   ├── admin_handler.go
│   │   ├── ai_handler.go
│   │   ├── article_handler.go
│   │   ├── auth_handler.go
│   │   ├── front_handler.go
│   │   ├── profile_handler.go
│   │   └── upload_handler.go
│   ├── middleware/          # 中间件(认证/日志/访客追踪/频率限制)
│   ├── model/              # 数据模型
│   ├── service/            # 业务逻辑
│   └── util/               # 工具函数
├── templates/              # HTML 模板
│   ├── admin/              # 后台模板
│   ├── 404.html
│   ├── about.html
│   ├── archive.html
│   ├── article.html
│   ├── forgot.html
│   ├── index.html
│   ├── login.html
│   ├── partials.html
│   ├── register.html
│   ├── reset.html
│   ├── search.html
│   └── tag.html
├── static/                 # 静态资源(CSS/JS)
├── uploads/                # 上传文件
│   ├── avatar/
│   ├── cover/
│   └── article/
├── data/                   # SQLite 数据库文件
└── exports/                # Markdown 导出文件

API 路由

前台

方法 路径 说明
GET / 首页
GET /article/:slug 文章详情
GET /search?q= 搜索
GET /tags 标签列表
GET /tag/:id 标签详情
GET /archive 归档
GET /about 关于页面
POST /article/:id/like 点赞
POST /article/:id/comment 评论
GET /api/ai-review/:id AI 点评
POST /subscribe 订阅新文章通知
POST /unsubscribe 取消订阅

用户

方法 路径 说明
GET /login 登录页
POST /login 登录
GET /register 注册页
POST /register 注册
POST /register/send-code 发送验证码
POST /logout 登出
GET /me 个人中心
POST /me 更新资料
POST /me/avatar 上传头像
GET /forgot 忘记密码页
POST /forgot 发送重置邮件
GET /reset 重置密码页
POST /reset 执行重置密码

后台

方法 路径 说明
GET /admin 仪表盘
GET /admin/articles 文章列表
POST /admin/articles 创建文章
POST /admin/articles/:id 更新文章
POST /admin/articles/:id/delete 删除文章
POST /admin/articles/import 导入 Markdown
GET /admin/articles/:id/export 导出 Markdown
POST /admin/articles/:id/notify 发送文章通知
GET /admin/tags 标签管理
GET /admin/comments 评论管理
POST /admin/comments/:id/delete 删除评论
GET /admin/users 用户管理
POST /admin/users/:id/toggle 切换用户状态
POST /admin/users/:id/delete 删除用户
GET /admin/site 站点设置
POST /admin/site 更新站点设置
POST /admin/upload 上传文件
GET /admin/logs 操作日志
GET /admin/subscriptions 订阅管理
POST /admin/subscriptions/:id/delete 删除订阅

配置说明

配置项 说明
app.addr 监听地址
database.driver 数据库类型:sqlite 或 mysql
security.session_key Session 加密密钥(请修改)
security.password_salt 密码盐值(请修改)
upload.max_size_mb 上传文件大小限制(MB)
wallpaper.enabled 是否启用随机壁纸
ai.* AI 点评配置(可选)

部署

Docker(推荐)

FROM golang:1.25-alpine AS builder
WORKDIR /app
COPY . .
RUN go mod download && go build -o fool_blog .

FROM alpine:latest
WORKDIR /app
COPY --from=builder /app/fool_blog .
COPY --from=builder /app/config.yaml .
COPY --from=builder /app/templates ./templates
COPY --from=builder /app/static ./static
EXPOSE 9200
CMD ["./fool_blog"]
docker build -t fool-blog .
docker run -p 9200:9200 -v ./data:/app/data fool-blog

Systemd

[Unit]
Description=Fool Blog
After=network.target

[Service]
Type=simple
User=www
WorkingDirectory=/opt/fool-blog
ExecStart=/opt/fool-blog/fool_blog
Restart=always

[Install]
WantedBy=multi-user.target

项目预览

image-20260624130023268

最后更新时间:2026-09-19 20:23

微信扫码分享

评论(6) 最新 热门

登录 后才能评论。

  • Fool Lv.6 网站管理员 2026-07-14 13:31
    111
  • Fool Lv.6 网站管理员 2026-07-14 13:31
    111
  • Fool Lv.6 网站管理员 2026-07-14 13:31
    111
  • Fool Lv.6 网站管理员 2026-07-14 13:31
    111
  • Fool Lv.6 网站管理员 2026-07-14 13:31
    111
  • Fool Lv.6 网站管理员 2026-07-14 13:32
    🎁