侧边栏壁纸
  • 累计撰写 19 篇文章
  • 累计创建 22 个标签
  • 累计收到 2 条评论

目 录CONTENT

文章目录

使用jar部署Halo2博客站点

Yttrium
2023-10-27 / 1 评论 / 0 点赞 / 64 阅读 / 6122 字

使用jar部署Halo2博客站点

准备工作

  • 必须

    • 一台服务器

    • 构建好的Halo jar包, 可以从此处下载

  • 可选

    • Caddy反代

    • 单独的用户/组

    • 作为守护进程运行

详细过程

本文基于Ubuntu2204, 其它系统可做参考

下载所需文件, 安装java环境

在服务器上下载Halo的jar包, 安装java(jre17+)环境

此处以将文件下载至/home/halo 为例

cd /home/halo
sudo apt-get install wget openjdk-17-jre-headless -y
wget "https://github.com/Lu7fer/Jar4Halo/releases/download/2.11.0-SNAPSHOT/application-2.11.0-SNAPSHOT.jar" # 此处链接可更换为最新版

修改配置文件

修改application.yaml文件, 配置文件可从这里下载. 按照下面的提示修改, 修改完成后可将文件名改为application-prod.yaml (prod可改为其它喜欢的内容)将这份配置文件与jar放在同一目录下

server:
  port: 8090 # 可按需修改, 若小于1024, 则需要root权限
  address: 0.0.0.0
  forward-headers-strategy: framework
  compression:
    enabled: true
  error:
    whitelabel:
      enabled: false
spring:
  output:
    ansi:
      enabled: detect
  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
      platform: h2
  codec:
    max-in-memory-size: 10MB
  messages:
    basename: config.i18n.messages
  web:
    resources:
      cache:
        cachecontrol:
          max-age: 365d
  cache:
    type: caffeine
    caffeine:
      spec: expireAfterAccess=1h, maximumSize=10000

halo:
  caches:
    page:
      # Disable page cache by default due to experimental feature
      disabled: true
  work-dir: /home/halo #可自定义路径, 需注意文件权限
  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: "*"
  endpoint:
    shutdown:
      enabled: true
    health:
      probes:
        enabled: true
  info:
    java:
      enabled: true
    os:
      enabled: true

resilience4j.ratelimiter:
  configs:
    authentication:
      limitForPeriod: 3
      limitRefreshPeriod: 1m
      timeoutDuration: 0
    comment-creation:
      limitForPeriod: 10
      limitRefreshPeriod: 1m
      timeoutDuration: 0s
    signup:
      limitForPeriod: 3
      limitRefreshPeriod: 1h
      timeoutDuration: 0s
    send-email-verification-code:
      limitForPeriod: 1
      limitRefreshPeriod: 1m
      timeoutDuration: 0s
    verify-email:
      limitForPeriod: 3
      limitRefreshPeriod: 1h
      timeoutDuration: 0s
    send-reset-password-email:
      limitForPeriod: 2
      limitRefreshPeriod: 1m
      timeoutDuration: 0s

启动服务

进入下载的jar文件所在目录, 使用以下命令启动halo博客

java -Dspring.profiles.active=prod -jar application-版本号.jar

如果看到类似以下的日志, 则表示配置文件已被正确识别

2023-10-27T08:10:49.185+01:00  INFO 3692316 --- [main] run.halo.app.Application    : The following 1 profile is active: "prod" 

如果没有报错就表示服务已经成功启动, 使用以下命令可让其后台启动运行

nohup java -Dspring.profiles.active=prod -jar application-v2.11.3.jar > /dev/null &

至此已经成功启动Halo博客, 接下来是一些可选的操作.

使用Caddy反向代理

caddy配置简单, 并可以自动申请和续约SSL证书, 比Nginx更方便. 安装Caddy可以看这里

下面给出一个简单的Caddy配置文件, 默认的位置在/etc/caddy/Caddyfile

{
	# SSL email
	email [email protected]
}
www.vbnm.cf {
	reverse_proxy localhost:8090
}

如果使用反代, 可以将配置文件中server.address项改为127.0.0.1 以提高安全性.

修改完配置文件后使用以下命令更新配置

sudo systemctl restart caddy

使用单独的用户(组)启动

为halo创建一个专属的用户运行, 避免使用root用户

以下命令会创建一个名为halo的group和user

sudo groupadd halo
sudo useradd halo -g halo # -g 后的参数为group名

/home 文件夹下创建一个和用户名同名的文件夹, 并修改文件归属属性

cd /home
mkdir halo
chown -R halo halo # 第一个halo为目标用户, 第二个halo为要修改的文件
chgrp -R halo halo

使用su命令进入切换到用户

sudo su halo

参考启动服务章节使用命令启动即可

作为守护进程运行

编写halo.service配置文件, 文件名可修改

[Unit]
Description=Halo2 server
After=network.target

[Service]
Type=simple
User=halo
WorkingDirectory=/home/halo
ExecStart=java -Dspring.profiles.active=prod -jar application-2.11.0-SNAPSHOT.jar
Restart=on-failure

[Install]
WantedBy=multi-user.target

halo.service配置文件复制到 /etc/systemd/system 文件夹中

可以使用下列命令操作halo

sudo systemctl enable halo # 将halo加入开机自启, 此处和以下的halo为上面配置文件的文件名
sudo systemctl disable halo # 将halo取消开机自启
sudo systemctl start halo # 启动halo博客
sudo systemctl stop halo # 停止halo博客

0

评论区