前言

相较于之前2.2版本的构建方式,halo2.4及以上的构建方法发生了一些变化,以下内容将基于从源码构建halo 2.x jar包,更新部分内容

环境准备

仅将此文章中的archlinux从源码构建halo 2.x jar包更换为ubuntu 22.04。

ubuntu仓库中的nodejs相较官方需求又太低了。

我在此不安装ubuntu仓库中的nodejs,而是从官网下载18.16.1版本,并手动安装。

wget -O node.tar.xz https://nodejs.org/dist/v18.16.1/node-v18.16.1-linux-x64.tar.xz

# 假设保存路径为/home/user

tar -xvf node.tar.xz

mv node-v18.16.1-linux-x64/ node/

# 后续更新可能导致版本不同,具体使用的版本请访问nodejs官网获取,此处仅仅作为示例

vim ~/.bashrc

# 更改环境变量

export PATH=$PATH:/home/user/node/bin

# 将上一条命令添加到~/.bashrc文件中,并保存退出

source ~/.bashrc

完成上述步骤后,执行node --version

若输出版本号,则说明配置完成

克隆仓库

从 2.4.0 开始,Console 项目已经合并到 Halo 主项目,所以不再需要单独克隆 Console 的项目仓库。

所以仅需执行一条git命令即可。

假设此处执行git命令时,在/home/user目录下

git clone https://github.com/halo-dev/halo

cd halo

git tag --column

# 使用git tag命令查看最新的tag

git checkout v2.6.1

# 切换到指定的tag,此处以2.6.1为例

配置文件

配置文件的注意事项仍然相同。

在当前版本中,配置文件路径变更为halo/application/src/main/resources,命名规则无变化。

配置文件内容稍有变化,以下是我修改过的版本,仍然以mariadb数据库为例。

其他数据库的配置文件参考同一目录下的其他模板,保持不变则是h2数据库。

server:
  port: 8090
  forward-headers-strategy: framework
  compression:
    enabled: true
  error:
    whitelabel:
        enabled: false
spring:
  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_address:${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
  writer-with-order-by-keys: true

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", "logfile"]
  endpoint:
    health:
      probes:
        enabled: true
  info:
    java:
      enabled: true
    os:
      enabled: true

构建console

执行make -C console build,等待执行完毕即可。

构建jar包

构建之前需要修改gradle.properties中的version为当前tag的版本号,如version=2.6.1

执行./gradlew clean build -x check,等待执行完毕即可。

构建完成之后,在halo/application/build/libs/application-2.6.1.jar 即为构建完成的文件。

使用java -jar application-2.6.1.jar运行即可。

其他

初始化时,会报错服务器内部错误。但后续不会出现。

观察日志后,推测原因如下:从源码构建的jar包默认不包含插件,halo在初始化时并未找到任何插件,故报错。(瞎猜的,切勿当真)