当前位置: 首页 > news >正文

Halo Docker 迁移方式

Halo Docker 迁移方式

Halo Docker 迁移方法

以下是针对使用Docker部署的Halo博客(假设Halo 2.x版本,数据库为默认H2或外部MySQL)迁移到新服务器的详细方案。迁移目标是实现全站数据迁移,包括文章、评论、附件、主题、插件、配置和数据库。方案基于Halo官方文档和社区经验,确保数据完整性。适用于CentOS或其他Linux服务器。

重要前提和注意事项
迁移方案概述
  1. 备份旧服务器数据(文件和数据库)。
  2. 在新服务器安装Docker环境
  3. 传输和恢复数据
  4. 启动容器并验证
  5. 可选:配置Nginx/SSL和数据库URL更新

Halo官方推荐使用后台备份工具,但对于Docker,优先备份挂载卷(~/.halo2)。如果数据大,可直接打包整个卷目录。

详细操作步骤
步骤1: 备份旧服务器数据

在旧服务器上执行,确保容器停止。

  1. 停止Docker容器

    docker stop halo
    docker rm halo  # 如果需要移除旧容器
  2. 使用Halo后台备份(推荐,包含配置/附件/主题/插件)

    • 启动容器临时访问后台:docker start halo
    • 登录Halo后台(IP:8090/admin)。
    • 导航到 系统 > 备份
    • 点击“备份站点”,生成ZIP文件。
    • 下载ZIP到服务器(如/tmp/halo-backup.zip)。
    • 停止容器再次。
  3. 手动备份挂载卷(~/.halo2,整个数据目录)

    • 备份整个目录(包括db、indices、keys、logs、plugins、themes、upload等)。
    • 命令:
      cd ~
      tar -czvf /tmp/halo-volume-backup.tar.gz .halo2
    • 这包含H2数据库。如果使用H2,无需额外备份数据库。
  4. 备份外部数据库(如果使用MySQL)

    • 确认数据库名(通常halo,查看application.yaml)。
    • 导出:
      mysqldump -u root -p halo > /tmp/halo.sql
      (替换用户/密码)。
  5. 备份Docker Compose文件(如果使用)

    • 复制docker-compose.yml/tmp/
  6. 验证备份:检查文件大小,确保完整。

步骤2: 在新服务器安装环境
  1. 安装Docker

    sudo yum update -y
    sudo yum install -y yum-utils device-mapper-persistent-data lvm2
    sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    sudo yum install -y docker-ce docker-ce-cli containerd.io
    sudo systemctl start docker && sudo systemctl enable docker
  2. 拉取Halo镜像(使用与旧服务器相同版本):

    docker pull halohub/halo:2.x.x  # 替换为实际版本,如2.12.2

    或使用ruibaby/halo如果旧服务器是这个。

  3. 安装数据库(如果用外部MySQL)

    sudo yum install -y mariadb-server
    sudo systemctl start mariadb && sudo systemctl enable mariadb
    sudo mysql_secure_installation
    • 创建数据库:
      mysql -u root -p
      CREATE DATABASE halo CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
      GRANT ALL ON halo.* TO 'halo_user'@'localhost' IDENTIFIED BY 'password';
      FLUSH PRIVILEGES;
      EXIT;
步骤3: 传输和恢复数据
  1. 传输备份文件

    • 从旧服务器执行(推荐rsync):
      rsync -avz -e ssh /tmp/halo-volume-backup.tar.gz root@new_ip:/tmp/
      rsync -avz -e ssh /tmp/halo.sql root@new_ip:/tmp/  # 如果有
      (替换new_ip)。
  2. 恢复卷数据

    • 在新服务器:
      mkdir -p ~/.halo2
      tar -xzvf /tmp/halo-volume-backup.tar.gz -C ~
      • 或如果用后台ZIP:解压到~/.halo2。
    • 调整权限:
      chown -R root:root ~/.halo2
      chmod -R 755 ~/.halo2
  3. 恢复数据库(如果MySQL)

    mysql -u root -p halo < /tmp/halo.sql
    • 更新~/.halo2/application.yaml中的数据库连接(如果主机变)。
