--- title: 配置参考 description: Halo 配置文件的详细介绍及参考 --- Halo 的配置文件名为 `application.yaml`,其必须位于[工作目录](/getting-started/prepare#工作目录) `~/.halo` 下。 Halo 会读取该目录下的配置文件进行加载。 :::info 如果您是单独下载的官方配置文件,则必须将文件名 application-template.yaml 重命名为 application.yaml ::: 如下将详细列出配置文件 `application.yaml` 中所有的配置项。 ## 基础配置 基础配置中的配置设置一般来说是**必要的**,且必须在 application.yaml 里进行定义。 ### 端口 用于指定 HTTP 服务器监听的端口,Halo 默认设置为 `8090`。 ```yaml server: port: 8090 ``` 请注意,如果您选择设置端口为 `80`,则需要确保您的 80 端口未被占用,通常**不建议**直接设置为 80 端口。 ### 数据库 Halo 目前支持 `H2` 及 `MySQL` 数据库。 :::tip 得益于我们使用的 ORM 框架,Halo 在首次启动的时候会自动根据实体类创建表结构,无需通过 SQL 脚本自行创建,也不会提供所谓的 SQL 脚本。所以,此步骤仅需配置好数据库连接地址和用户名密码即可。注意,H2 无需手动创建数据库,MySQL 需要。 ::: #### H2 :::info 推荐使用 **H2**,较其他数据库来说更为方便。 ::: ```yaml 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` 为默认的数据本地存储地址,请勿修改。 - 默认的数据库账户和密码为 `admin` 和 `123456`,建议将其修改,并妥善保存(此用户名和密码在 Halo 第一次启动的时候将自动创建。并且不支持首次启动后,通过修改配置文件中的账户或者密码,如果修改,再次启动将提示用户名或者密码错误。)。 - 线上环境中,`h2` 的配置使用默认即可。如果需要手动修改一些数据,可将 `web-allow-others` 和 `enabled` 设为 `true` 来开启 h2 控制台,访问路径为 `ip:端口/h2-console`。`JDBC URL`,`username`,`password` 使用配置文件中的即可。 #### MySQL ```yaml 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 Set):`utf8mb4` 3. 排序规则(Collate):`utf8mb4_bin` 4. 存储引擎:`InnoDB` 综上,建议创建数据库采用下面的命令: ```bash create database halodb character set utf8mb4 collate utf8mb4_bin; ``` **注意事项**: - `username` 及 `password` 需要修改为您的 MySQL 数据库账号和密码。 - 默认时区为 `Asia/Shanghai`,如果与您所在时区不一致,则可以修改为您所在的时区。 ## 高级配置 高级配置中的配置设置是可选的,如果不需要,可以略过。 ### 后台路径 Halo 支持自定义后台管理的**根路径**。 ```yaml halo: # Your admin client path is https://your-domain/{admin-path} admin-path: admin ``` 注意:仅为改动后台管理的根路径,因此前后不带 `/`。 ### 缓存 某些情况下,需要用户根据需求来设置缓存数据的保存方式,例如将缓存数据持久化保存在本地。 ```yaml halo: # memory or level cache: memory ``` 目前支持两种策略: - `memory` 将数据缓存至内存,重启服务缓存将清空。 - `level` 将数据缓存至本地,重启服务不会清空缓存。 ### 压缩 启用压缩对于减少带宽和加快页面加载非常有用,在**未使用** `Nginx` 或 `Caddy` 等反向代理服务器时(反向代理服务器通常是默认开启 Gzip 的),可以考虑开启系统自带的Gzip 功能。 ```yaml server: # Response data gzip. compression: enabled: false ``` ## 示例配置文件 :::info 建议根据使用的数据库类型查看。 ::: ### H2 Database ```yaml server: port: 8090 # Response data gzip. compression: enabled: false 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 cache: memory ``` ### MySQL ```yaml server: port: 8090 # Response data gzip. compression: enabled: false 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 cache: memory ``` 官方的完整示例配置文件可以在 [https://dl.halo.run/config/](https://dl.halo.run/config/) 下找到。