yanchang
yanchang
发布于 2025-07-31 / 22 阅读
0
0

安装部署halo

基础安装部署

在开始之前,需要确保服务器已经满足以下条件:

  1. Java 环境,版本要求:

    • 2.21 以上版本:JRE 21

    • 2.20 及以下版本:JRE 17

  2. 数据库(任一)

由于 Linux 发行版本的差异以及包管理器的不同,此文档不会涉及到如何安装 Java 环境以及数据库建议查阅对应依赖的官方文档进行安装。

  1. 创建存放运行包的目录,这里以 ~/app 为例

    mkdir ~/app && cd ~/app
    
  2. 下载运行包

    wget https://dl.halo.run/release/halo-2.21.0.jar -O halo.jar
    

    信息

    以下是官方维护的下载地址:

    1. https://download.halo.run

    2. https://github.com/halo-dev/halo/releases

  3. 创建 工作目录

    mkdir ~/.halo2 && cd ~/.halo2
    
  4. 创建 Halo 配置文件

    vim application.yaml
    

    将以下内容复制到 application.yaml 中,根据下面的配置说明进行配置。

    application.yaml

    server:
      # 运行端口
      port: 8090
    spring:
      # 数据库配置,支持 MySQL、MariaDB、PostgreSQL、H2 Database,具体配置方式可以参考下面的数据库配置
      r2dbc:
        url: r2dbc:h2:file:///${halo.work-dir}/db/halo-next?MODE=MySQL&DB_CLOSE_ON_EXIT=FALSE
        username: admin
        password: 123456
      sql:
        init:
          mode: always
          # 需要配合 r2dbc 的配置进行改动
          platform: h2
    halo:
      # 工作目录位置
      work-dir: ${user.home}/.halo2
      # 外部访问地址
      external-url: http://localhost:8090
      # 附件映射配置,通常用于迁移场景
      attachment:
        resource-mappings:
          - pathPattern: /upload/**
            locations:
              - migrate-from-1.x
    

数据库配置说明:

参数名

描述

spring.r2dbc.url

数据库连接地址,详细可查阅下方的 配置对应关系

spring.r2dbc.username

数据库用户名

spring.r2dbc.password

数据库密码

spring.sql.init.platform

数据库平台名称,支持 postgresqlmysqlmariadbh2

配置对应关系:

链接方式

链接地址格式

spring.sql.init.platform

PostgreSQL

r2dbc:pool:postgresql://{HOST}:{PORT}/{DATABASE}

postgresql

MySQL

r2dbc:pool:mysql://{HOST}:{PORT}/{DATABASE}

mysql

MariaDB

r2dbc:pool:mariadb://{HOST}:{PORT}/{DATABASE}

mariadb

H2 Database

r2dbc:h2:file:///${halo.work-dir}/db/halo-next?MODE=MySQL&DB_CLOSE_ON_EXIT=FALSE

h2

信息

  • HOST:数据库服务地址,如 localhost

  • PORT:数据库服务端口,如 3306

  • DATABASE:数据库名称,如 halo,需要提前创建,以 MySQL 为例:

    create database halo character set utf8mb4 collate utf8mb4_bin;
  1. 配置完成之后,保存即可。

  2. 测试运行 Halo

    cd ~/app && java -Dfile.encoding=UTF-8 -jar halo.jar --spring.config.additional-location=optional:file:$HOME/.halo2/
    
  3. 如果没有观察到异常日志,即可尝试访问 Halo

    打开 http://ip:端口号 即可跳转到初始化页面。

作为服务运行

下面将介绍如何将 Halo 作为服务运行,当然你也可以写一件启动脚本,(参考之前的文章)

以实现在关闭 ssh 连接后,Halo 仍然可以正常运行。

此文档以 Systemd 为例,也可以参考:Installing Spring Boot Applications

  1. 退出 halo 账户,登录到 root 账户

    如果当前就是 root 账户,请略过此步骤。

    exit
    
  2. 创建 halo.service 文件

    vim /etc/systemd/system/halo.service
    

    将以下内容复制到 halo.service 中,根据下面的配置说明进行配置。

    /etc/systemd/system/halo.service

    [Unit]
    Description=Halo Service
    Documentation=https://docs.halo.run
    After=network-online.target
    Wants=network-online.target
    
    [Service]
    Type=simple
    User=USER
    ExecStart=/usr/bin/java -Dfile.encoding=UTF-8 -server -Xms256m -Xmx256m -jar JAR_PATH --spring.config.additional-location=optional:file:/home/halo/.halo2/
    ExecStop=/bin/kill -s QUIT $MAINPID
    Restart=always
    StandOutput=syslog
    
    StandError=inherit
    
    [Install]
    WantedBy=multi-user.target
    
    • JAR_PATH:Halo 运行包的绝对路径,例如 /home/halo/app/halo.jar,注意:此路径不支持 ~ 符号。

    • USER:运行 Halo 的系统用户,如果有按照上方教程创建新的用户来运行 Halo,修改为你创建的用户名称即可。反之请删除 User=USER

    提示

    请确保 /usr/bin/java 是正确无误的。建议将 ExecStart 中的命令复制出来运行一下,保证命令有效。

    配置完成之后,保存即可。

  3. 重新加载 systemd

    systemctl daemon-reload
    
  4. 运行服务

    systemctl start halo
    
  5. 在系统启动时启动服务

    systemctl enable halo
    

最后,你可以通过下面的命令查看服务日志:

journalctl -n 20 -u halo

版本升级

  1. 备份数据,可以参考 备份与恢复 进行完整备份(可选,但推荐备份)。

  2. 停止 Halo 服务

    service halo stop
    
  3. 下载新版本的 Halo 运行包,覆盖原有的运行包

    wget https://dl.halo.run/release/halo-2.21.0.jar -O /home/halo/app/halo.jar
    

    信息

    以下是官方维护的下载地址:

    1. https://download.halo.run

    2. https://github.com/halo-dev/halo/releases

  4. 启动 Halo 服务

    service halo start
    


评论