使用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 your-email@mail.com
}
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博客
评论区