You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
docs/versioned_docs/version-2.10/getting-started/config.md

6.4 KiB

title description
配置参考 Halo 配置文件的详细介绍及参考

Halo 的配置文件名为 application.yaml,其必须位于工作目录 ~/.halo 下。 Halo 会读取该目录下的配置文件进行加载。

:::info 如果您是单独下载的官方配置文件,则必须将文件名 application-template.yaml 重命名为 application.yaml :::

如下将详细列出配置文件 application.yaml 中所有的配置项。

基础配置

基础配置中的配置设置一般来说是必要的,且必须在 application.yaml 里进行定义。

端口

用于指定 HTTP 服务器监听的端口Halo 默认设置为 8090

server:
  port: 8090

请注意,如果您选择设置端口为 80,则需要确保您的 80 端口未被占用,通常不建议直接设置为 80 端口。

数据库

Halo 目前支持 H2MySQL 数据库。

:::tip 得益于我们使用的 ORM 框架Halo 在首次启动的时候会自动根据实体类创建表结构,无需通过 SQL 脚本自行创建,也不会提供所谓的 SQL 脚本。所以此步骤仅需配置好数据库连接地址和用户名密码即可。注意H2 无需手动创建数据库MySQL 需要。 :::

H2

:::info 推荐使用 H2,较其他数据库来说更为方便。 :::

spring:
  datasource:
    driver-class-name: org.h2.Driver
    url: jdbc:h2:file:~/.halo/db/halo
    username: admin
    password: 123456
  h2:
    console:
      settings:
        web-allow-others: false
      path: /h2-console
      enabled: false

注意事项

  • url 为默认的数据本地存储地址,请勿修改。
  • 默认的数据库账户和密码为 admin123456,建议将其修改,并妥善保存(此用户名和密码在 Halo 第一次启动的时候将自动创建。并且不支持首次启动后,通过修改配置文件中的账户或者密码,如果修改,再次启动将提示用户名或者密码错误。)。
  • 线上环境中,h2 的配置使用默认即可。如果需要手动修改一些数据,可将 web-allow-othersenabled 设为 true 来开启 h2 控制台,访问路径为 ip:端口/h2-consoleJDBC URLusernamepassword 使用配置文件中的即可。

:::warning 特别注意:在开启 h2-console 并完成所需操作之后,一定要再次关闭 h2-console 并重启,不要长时间将 h2-console 处于开启状态,这可能会有隐性的安全风险。 :::

MySQL

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/halodb?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
    username: root
    password: 123456

要求

  1. 版本5.7 +
  2. 字符集Character Setutf8mb4
  3. 排序规则Collateutf8mb4_bin
  4. 存储引擎:InnoDB

综上,建议创建数据库采用下面的命令:

create database halodb character set utf8mb4 collate utf8mb4_bin;

注意事项

  • usernamepassword 需要修改为您的 MySQL 数据库账号和密码。
  • 默认时区为 Asia/Shanghai,如果与您所在时区不一致,则可以修改为您所在的时区。

高级配置

高级配置中的配置设置是可选的,如果不需要,可以略过。

后台路径

Halo 支持自定义后台管理的根路径

halo:
  # Your admin client path is https://your-domain/{admin-path}
  admin-path: admin

注意:仅为改动后台管理的根路径,因此前后不带 /

缓存

某些情况下,需要用户根据需求来设置缓存数据的保存方式,例如将缓存数据持久化保存在本地。

halo:
  # memory or level or redis
  cache: memory

目前支持三种策略:

  • memory 将数据缓存至内存,重启服务缓存将清空。
  • level 将数据缓存至本地,重启服务不会清空缓存。
  • redis 将数据缓存至 Redis重启服务不会清空缓存如需分布式部署 Halo请选用此种缓存方式。

注意事项

  • 如果选用 Redis 缓存方式,请在配置文件加入 Redis 相关配置,完整的配置示例如下:
server:
  port: 8090
  
  # Response data gzip.
  compression:
    enabled: true
    
spring:
  datasource:
    # MySQL database configuration.
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/halodb?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
    username: root
    password: 123456
  redis:
    # Redis cache configuration.
    port: 6379
    database: 0
    host: 127.0.0.1
    password: 123456

halo:
  # Your admin client path is https://your-domain/{admin-path}
  admin-path: admin

  # memory or level or redis
  cache: redis

压缩

启用压缩对于减少带宽和加快页面加载非常有用,在未使用 NginxCaddy 等反向代理服务器时(反向代理服务器通常是默认开启 Gzip 的),可以考虑开启系统自带的 Gzip 功能。

server:
  # Response data gzip.
  compression:
    enabled: true

示例配置文件

:::info 建议根据使用的数据库类型查看。 :::

H2 Database

server:
  port: 8090

  # Response data gzip.
  compression:
    enabled: true
spring:
  datasource:
    # H2 database configuration.
    driver-class-name: org.h2.Driver
    url: jdbc:h2:file:~/.halo/db/halo
    username: admin
    password: 123456

  # H2 database console configuration.
  h2:
    console:
      settings:
        web-allow-others: false
      path: /h2-console
      enabled: false

halo:
  # Your admin client path is https://your-domain/{admin-path}
  admin-path: admin

  # memory or level or redis
  cache: memory

MySQL

server:
  port: 8090

  # Response data gzip.
  compression:
    enabled: true
spring:
  datasource:
    # MySQL database configuration.
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/halodb?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
    username: root
    password: 123456

halo:
  # Your admin client path is https://your-domain/{admin-path}
  admin-path: admin

  # memory or level or redis
  cache: memory

官方的完整示例配置文件可以在 https://dl.halo.run/config/ 下找到。