侧边栏壁纸
博主头像
小新笔记坊

笔耕学思悟,细绘生活卷。

  • 累计撰写 52 篇文章
  • 累计创建 23 个标签
  • 累计收到 49 条评论

目 录CONTENT

文章目录

Halo站点全站备份及还原

小新笔记坊
2024-02-12 / 0 评论 / 0 点赞 / 132 阅读 / 0 字 / 正在检测是否收录...

操作环境

操作系统:Linux CentOS 8.0

数据库:mysql 8.0

站点备份的目的

1.提前为站点未来可能迁移服务器做好准备。

2.考虑到站点被入侵、攻击、销毁数据的可能,提前做好数据备份,出现问题可及时进行还原。

3.个人心态原因,重要数据和好东西不实实在在”拿“在自己手里不放心。

站点备份的思路

站点设置、图片资源等数据:使用Halo自带备份还原功能。

站点数据库:由于本人使用的为mysql,故使用mysql本身的备份还原指令,将数据库导出为.sql文件后进行备份还原。

Halo配置文件:直接下载保存备份。

站点备份及还原的过程

旧服务器备份

1.备份Halo站点设置、图片资源等数据。后台使用Halo自带备份功能进行备份,得到一个.zip格式压缩包,该压缩包主要包含站点的设置、保存的图片、安装的插件等。

2.备份Halo配置文件。进入服务器,在“.halo2文件夹”内将Halo配置文件“application.yaml”下载保存,该配置文件主要作用为数据库及站点相关设置,具体代码如下:

注:.halo2文件夹”为隐藏文件夹,用于存放上传的图片、备份等文件。一般位于创建该文件夹及运行Halo站点时的用户所在目录下。例如创建该文件夹及运行Halo站点的用户为非root账户,则该配置文件的路径为/home/系统用户名/application.yaml。如创建该文件夹及运行Halo站点的用户为root账户,则该配置文件的路径为/root/.halo2/application.yaml。

server:
  port: 8090  #运行端口
spring:
  #数据库配置,支持 MySQL、MariaDB、PostgreSQL、H2 Database
  r2dbc:
    url: r2dbc:h2:file://${halo.work-dir}/db/halo-next?MODE=MySQL&DB_CLOSE_ON_EXIT=FALSE
    username: admin    #数据库账户
    password: 123456   #数据库密码
  sql:
    init:
      mode: always
      platform: h2     #数据库类型
halo:
  caches:
    page:
      disabled: true   #是否禁用页面缓存
  work-dir: ${user.home}/.halo2   #工作目录位置
  external-url: http://localhost:8090  #站点外部访问地址
  # 附件映射配置,通常用于迁移场景
  attachment:
    resource-mappings:
      - pathPattern: /upload/**
        locations:
          - migrate-from-1.x
#-------------以上为配置文件代码,以下为备注提示--------------
#spring.r2dbc.url	  数据库连接地址(指代码中r2dbc结构下需填写的参数,例如设置为mysql数据库则填入r2dbc:pool:mysql://你的服务器地址:3306/halodb(数据库名)
#spring.r2dbc.username	    数据库用户名
#spring.r2dbc.password	    数据库密码
#spring.sql.init.platform	    数据库平台名称,支持 postgresql、mysql、mariadb、h2,需要使用哪个数据库则填写对应的数据库名称参数
#PostgreSQL数据库设置标准:	
#r2dbc:pool:postgresql://{HOST}:{PORT}/{DATABASE}	  postgresql
#MySQL数据库设置标准:	
#r2dbc:pool:mysql://{HOST}:{PORT}/{DATABASE}	      mysql
#MariaDB数据库设置标准:	
#r2dbc:pool:mariadb://{HOST}:{PORT}/{DATABASE}	      mariadb
#H2 Database数据库设置标准:	
#r2dbc:h2:file:///${halo.work-dir}/db/halo-next?MODE=MySQL&DB_CLOSE_ON_EXIT=FALSE       h2

3.备份mysql数据库。进入服务器,执行mysql备份指令并将生成的sql文件保存。(需牢记数据库名,因为还原时需要先创建数据库,此时数据库名称必须保持一致)

mysqldump -uUser -pAdmin123 halodb > /var/www/halodb.sql
/*
mysqldump    -u数据库账号    -p数据库密码    数据库名   >   文件路径和文件名.sql
*/

服务器还原(假设该服务器已运行Halo站点,但旧服务器数据未迁移过来)

1.创建数据库。在mysql数据库中创建名为halodb的数据库:

/*#使用mysql数据库管理账户登入mysql*/
mysql -u root -p
/*创建数据库(数据库名需与备份数据库名一致)*/
create database halodb character set utf8mb4 collate utf8mb4_bin;    
/*halodb为要创建的数据库名*/