步骤4: 启动并验证
  1. 运行Docker容器

    • 简单运行:
      docker run -d --name halo -p 8090:8090 -v ~/.halo2:/root/.halo2 --restart=always halohub/halo:2.x.x
      • 如果用Docker Compose,创建docker-compose.yml:
        version: '3'
        services:halo:image: halohub/halo:2.x.xcontainer_name: halorestart: alwaysvolumes:- ~/.halo2:/root/.halo2ports:- 8090:8090
        然后:docker-compose up -d
  2. 验证数据

    • 访问新IP:8090/admin,检查内容。
    • 查看日志:docker logs halo
    • 如果错误,检查卷挂载和权限。
  3. 更新数据库URL(如果域名变化)

    • 对于H2:使用h2-console访问数据库,运行SQL替换URL(例如REPLACE函数更新POSTS表的ORIGINAL_CONTENT等列)。
    • 对于MySQL:直接在mysql中运行类似SQL。
步骤5: 可选优化和清理
  • 配置Nginx反向代理:安装Nginx,配置server块代理到8090端口。
  • SSL:使用certbot。
  • 高可用:设置MySQL主从复制(主服务器配置log_bin,从服务器CHANGE MASTER)。
  • 镜像打包迁移(可选,如果频繁迁移):构建自定义Dockerfile包含备份,push到仓库,然后在新服务器pull运行。
  • 清理:迁移成功后删除旧备份。

如果使用Halo 1.x,替换目录为~/.halo,镜像为ruibaby/halo等。遇到问题,参考Halo社区(bbs.halo.run)或官方文档。如果数据库复杂,优先使用外部MySQL以便迁移。

http://www.jsqmd.com/news/342844/

相关文章:

  • Servlet 进阶!生命周期+3种创建方式+前后台传参,一篇吃透
  • 6款AI论文神器实测:真实参考文献、查重率低、原创度高,轻松搞定论文! - 麟书学长
  • Novel-Plus has business logic vulnerabilities.
  • 程序员入行AI大模型应用开发必须学算法吗?2026最新AI大模型应用开发的核心技术学习线路看这里
  • 【毕业设计】基于springboot+大数据的果园管理系统(源码+文档+远程调试,全bao定制等)
  • 7.4 Kubernetes存储故障排查:PV挂载失败、存储类问题诊断技巧
  • 大模型Agent Skills学习路线:从技能市场到数据预测,一篇搞定
  • 大数据计算机毕设之基于springboot+大数据的果园管理系统_数据可视化大屏分析系统(完整前后端代码+说明文档+LW,调试定制等)
  • 7.3 Kubernetes网络故障排查:CNI插件、Service、Ingress问题诊断
  • 告别金鱼记忆:为AI助手构建人类级记忆系统的完整指南
  • 7.2 Kubernetes备份恢复实战:etcd数据备份与集群灾难恢复方案
  • 22岁女生如何从新闻专业转行成为字节AIGC产品经理
  • 利用 Nimbus-7 SMMR 和 DMSP SSM/I-SSMIS V004 数据进行海冰浓度自举法计算
  • 【计算机毕业设计案例】基于大数据的智慧果园管理系统基于springboot+大数据的果园管理系统(程序+文档+讲解+定制)
  • 6.6 生产级微服务治理总结:从开发到部署的完整最佳实践
  • 零基础进阶大模型实战高手:从Transformer到企业级部署全攻略
  • AI大模型开发学习路线图详解:从入门到精通,你的完整学习指南!_大模型开发入门
  • 6.9 微服务治理最佳实践:服务发现、负载均衡、超时重试完整方案
  • 碳中和经济学:新约束下的宏观与行业趋势
  • 6.10 生产级微服务治理总结:从开发到部署的完整最佳实践
  • 程序员必看!微软免费生成式AI课程:从基础概念到实战应用,21节课掌握大模型开发(建议收藏)
  • 2026标准数字时钟系统厂家推荐榜:五家技术型供应商深度解析与场景化选型指南 - 深度智识库
  • 精通大数据领域的数据科学技能
  • 深入理解Agent Skills与MCP:构建AI智能体的必备技能,建议收藏学习
  • 2026标准数字时钟系统厂家推荐榜 高精度多场景适配优选指南 - 深度智识库
  • AI产品经理全景图:技术翻译官、行业解题者与平台建设者,建议收藏阅读
  • KDE Discover 代理问题
  • P4317 花神的数论题
  • 2026网络同步时钟系统厂家推荐榜高精度多场景适配优选指南 - 深度智识库
  • 模板元编程应用场景