blog搬家!从wordpress迁移到halo,再一次感受到halo插件的强大
本文最后更新于 2024-07-03,文章内容可能已经过时。
大家好,这里是Cherry,喜爱折腾、捡垃圾、玩数码,热衷于分享NAS、docker玩耍经验~
前几天那啥,不是弄了一台阿里云99包年的2c2g小菜鸡嘛,然后顺势就给域名备了一个案。
本来打算是既然备案完成,就把现在放在软路由里的wordpress迁移到vps上,包升级,docker安装一气呵成,再装完wordpress后,突然看到群里小伙伴说wordpress太重量级,小菜鸡打开又卡,于是乎想了想,确实,要不重新整个博客?
但是想到新架构的博客要重新配置东西,还要迁移文章、迁移图片,好麻烦!!!!十万个不情愿,于是拖了两天,终于快到月底了,多拖一天,99元就要多哭泣一天,整呗!
是反代还是迁移,that is a question
其实在正式迁移之前,内心还是做过挣扎的,原因还是懒,既然99的小菜鸡内存不足,那我直接反代本地wp不就得了么,这样啥都不用动,一个nginx搞定一切。
具体思路是这样滴!是不是很妥帖,我连图床都不需要迁移!
但是吧,wordpress免费主题实在太难看了,而且统计流量还需要用umami,反代以后如果需要区分ip来源的设置又很麻烦,这相当于从一个坑跳到另外一个坑。
然后我在obsidian里搜索了一下推送博客的插件,发现halo、wordpress、hexo这些都有,那既然如此,一不做二不休,大不了到时候重新发一遍!
选择了很久后,最终定下了HALO作为新的博客架构。就决定是你了——halo!
新装一个halo,选一个好康的主题
新装一个halo特别简单,现在halo 2.X版本只需要通过docker即可安装,而且halo的版本还不是io.docker的,随便下载(至于mysql,你应该有吧?)
🔻将下面文件复制到docker-compose.yaml文件内保存,然后上传到阿里云vps内。
version: "3"
services:
halo:
image: registry.fit2cloud.com/halo/halo:2.16
restart: on-failure:3
depends_on:
halodb:
condition: service_healthy
networks:
halo_network:
volumes:
- ./halo2:/root/.halo2
ports:
- "8090:8090"
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8090/actuator/health/readiness"]
interval: 30s
timeout: 5s
retries: 5
start_period: 30s
command:
- --spring.r2dbc.url=r2dbc:pool:mysql://halodb:3306/halo
- --spring.r2dbc.username=root
# MySQL 的密码,请保证与下方 MYSQL_ROOT_PASSWORD 的变量值一致。
- --spring.r2dbc.password=123123123
- --spring.sql.init.platform=mysql
# 外部访问地址,请根据实际需要修改
- --halo.external-url=http://cgakki.top/
halodb:
image: mysql:8.1.0
restart: on-failure:3
networks:
halo_network:
command:
- --default-authentication-plugin=caching_sha2_password
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_general_ci
- --explicit_defaults_for_timestamp=true
volumes:
- ./mysql:/var/lib/mysql
- ./mysqlBackup:/data/mysqlBackup
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "--silent"]
interval: 3s
retries: 5
start_period: 30s
environment:
# 请修改此密码,并对应修改上方 Halo 服务的 SPRING_R2DBC_PASSWORD 变量值
- MYSQL_ROOT_PASSWORD=123123123
- MYSQL_DATABASE=halo
networks:
halo_network:
🔻登录阿里云vps,ssh界面输入以下指令(什么?没有docker,阿里云有教程可以安装)
cd /home/halo
docker compose up -d
主题我选了这个——Hao,虽然名字是好,但具体好不好也得用了才知道。切换以后嘻嘻品味了一下,感觉还蛮符合自己的需求的,一是好看,二是清晰,所以最后就决定是HAO的主题了。
主页效果,确实很好看有没有~~ 封面因为是一键导入的文章,还没来得及设置,需要手动一个个设置,这点很讨厌,还没找到解决方法!
值得一提的是,这个主题好多人在用哦~ 比如我们黑群晖的“官网” https://rrorg.cn/
,用的就是这个主题。
关于一键导入这件事
使用了halo应用商城内的【站点迁移】这个应用,支持halo1.X、wp、huge、ghots、rss、atom feed的数据迁移。核心是域名不能变!!! 核心是域名不能变!!! 核心是域名不能变!!!
第一步我们需要从wordpress里将所有的数据通过xml的格式导出,选择【工具】-【导出】-【所有内容】
会形成这样一份xml文件,我们只要保存备用即可
第二步是把媒体资料都导出,因为wordpress是使用docker安装的,我们只需要将对应路径下的/wp-content/upload/
这整个文件夹复制出来就可以了。
需要注意的是,如果是采用volume卷模式来绑定数据的,需要输入指令来获取volume的真实地址,之后继续操作即可。
docker volume ls #查看wp的实际卷名字
docker volume inspect wp_wordpress
比如图里就是wp的数据卷真实地址
第三步是在转移媒体文件,一般halo的本地数据文件路径在根目录的 /halo2
下,我们需要新建一个halo2/attachments/upload
路径,然后把wp的uploads下的文件全部拷贝到halo的halo2/attachments/upload
下。
第四步修改halo配置文件。来到目录halo根目录halo2/
下,我们需要新建一个application.yaml
的文件,然后填入以下代码,完成以后重启halo即可。
halo:
attachment:
resource-mappings:
- pathPattern: /wp-content/uploads/**
locations:
- migrate-from-wp
🔻完成以后,可以在halo的附件里看到附件元数据了,可以看红框内的URL和之前wp是一致的,这样我们就不需要更改图片URL从而实现图床迁移。
最后一步导入数据。来到halo页面,选择【工具】-【迁移】,导入刚才从wp导出的xml文件导入。
会提示一共有多少数据和图片附件,我们只需要执行导入即可。
最后的最后, 我们在文章封面处需要设置路径,这一点只能手工操作,木得办法。