1、部署组件
IPv6服务器购买网站:https://idc.888644.xyz
(1)、Java 环境,目前 Halo 最低需要 JRE 17 的环境。
(2)、数据库(任一)
MySQL 5.7+
MariaDB
PostgreSQL
2、安装部署
(1)、安装 Java 21
下载软件包地址 :Java安装包地址
解压下载的压缩包
wget https://download.oracle.com/java/21/archive/jdk-21.0.2_linux-x64_bin.tar.gz
#ipv6要添加warp
wget -N https://gitlab.com/fscarmen/warp/-/raw/main/menu.sh && bash menu.sh
tar -xvf jdk-21.0.2_linux-x64_bin.tar.gz
mv jdk-21.0.2/ /usr/local/
设置环境变量,编辑 ~/.bashrc文件添加Java环境变量:
export JAVA_HOME=/usr/local/jdk-21.0.2
export PATH=$JAVA_HOME/bin:$PATH
source ~/.bashrc #手动加载
验证安装:
java -version
输出如下命令说明安装成功:
java version "21.0.2" 2024-01-16 LTS
Java(TM) SE Runtime Environment (build 21.0.2+13-LTS-58)
Java HotSpot(TM) 64-Bit Server VM (build 21.0.2+13-LTS-58, mixed mode, sharing)
(2)、安装mariadb
#安装mariadb
apt install mariadb-server
#启动并启用MariaDB服务
systemctl start mariadb
systemctl enable mariadb
#运行安全脚本以提高MariaDB的安全性
mysql_secure_installation
#登录mysql
mysql -uroot -pXXXX
#创建数据库
CREATE DATABASE halo;
#查看数据库
SHOW DATABASES;
(3)、安装halo
创建存放运行包的目录,这里以 ~/app 为例
mkdir ~/app && cd ~/app
下载运行包
wget https://dl.halo.run/release/halo-2.20.12.jar -O halo.jar
创建 工作目录
mkdir ~/.halo2 && cd ~/.halo2
创建 Halo 配置文件
vim application.yaml
将以下内容复制到 application.yaml 中,根据下面的配置说明进行配置
server:
# 运行端口
port: 8090
spring:
# 数据库配置,支持 MySQL、MariaDB、PostgreSQL、H2 Database,具体配置方式可以参考下面的数据库配置
r2dbc:
url: r2dbc:pool:mariadb://localhost:3306/halo
username: root
password: 123456
sql:
init:
mode: always
# 需要配合 r2dbc 的配置进行改动
platform: mariadb
halo:
# 工作目录位置
work-dir: ${user.home}/.halo2
# 外部访问地址
external-url: http://localhost:8090
# 附件映射配置,通常用于迁移场景
attachment:
resource-mappings:
- pathPattern: /upload/**
locations:
- migrate-from-1.x
3、作为服务运行
(1)、创建 halo.service 文件
vim /etc/systemd/system/halo.service
将以下内容复制到 halo.service 中,根据下面的配置说明进行配置。
[Unit]
Description=Halo Service
Documentation=https://docs.halo.run
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=root
ExecStart=/usr/local/jdk-21.0.2/bin/java -server -Xms256m -Xmx256m -jar /root/app/halo.jar --spring.config.additional-location=optional:file:/root/.halo2/
ExecStop=/bin/kill -s QUIT $MAINPID
Restart=always
StandOutput=syslog
StandError=inherit
[Install]
WantedBy=multi-user.target
JAR_PATH:Halo 运行包的绝对路径,例如 /home/halo/app/halo.jar,注意:此路径不支持 ~ 符号。
USER:运行 Halo 的系统用户,如果有按照上方教程创建新的用户来运行 Halo,修改为你创建的用户名称即可。反之请删除 User=USER。
提示
请确保 /usr/bin/java 是正确无误的。建议将 ExecStart 中的命令复制出来运行一下,保证命令有效。
配置完成之后,保存即可。
#重新加载 systemd
systemctl daemon-reload
#运行服务
systemctl start halo
#在系统启动时启动服务
systemctl enable halo
#最后,你可以通过下面的命令查看服务日志:
journalctl -n 20 -u halo
#访问地址
http://[ipv6地址]:8090
4、页面演示
5、反向代理
(1)、使用 Nginx Proxy Manager
root@srv29004:~# cat /etc/nginx/conf.d/halo.conf
upstream halo {
server 127.0.0.1:8090;
}
server {
listen 2275;
listen [::]:2275;
server_name _;
ssl_certificate /root/ygkkkca/cert.crt;
ssl_certificate_key /root/ygkkkca/private.key;
client_max_body_size 1024m;
location / {
proxy_pass http://halo;
proxy_set_header HOST $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
(2)、使用 Traefik
#1、networks 中引入已存在的网络 traefik(此网络需要 提前创建)
#2、services.halo.networks 中添加网络 traefik
#3、修改外部地址为你的域名
#4、声明路由规则、开启 TLS
version: "3.8"
networks:
traefik:
external: true
halo:
services:
halo:
image: halohub/halo:2.15
container_name: halo
restart: on-failure:3
volumes:
- ./halo2:/root/.halo2
networks:
- traefik
- halo
command:
# 外部访问地址,请根据实际需要修改
- --halo.external-url=https://yourdomain.com
labels:
traefik.enable: "true"
traefik.docker.network: traefik
traefik.http.routers.halo.rule: Host(`yourdomain.com`)
traefik.http.routers.halo.tls: "true"
traefik.http.routers.halo.tls.certresolver: myresolver
traefik.http.services.halo.loadbalancer.server.port: 8090