Halo博客服务器迁移

由于本人使用国外的VPS搭建博客,总是感觉万一哪天服务器挂了数据就会丢失,所以记录一下关于halo博客的备份工作。

1. 环境参数

  • halo版本:v1.2.0
  • 数据库:H2
  • 部署工具: Docker version 19.03.5, build 633a0ea

2. Halo数据备份

  1. 在halo控制台的系统模块里面选择小工具

  1. 点击备份
    在弹出的侧边栏中点击备份,结果如下

  1. 下载备份压缩包
    点击文件名,下载压缩包

3. 上传备份文件到新服务器

在上传备份文件之前,可以在新服务器内将docker安装好,并使用docker拉取halo生成镜像(记住先不要创建和运行容器)。具体环境搭建可看官网:https://halo.run/guide/install/install-with-docker.html

:warning: 记住在安装halo时不需要下载配置文件到~/.halo目录
:point_right: 即下面这步不需要:

具体步骤:

  1. 安装docker
    按照官网教程安装

  2. 拉取halo最新镜像

    1
    sudo docker pull ruibaby/halo
  3. 上传压缩包文件到服务器的~/.halo目录
    我是用xftp工具上传的。

  4. 解压zip压缩包

    1
    uzip 文件名
  5. 创建和运行docker容器

    1
    docker run -it -d --name halo -p 8090:8090  -v ~/.halo:/root/.halo ruibaby/halo

4. 修改数据库内容

如果迁移博客需要修改网址,并且写文章时图片是通过halo上传的,那么就需要修改数据库中文章的图片网址。接下来以h2数据库为例, 首先需要登录到h2-console面板, 教程见文章

这里需要修改以下三部分内容

  • 修改POSTS表中ORIGINAL_CONTENT内容
  • 修改POSTS表中FORMAT_CONTENT内容
  • 修改POSTS表中THUMBNAIL内容

SQL代码如下:

这里blog.kerviaxxx.top迁移之前的域名,迁移后的域名为kerviaxxx.top

1
2
3
4
UPDATE  POSTS SET ORIGINAL_CONTENT=REPLACE(ORIGINAL_CONTENT, 'blog.kerviaxxx.top', 'kerviaxxx.top') WHERE ORIGINAL_CONTENT like '%blog.kerviaxxx.top%';
UPDATE POSTS SET FORMAT_CONTENT=REPLACE(FORMAT_CONTENT, 'blog.kerviaxxx.top', 'kerviaxxx.top') WHERE FORMAT_CONTENT like '%blog.kerviaxxx.top%';
UPDATE POSTS SET THUMBNAIL=REPLACE(THUMBNAIL, 'blog.kerviaxxx.top', 'kerviaxxx.top') WHERE THUMBNAIL like '%blog.kerviaxxx.top%';