使用halo搭建站点
Linux部署halo站点
参考:https://docs.halo.run/getting-started/install/jar-file
-
安装JDK17
Linux安装JDK17参考:https://blog.youkuaiyun.com/omaidb/article/details/146346521?fromshare=blogdetail&sharetype=blogdetail&sharerId=146346521&sharerefer=PC&sharesource=omaidb&sharefrom=from_link -
下载halo的jar包
下载地址:https://download.halo.run/
创建halo服务用户
# 创建halo服务用户
## -r 创建系统用户,不创建home
## -s 指定shell,这里为false,不能登录
useradd -rs /bin/false halo
创建目录
# 创建halo主目录和halo数据目录
mkdir -p /app/halo/data
# 创建.halo2目录
mkdir -p /app/halo/.halo2
# 修改目录属主属组为halo
chown -R halo:halo /app/halo
# 为halo目录设置755权限
chmod -R 755 /app/halo
# 设置halo数据目录的权限
chmod -R 700 /app/halo/data
# 创建halo日志目录
mkdir -p /var/log/halo/
# 修改日志目录属主和属组
chown -R halo:halo /var/log/halo/
# 为halo日志目录设置755权限
chmod -R 755 /var/log/halo/
创建halo的自定义配置文件
默认生成
的配置文件
保存到~\.halo
目录,保存为application.yaml
可以手动在其他目录
创建配置文件
。
# 编辑halo配置文件
vim /app/halo/.halo2/application.yaml
halo配置文件如下
# 应用程序的 HTTP 监听端口,默认为 8080
server:
port: 8080
spring:
# 数据源配置
datasource:
# 数据库连接 URL,使用 H2 内存数据库,数据库名为 halo
# DB_CLOSE_DELAY=-1 表示延迟关闭数据库直到 JVM 关闭
# DB_CLOSE_ON_EXIT=FALSE 表示数据库不会在 JVM 退出时自动关闭
url: jdbc:h2:mem:halo;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
# 数据库驱动类名,H2 数据库的 JDBC 驱动
driver-class-name: org.h2.Driver
# 数据库用户名,默认为 sa
username: sa
# 数据库密码,默认为空
password:
# 数据源初始化模式,always 表示每次启动时都初始化数据源
# initialization-mode: always
# H2数据库控制台配置(生产环境必须关闭)
h2:
console:
# 禁止通过外网访问控制台
settings:
web-allow-others: false
# 控制台访问路径(当前已禁用)
path: /h2-console
# 禁用Web控制台(重要安全设置)
enabled: false
# JPA 配置
jpa:
# 指定 Hibernate 使用的数据库方言,这里是 H2 数据库
database-platform: org.hibernate.dialect.H2Dialect
# 是否在控制台显示 SQL 语句,便于调试
show-sql: true
# Hibernate 的数据库结构同步策略
hibernate:
# update 表示在启动时自动更新数据库结构,以匹配实体类的定义
ddl-auto: update
# 日志配置
logging:
level:
# 设置根日志级别为 INFO,记录普通运行时信息
root: info
# 设置 Spring 框架相关日志级别为 INFO
org.springframework: info
# 设置 Hibernate 相关日志级别为 INFO
org.hibernate: info
# Halo核心参数配置
halo:
# 后台管理路径(建议修改默认值提升安全性)
admin-path: admin
# 数据目录
work-dir: /app/halo/data
# 缓存策略选择(level=磁盘缓存,memory=内存缓存)
# 生产环境建议使用level避免内存溢出
cache: level
# 附件映射配置,通常用于迁移场景
# 用于将旧版本 Halo(如 1.x)的附件路径映射到新版本的路径
attachment:
resource-mappings:
# 定义一个路径模式映射规则
- pathPattern: /upload/**
# 匹配路径模式的规则,这里表示匹配 /upload/ 下的所有资源
locations:
# 指定映射来源的路径或标识
# 表示这些资源是从 Halo 1.x 版本迁移过来
- migrate-from-1.x
确保halo的相关文件属主属组
为halo
用户
sudo chown -R halo:halo /app/halo/
Linux配置halo的开机自启动
Linux下配置开机自启动服务有两种方法:
-
systemd的service文件
参考:https://blog.youkuaiyun.com/omaidb/article/details/131708296?fromshare=blogdetail&sharetype=blogdetail&sharerId=131708296&sharerefer=PC&sharesource=omaidb&sharefrom=from_link
使用Linux的Supervisor配置halo服务自启动
# 安装supervisord
yum install -y supervisor
# 开机自启动并现在启动supervisord服务
systemctl enable --now supervisord
编辑halo服务启动文件
vim /etc/supervisord.d/app.ini
配置内容如下:
[supervusird]
# 禁止后台运行
nodaemon=true
# 程序的名称
[program:halo]
# 执行的命令
command=/usr/local/java/jdk-17.0.12/bin/java -Dfile.encoding=UTF-8 -Dhalo.data-dir=/app/halo/data -server -Xms256m -Xmx256m -jar /app/halo/halo-2.20.17.jar --spring.config.additional-location=optional:file:/app/halo/.halo2/
# 程序工作目录
directory=/app/halo/data
# 执行进程的用户
user=halo
# 停止方式
stopsignal=INT
# 结束子进程(下面两项配置)
stopasgroup=true
# 强制终止时,整个进程组退出
killasgroup=true
# 是否自动启动
autostart=true
# 是否自动重启
autorestart=true
# 自动重启间隔
startsecs=1
# 错误输出路径
stderr_logfile=/var/log/halo/halo.err.log
# 日志输出路径
stdout_logfile=/var/log/halo/halo.out.log
启动halo服务
# 重载服务
supervisorctl reload
# 查看halo服务运行状态
sudo supervisorctl status halo
# 实时查看halo的日志
supervisorctl tail -f halo
使用Linux的systemd服务文件配置halo的以实现自动启动(2选1)
vim /etc/systemd/system/halo.service
service文件内容如下:
[Unit]
Description=Halo Service
Documentation=https://halo.run
After=network-online.target
Wants=network-online.target
[Service]
ExecStart=/usr/local/java/jdk-17.0.12/bin/java -Dfile.encoding=UTF-8 -server -Xms256m -Xmx256m -jar /app/halo/halo-2.20.17.jar --spring.config.additional-location=optional:file:/home/halo/.halo2/
[Install]
WantedBy=multi-user.target
结果验证
Windows安装halo
参考:https://docs.halo.run/getting-started/install/jar-file
- 先安装jdk11
- 下载halo的jar包
下载地址:https://download.halo.run/
配置Windows服务
# 安装nssm
choco install nssm -y
# 使用nssm配置halo服务
nssm install halo
# 后续配置如下
配置Windows服务账号
系统用户这里一定要选择.\username
,否则找不到配置文件.
halo目录
halo的缺点
- 不支持
导入文章
- 不支持
导出文章
到本地文件
nginx配置反代
# 安装nginx
yum install -y nginx-all-modules
# 启动服务
systemctl enable --now nginx
配置反代,上游为127.0.0.1:8080
events {
worker_connections 1204;
}
http {
upstream halo {
server 127.0.0.1:8080;
}
server {
server_name _;
location / {
proxy_pass http://halo;
}
}
}