准备

文档来源:

https://docs.halo.run/getting-started/install/jar-file

我的演示操作系统:

Debian11

好吧,为了避免知识的诅咒,我尽可能的写所有命令下来,尽可能的详细 ,新手还是更建议宝塔或者比别的面板

https://www.bilibili.com/video/BV1qYxNzxE6C/?share_source=copy_web&vd_source=ea445d51e64d4952bd96d470df8e7c0f

1.准备java

默认的 java 效率似乎性能似乎不太行,这边推荐 zulu 或者龙井 java

注意:

  • 2.21 以上版本:JRE 21 (我使用了这个)

  • 2.20 及以下版本:JRE 17

龙井

https://github.com/dragonwell-project/dragonwell21/releases/tag/dragonwell-extended-21.0.8.0.8%2B9_jdk-21.0.8-ga

zulu

https://www.azul.com/downloads/?version=java-21-lts&package=jdk#zulu

2.数据库

H2 Database,PostgreSQL,MariaDB,MySQL(我使用了这个)

安装

我在/opt/halo路径下导入了halo.jar

终端中输入

cd /opt/halo

wget 文件链接

halo.jar 在这里下载

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

编写sh脚本启动halo

命令:vi start.sh

输入:

"java路径" -Dfile.encoding=UTF-8 -jar halo.jar --spring.config.additional-location=optional:file:/opt/halo

java 路径要精确到文件,像.../bin/java

--spring.config.additional-location=optional:file: 后方是项目的地址

:wq 保存并退出文件编辑

创建配置文件

命令:vi application.yaml

输入:(这个是我的模板,你可以照着进行更改)


server:
  port: 19491    #外部访问的端口

spring:
  r2dbc:
    url: r2dbc:pool:mysql://127.0.0.1:3306/blog
    username: blog
    password: blog123321
  r2dbc-migrate:
    dialect: mysql
  sql:
    init:
      mode: always
      platform: mysql   # 与数据库保持一致(可选,不影响 R2DBC)

halo:
  work-dir: /www/wwwroot/blog    #项目的地址
  external-url: https://blog.yunb.fun   #项目的外部访问域名
  attachment:
    resource-mappings:
      - pathPattern: /upload/**
        locations:
          - migrate-from-1.x

关于数据库,如果你懒你可以想我这样创建一个 用户名称:blog 密码:blog123321 表名:blog 的数据库

spring:
  r2dbc:
    url: r2dbc:pool:mysql://127.0.0.1:3306/blog
    username: blog
    password: blog123321
  r2dbc-migrate:

数据库配置说明:

参数名

描述

spring.r2dbc.url

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

spring.r2dbc.username

数据库用户名

spring.r2dbc.password

数据库密码

spring.sql.init.platform

数据库平台名称,支持 postgresqlmysqlmariadboracleh2

配置对应关系:

链接方式

链接地址格式

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

Oracle(付费版)

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

oracle

H2 Database

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

h2

数据库

很好,你已经完成了一大半,接下来你需要创建你 blog 的数据库

当然你可以使用其他数据库,我这里拿 mysql 在宝塔面板的创建作为例子

5d6e3a556c0715a85d4d8c146d7ec079.png

上线

我这里是利用 Nginx 进行部署的

在宝塔上创建一个网站

部署好 ssl 证书

如图进行反向代理

71b488eac8f41921a365268ef873d667.png

这样你就可以输入你的域名进行访问了!

补充

你可以创建Systemd 服务器让网站自启动

  1. 创建 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
    StandardOutput=syslog
    StandardError=inherit
    
    [Install]
    WantedBy=multi-user.target
    • JAR_PATH:Halo 运行包的绝对路径,例如 /home/halo/app/halo.jar,注意:此路径不支持 ~ 符号。

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

    提示

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

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

  2. 重新加载 systemd

    systemctl daemon-reload
  3. 运行服务

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

    systemctl enable halo

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

journalctl -n 20 -u halo