Ubuntu 20.04.6 Server部署Halo博客系统

说明:之前使用的 hexo 博客系统,由于受 Github 网络条件限制,外加存储介质和数据安全性的问题,综合考虑后切换至 WordPress,后续因使用过程中发现 WordPress 的优秀主题板块自定义度极高,超越需求及自身能力,故寻找到目前比较好使的 Halo 系统,现进行部署记载。

Halo Github:https://github.com/halo-dev/halo

Halo 官网:https://www.halo.run

Halo Dockerhub:https://hub.docker.com/r/halohub/halo

1.dcoker compose方式启动.yaml文件编写

Halo 官网给的使用手册如下

实际个人编写.yaml 文件如下,如需使用此配置,可下载

services:
  halo:
    image: registry.fit2cloud.com/halo/halo:2
    restart: unless-stopped
    depends_on:
      halodb:
        condition: service_healthy
    networks:
      halo:
    volumes:
      - /opt/halo/halo2:/root/.halo2
    ports:
      - "1002:8090"
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8090/actuator/health/readiness"]
      interval: 30s
      timeout: 5s
      retries: 5
      start_period: 30s
    environment:
      # JVM 参数,默认为 -Xmx256m -Xms256m,可以根据实际情况做调整,置空表示不添加 JVM 参数
      - JVM_OPTS=-Xms1G -Xmx1G
    command:
      - --spring.r2dbc.url=r2dbc:pool:mysql://halodb:3306/halo
      - --spring.r2dbc.username=root
      # MySQL 的密码,请保证与下方 MYSQL_ROOT_PASSWORD 的变量值一致。
      - --spring.r2dbc.password=password
      - --spring.sql.init.platform=mysql
      # 外部访问地址,请根据实际需要修改
      - --halo.external-url=https://blog.19950628.xyz 

  halodb:
    image: mysql:8.1.0
    restart: unless-stopped
    networks:
      halo:
    command: 
      - --default-authentication-plugin=caching_sha2_password
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_general_ci
      - --explicit_defaults_for_timestamp=true
    volumes:
      - /opt/halo/mysql/mysql:/var/lib/mysql
      - /opt/halo/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=password
      - MYSQL_DATABASE=halo

networks:
  halo:

2.建立数据持久化存放路径,并启动Halo容器

/opt路径下,新建容器数据持久化文件夹,以容器名称命名该文件夹 halo

刷新检查

因为此 compose 有两部分的容器,需要配合使用,在使用 Halo 容器时,前提是需要依赖 MySQL 数据库容器,所以再在 /opt/halo下,分别新建 halo2mysql文件夹

刷新检查

因在 compose 配置的过程中对 MySQL 数据库进行了备份,目的是为了容灾,故这里再次进行了细分,主库存放在 mysql 文件夹,备库存放在 mysqlBackup

刷新检查

上传 halo_compose.yaml 至 /opt/halo 下

切换路径至文件所在处,启动容器

docker compose -f halo_compose.yaml up -d 

3.初始化Halo容器

容器登录方式:服务器IP:1002,这里是内网 IP:192.168.1.4,则实际登录地址为:192.168.1.4:1002