2.删除h2数据库文件。进入.halo2/db/目录下,如果存在”halo-next.mv.db“文件则删除该文件,该文件为Halo站点默认的h2数据库文件。

3.数据库账户授权。如果你需要新建专门的数据库账户允许halo,那么还需对该账户授权访问halo数据库才行:

GRANT ALL PRIVILEGES ON halodb.* TO '数据库账户名'@'localhost';

4.还原数据库。将备份的.sql文件上传至服务器(假设这里我将文件上传至/var/www/路径):

/*使用mysql数据库管理账户登入mysql*/
mysql -u root -p
/*切换到创建的数据库*/
USE halodb;   /*halodb为要创建的数据库名*/
/*执行数据库还原*/
SOURCE /var/www/halodb.sql;    /*路径+.sql文件名*/
/*还原成功的提示信息*/
/*
Query OK, 0 rows affected (0.00 sec)
Records: 241  Duplicates: 0  Warnings: 0
*/

5.还原Halo配置文件“application.yaml”。进入”.halo2文件夹“,将“application.yaml”替换为备份的“application.yaml”。

6.重新编译运行Halo站点。如果你是以.service服务开机自启动运行Halo站点,则执行以下代码进行重启服务:

#重启服务。因Halo项目编译运行较慢,还需等待1分钟左右(视服务器配置决定)
sudo systemctl restart halo.service     #halo.service为你的halo服务名

7.恢复Halo站点设置、图片资源数据及相关插件。进入Halo后台初始化,初始化完成后进入后台”概览“查看数据库是否成功切换为mysql,接着使用Halo自带的备份功能还原站点设置、图片资源数据及相关插件相关数据。至此,Halo站点已全部迁移还原完成。

还原后遇到的问题

问题1:还原后点赞、目录层级无法展开,并且打开任意文章报错

报错代码示例:

post.min.js?v=1.2.2:1  Uncaught TypeError: Cannot read properties of undefined (reading 'enable_read_limit')
    at Object.initReadLimit (post.min.js?v=1.2.2:1:7853)
    at post.min.js?v=1.2.2:1:15500
    at Array.forEach (<anonymous>)
    at HTMLDocument.<anonymous> (post.min.js?v=1.2.2:1:15429)
common.min.js?v=1.2.2:1  Uncaught TypeError: Cannot read properties of undefined (reading 'enable_fold_long_code')
    at Object.foldCode (common.min.js?v=1.2.2:1:3404)
    at common.min.js?v=1.2.2:1:16960
    at Array.forEach (<anonymous>)
    at common.min.js?v=1.2.2:1:16906
post.min.js?v=1.2.2:1  Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'enable_comment')
    at post.min.js?v=1.2.2:1:14468
    at l (post.min.js?v=1.2.2:1:1972)
    at t._invoke (post.min.js?v=1.2.2:1:1732)
    at Generator.next (post.min.js?v=1.2.2:1:2327)
    at s (post.min.js?v=1.2.2:1:7485)
    at r (post.min.js?v=1.2.2:1:7682)
    at post.min.js?v=1.2.2:1:7741
    at new Promise (<anonymous>)
    at post.min.js?v=1.2.2:1:7623
    at Object.jumpToComment (post.min.js?v=1.2.2:1:15333)

解决方法:

1.停止halo。

2.删除.halo文件夹下\halo-theme-Joe3-1.2.2\templates\assets\js\min\下所有gz包。

3.启动halo。

4.主题——>清除模板缓存、重载主题配置。

5.仪表盘——>刷新搜索引擎、刷新页面缓存。

问题2:还原后网站后台无法进入

报错代码示例:

        GET https://服务器IP/themes/theme-Joe3/assets/font/joe_future.woff2 net::ERR_ABORTED 500 (Internal Server Error)
121.36.206.171/:1  Third-party cookie will be blocked. Learn more in the Issues tab.
font-awesome.min.css:1 
        GET https://服务器IP/themes/theme-Joe3/assets/lib/font-awesome/fonts/fontawesome-webfont.woff2?v=4.4.0 500 (Internal Server Error)
font-awesome.min.css:1 
        GET https://服务器IP/themes/theme-Joe3/assets/lib/font-awesome/fonts/fontawesome-webfont.woff?v=4.4.0 500 (Internal Server Error)
font-awesome.min.css:1 
        GET https://服务器IP/themes/theme-Joe3/assets/lib/font-awesome/fonts/fontawesome-webfont.ttf?v=4.4.0 net::ERR_ABORTED 500 (Internal Server Error)

解决方法:

1.进入WAF防火墙。

2.进入“防护站点——>全局配置”,关闭启用 HTTP/2启用 HSTS支持 GZip 压缩支持 Brotli 压缩

0
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin
    1. 支付宝打赏

      qrcode alipay
    2. 微信打赏

      qrcode weixin

评论区