2025-06-16
Vanblog
00

我针对VanBlog进行了二次开发,以下是一些关键文档,有助于你理解VanBlog的设计。

项目地址:https://github.com/xxddccaa/vanblog

  1. 快速部署VanBlog
2025-06-15
Vanblog
00

VanBlog自动备份

前言

在博客系统的运维中,数据备份是至关重要的环节。VanBlog作为一个现代化的博客系统,提供了完善的自动备份功能,不仅支持本地JSON数据备份,还集成了阿里云盘云端备份。本文将深入分析这个功能的实现原理、架构设计和优化过程。

功能概览

VanBlog的自动备份功能位于 /admin/site/setting?tab=autoBackup,主要包含以下特性:

核心功能

  • JSON数据备份:完整导出博客所有数据(文章、草稿、分类、标签、用户设置等)
  • 定时自动执行:用户可自定义备份时间,系统精确执行
  • 文件管理:自动清理过期备份,保留指定数量的最新备份
  • 阿里云盘集成:支持将静态文件自动同步到阿里云盘备份盘

技术特性

  • 零轮询设计:直接在指定时间执行,无需周期性检查
  • 动态任务调度:设置变更立即生效,无需重启服务
  • 增量上传:阿里云盘备份使用--skip参数避免重复传输
  • 容错机制:备份失败不影响系统正常运行
2025-06-13
Vanblog
00

文章操作自动同步标签数据功能实现

功能说明

在文章的增删改操作后,系统现在会自动触发标签同步功能,无需手动点击"同步标签数据"按钮。这个功能通过异步方式实现,不会影响用户体验。

2025-06-13
Vanblog
00

VanBlog 标签性能优化方案

背景问题

原系统存在以下性能瓶颈:

  • 博客数量:2k篇
  • 标签数量:4w个
  • 前端获取标签时一次性加载所有数据,导致卡顿
  • 标签查询通过遍历所有文章实现,复杂度O(n*m)
  • 后台标签管理页面性能差
2025-06-12
Vanblog
00

🎯 什么是渲染?为什么很重要?

渲染 = 把动态数据转换成静态HTML文件的过程

VanBlog使用Next.js的 ISR(Incremental Static Regeneration 增量静态再生成) 技术:

2025-06-12
Vanblog
00

这个博客的方法是我看数据库数据的,不懂的不要轻易使用,直接用博客系统带的备份方案,直接导出json 和 图片。

数据库表结构分析

VanBlog的数据主要存储在MongoDB中,包含以下重要数据:

需要保留的数据(文章数据):

  • articles - 文章内容
  • drafts - 草稿
  • categories - 分类
  • tags - 标签(如果有的话)
  • customPages - 自定义页面
  • moments - 动态
  • viewers - 浏览量统计
  • visits - 访问记录

需要重新配置的数据(系统配置):

  • metas - 站点信息(包含域名配置)
  • users - 用户信息
  • settings - 系统设置
  • tokens - API令牌
2025-06-10
工具使用
00

UV 是一个由 Astral 团队开发的高性能 Python 环境管理工具,它集成了包管理、虚拟环境管理和 Python 版本管理等功能。以下是使用 UV 管理 Python 环境的主要步骤和方法:

1. 安装 UV

UV 可以通过多种方式安装:

  • 通过 pip 安装(不推荐,功能可能不全):
    bash
    展开代码
    pip install uv
  • 通过脚本安装(推荐):
    • Linux/macOS
      bash
      展开代码
      curl -LsSf https://astral.sh/uv/install.sh | sh
    • Windows(PowerShell):
      powershell
      展开代码
      irm https://astral.sh/uv/install.ps1 | iex
    安装完成后,可以通过 uv --version 验证安装。

实用对比表

操作Condauv
创建环境conda create -n env python=3.11uv venv --python 3.11
激活环境conda activate envsource .venv/bin/activate
安装包conda install numpyuv pip install numpy
查看已安装conda listuv pip list
导出依赖conda env export > env.ymluv pip freeze > requirements.txt
删除环境conda env remove -n envrm -rf .venv
速度慢(几分钟)极快(几秒)
2025-06-09
Git
00

vmware 的 dns 问题 导致 git pull失败:

  1. nslookup github.com

    • 检查 github.com 的 DNS 解析是否正确,确认是否返回 GitHub 的真实 IP(如 20.205.243.166)。
  2. echo "nameserver 8.8.8.8" > /etc/resolv.conf

    • 强制使用 Google 的公共 DNS(8.8.8.8),避免本地 DNS 解析错误导致 github.com 指向 127.0.0.1
  3. ssh-keygen -f "/root/.ssh/known_hosts" -R "github.com"

    • 删除本地记录的旧 GitHub SSH 主机密钥,防止因密钥不匹配导致连接失败。
  4. ssh -T git@github.com

    • 测试 SSH 连接,首次会提示确认 GitHub 的新主机密钥,输入 yes 后即可正常认证。

更离谱的是,有时候这个文件只是软连接,可以看看这样:

bash
展开代码
ls -l /etc/resolv.conf sudo rm /etc/resolv.conf echo "nameserver 8.8.8.8" > /etc/resolv.conf sudo chattr +i /etc/resolv.conf # 锁定文件(防止被覆盖) sudo systemctl stop systemd-resolved # 禁用 systemd-resolved(可选) sudo systemctl disable systemd-resolved
2025-06-09
Linux运维
00

1. 安装 Caddy

在 Ubuntu 服务器上执行以下命令:

bash
展开代码
# 安装必要的包 sudo apt update sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https # 添加 Caddy 官方 GPG 密钥 curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg # 添加 Caddy 仓库 curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list # 安装 Caddy sudo apt update sudo apt install caddy
2025-06-09
建站教程
00

ACME 证书申请方式

HTTP-01 挑战

  • 原理:CA向域名的 /.well-known/acme-challenge/ 路径发送HTTP请求验证域名控制权
  • 优点:配置简单,无需DNS API
  • 缺点:需要80端口可访问,不支持通配符证书
  • 适用场景:单域名或多个具体域名的证书申请

DNS-01 挑战

  • 原理:在域名的DNS记录中添加TXT记录来验证域名控制权
  • 优点:支持通配符证书,无需开放80端口,可在内网使用
  • 缺点:需要DNS提供商API支持,配置相对复杂
  • 适用场景:通配符证书、内网服务、防火墙限制环境