使用halo搭建站点

本文详细介绍了如何在Windows和Linux系统上安装及配置Halo博客平台,包括设置自定义配置文件、使用nssm配置Windows服务、创建Linux服务文件等步骤,同时提到了Halo的不足,如不支持文章导入导出功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Linux部署halo站点

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


创建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下配置开机自启动服务有两种方法:


使用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


配置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;     
        }
      }
}

在这里插入图片描述

### 使用宝塔面板安装配置 Halo 博客系统 #### 准备工作 为了顺利安装并配置 Halo 轻量博客系统,需先完成一些准备工作。这包括但不限于安装宝塔面板以及 Docker 的环境搭建。 #### 安装宝塔面板 通过官方渠道获取最新版本的宝塔面板进行安装,确保操作系统支持该软件包,并按照提示完成整个安装流程[^2]。 #### 安装 Docker 由于 Halo 支持基于容器化部署的方式运行,在宝塔面板中找到应用商店选项来安装 Docker 组件,从而简化后续操作过程中的复杂度。 #### 利用 Docker 部署 Halo 借助于已经成功集成到宝塔面板内的 Docker 工具集,可以方便快捷地拉取最新的 Halo 映像文件并启动相应的服务实例。具体步骤如下: 1. 登录至宝塔面板后台管理界面; 2. 进入 `Docker` -> `镜像仓库` 页面搜索 “halo”,选取合适的标签下载映像; 3. 创建一个新的容器,挂载必要的数据卷用于持久存储文章等内容资料; 4. 合理设置端口映射关系以便外部访问; 5. 开启新创建的服务容器,等待初始化完成后即可正常浏览站点[^1]。 #### Halo 模板和插件安装 对于希望进一步自定义外观样式的用户来说,可以在 Halo 提供的主题市场挑选心仪的样式方案;而功能上的扩展则依赖于丰富的第三方开发社区所贡献的各种实用型插件程序。这些都可以在 Halo 控制台内轻松实现一键安装更新等功能。 #### 服务器域名绑定 为了让公网能够识别到本地架设好的 Halo 平台地址,还需要做 DNS 解析的工作。即前往注册商处修改 A 记录指向 VPS 实际 IP 地址,并回到宝塔面板里关联对应的虚拟主机项目,最后重启 Nginx 或 Apache 等 Web Server 来使更改生效。 ```bash # 修改DNS解析记录示例命令(假设使用阿里云) aliyun dns AddDomainRecord -DomainName example.com \ -DomainType "A" \ -RR "www" \ -Value "your_server_ip" ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

教Linux的李老师

赞赏是第一生产力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值