侧边栏壁纸
博主头像
尘荞Joueur博主等级

行动起来,活在当下

  • 累计撰写 86 篇文章
  • 累计创建 42 个标签
  • 累计收到 163 条评论

目 录CONTENT

文章目录

Halo一款强大易用的开源建站工具

Administrator
2023-08-22 / 0 评论 / 6 点赞 / 186 阅读 / 8879 字

关于

Halo-强大易用的开源建站工具!
配合上丰富的模板与插件,帮助你构建你心中的理想站点。

dashboard

相关网站

Halo文档

服务器购买推荐:

点击直达 腾讯云服务器
点击直达 海外VT服务器
点击直达 阿里云服务器

搭建环境

  • 系统 Ubuntu20.04.0
  • 域名一枚,并做好解析到服务器上
  • 安装好Docker、Docker-compose相关教程
  1. 在系统任意位置创建一个文件夹,此文档以 ~/halo 为例。
mkdir ~/halo && cd ~/halo
  1. 创建 docker-compose.yaml
  • 此文档提供两种场景的 Docker Compose 配置文件,请根据你的需要选择一种。
    i. 创建 Halo + PostgreSQL 的实例:
version: "3"

services:
  halo:
    image: halohub/halo:2.8
    container_name: halo
    restart: on-failure:3
    depends_on:
      halodb:
        condition: service_healthy
    networks:
      halo_network:
    volumes:
      - ./:/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:postgresql://halodb/halo
      - --spring.r2dbc.username=halo
      # PostgreSQL 的密码,请保证与下方 POSTGRES_PASSWORD 的变量值一致。
      - --spring.r2dbc.password=openpostgresql
      - --spring.sql.init.platform=postgresql
      # 外部访问地址,请根据实际需要修改
      - --halo.external-url=http://localhost:8090/
      # 初始化的超级管理员用户名
      - --halo.security.initializer.superadminusername=admin
      # 初始化的超级管理员密码
      - --halo.security.initializer.superadminpassword=P@88w0rd
  halodb:
    image: postgres:latest
    container_name: halodb
    restart: on-failure:3
    networks:
      halo_network:
    volumes:
      - ./db:/var/lib/postgresql/data
    ports:
      - "5432:5432"
    healthcheck:
      test: [ "CMD", "pg_isready" ]
      interval: 10s
      timeout: 5s
      retries: 5
    environment:
      - POSTGRES_PASSWORD=openpostgresql
      - POSTGRES_USER=halo
      - POSTGRES_DB=halo
      - PGUSER=halo

networks:
  halo_network:

ii. 创建 Halo + MySQL 的实例:

version: "3"

services:
halo:
  image: halohub/halo:2.8
  container_name: halo
  restart: on-failure:3
  depends_on:
    halodb:
      condition: service_healthy
  networks:
    halo_network:
  volumes:
    - ./:/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=o#DwN&JSa56
    - --spring.sql.init.platform=mysql
    # 外部访问地址,请根据实际需要修改
    - --halo.external-url=http://localhost:8090/
    # 初始化的超级管理员用户名
    - --halo.security.initializer.superadminusername=admin
    # 初始化的超级管理员密码
    - --halo.security.initializer.superadminpassword=P@88w0rd

halodb:
  image: mysql:8.0.31
  container_name: halodb
  restart: on-failure:3
  networks:
    halo_network:
  command: 
    - --default-authentication-plugin=mysql_native_password
    - --character-set-server=utf8mb4
    - --collation-server=utf8mb4_general_ci
    - --explicit_defaults_for_timestamp=true
  volumes:
    - ./mysql:/var/lib/mysql
    - ./mysqlBackup:/data/mysqlBackup
  ports:
    - "3306:3306"
  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=o#DwN&JSa56
    - MYSQL_DATABASE=halo

networks:
halo_network:

iii. 仅创建 Halo 实例(使用默认的 H2 数据库,不推荐用于生产环境,建议体验和测试的时候使用):

version: "3"

services:
 halo:
   image: halohub/halo:2.8
   container_name: halo
   restart: on-failure:3
   volumes:
     - ./:/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:
     # 外部访问地址,请根据实际需要修改
     - --halo.external-url=http://localhost:8090/
     # 初始化的超级管理员用户名
     - --halo.security.initializer.superadminusername=admin
     # 初始化的超级管理员密码
     - --halo.security.initializer.superadminpassword=P@88w0rd

iv. 仅创建 Halo 实例(使用已有外部数据库,MySQL 为例):

version: "3"

services:
  halo:
    image: halohub/halo:2.8
    container_name: halo
    restart: on-failure:3
    network_mode: "host"
    volumes:
      - ./:/root/.halo2
    command:
      # 修改为自己已有的 MySQL 配置
      - --spring.r2dbc.url=r2dbc:pool:mysql://localhost:3306/halo
      - --spring.r2dbc.username=root
      - --spring.r2dbc.password=
      - --spring.sql.init.platform=mysql
      # 外部访问地址,请根据实际需要修改
      - --halo.external-url=http://localhost:8090/
      # 初始化的超级管理员用户名
      - --halo.security.initializer.superadminusername=admin
      # 初始化的超级管理员密码
      - --halo.security.initializer.superadminpassword=P@88w0rd
      # 端口号 默认8090
      - --server.port=8090
  1. 启动 Halo 服务
docker-compose up -d

实时查看日志:

docker-compose logs -f
  1. 用浏览器访问/console 即可进入 Halo 管理页面,用户名和密码为在 docker-compose.yaml 文件中设置的 superadminusernamesuperadminpassword
  • 提示

如果需要配置域名访问,建议先配置好反向代理以及域名解析再进行初始化。如果通过 http://ip:端口号 的形式无法访问,请到服务器厂商后台将运行的端口号添加到安全组,如果服务器使用了 Linux 面板,请检查此 Linux 面板是否有还有安全组配置,需要同样将端口号添加到安全组。

更新容器组
  1. 停止运行中的容器组
cd ~/halo && docker-compose down
  1. 备份数据(重要)
cp -r ~/halo ~/halo.archive
  • 需要注意的是,halo.archive 文件名不一定要根据此文档命名,这里仅仅是个示例。
    3.更新 Halo 服务
    修改 docker-compose.yaml 中配置的镜像版本。
services:
  halo:
    image: halohub/halo:2.8
    container_name: halo
docker-compose pull halo
docker-compose up -d

反向代理

点击查看教程:HestiaCP面板反向代理其他网站设置
点击查看教程:Nginx Proxy Manager 一款Nginx可视化面板
点击查看教程: 宝塔反代、反代后不能上传大文件等解决问题

主题下载

Halo Theme Hao
二次元樱花
butterfly 2.0

6

评论区