变更
halo2.4及以上版本的构建方法发生了变更,请转至halo2.6 从源码构建jar包查看。
前言
从halo2.0
开始,halo
官方不再提供jar包,仅提供docker
部署方式。
docker
部署固然方便,但没有jar包也是遗憾。
本文以halo官方文档为基础,结合我自己的经历,记录构建halo 2.2
版本jar的经历。
环境准备
- archlinux
- git
- openjdk 17
- node.js 18 (官方文档为18,arch仓库为19)
- pnpm 7
pnpm
安装方法请前往官网查看。
克隆仓库
假设文件保存位置在~/
下
git clone https://github.com/halo-dev/halo
git clone https://github.com/halo-dev/console
构建Console
cd ~/console
# 使用git tag命令查看最新的tag
git tag --column
# 切换到指定的tag,此处以2.2.0为例
git checkout v2.2.0
pnpm install
pnpm build:packages
pnpm build
执行命令的过程中可能有警告信息,忽略即可。
执行完上述所有命令后,进入console目录下产生的dist目录
cd dist
将该文件夹下的所有内容复制到~/halo/src/main/resources/console
mkdir -p ~/halo/src/main/resources/console
mv ./* ~/halo/src/main/resources/console
构建jar包
cd ~/halo/src/main/resources
配置相关问题
如无意外,在此文件夹下,有很多以application-*.yaml
为形式的文件。其中的application.yaml
文件(注意没有任何后缀)就是halo 1.x
放置在工作文件夹下的配置文件。
若以源代码构建jar包的方式运行halo 2.x
,该文件必须在构建jar包前就编写好。否则后期即使将它复制到halo
的工作目录下,halo
也不会读取配置,而是根据构建时的文件决定配置。
注意,
halo 1.x
与halo 2.x
的配置文件不通用,数据库同样不通用,不能直接替换。
根据halo
官方Docker Compose部署方法的配置来看,创建数据库方式也稍有不同。
以mariadb
为例,执行create database your_database_name character set utf8mb4 collate utf8mb4_general_ci;
创建数据库。将your_database_name
修改为你的数据库名称。
编辑application.yaml
,以下是mariadb的配置示例
server:
port: 8090 # 修改为你的端口
compression:
enabled: true
error:
whitelabel:
enabled: false
spring:
output:
ansi:
enabled: detect
r2dbc:
url: r2dbc:pool:mariadb://localhost:3306/your_database_name # 修改为你的数据库名称
username: your_username # 修改为你的用户名
password: your_password # 修改为你的密码
sql:
init:
mode: always
platform: mysql
codec:
max-in-memory-size: 10MB
messages:
basename: config.i18n.messages
web:
resources:
cache:
cachecontrol:
max-age: 365d
halo:
external-url: http://your_url:${server.port} # 修改为你的地址
work-dir: ${user.home}/.halo2
plugin:
plugins-root: ${halo.work-dir}/plugins
attachment:
resource-mappings:
- pathPattern: /upload/**
locations:
- migrate-from-1.x
springdoc:
api-docs:
enabled: false
logging:
file:
name: ${halo.work-dir}/logs/halo.log
logback:
rollingpolicy:
max-file-size: 10MB
total-size-cap: 1GB
max-history: 0
management:
endpoints:
web:
exposure:
include: ["health", "info", "startup", "globalinfo"]
endpoint:
health:
probes:
enabled: true
info:
java:
enabled: true
os:
enabled: true
若你要使用其他数据库,参照当前目录下别的配置文件修改即可。默认配置文件不做任何修改,则是使用H2数据库。配置文件中的所有路径也可以更改为绝对路径。
开始构建
cd ~/halo
git tag --column
# 这两句命令同构建Console一样
git checkout v2.2.0
vim gradle.properties
# 构建之前需要修改 gradle.properties 中的 version 为当前 tag 的版本号。
# 如:version=2.2.0
./gradlew clean build -x check -x jar
构建完成之后,构建完成的文件在~/halo/build/libs
目录下。
其他问题
用户名与密码
构建完成后初次运行,后台默认用户名是admin
,默认密码则随机生成,需要到halo
日志中寻找。
如图所示,密码一般在倒数几行日志中可以找到。
频繁的报错
情况类似GitHub上这些Issues
但貌似都不影响使用。