halo文档:[链接登录后可见]
一:JAR部署
1、部署组件
IPv6服务器购买网站:[链接登录后可见]
(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:h2:file:///${halo.work-dir}/db/halo-next?MODE=MySQL&DB_CLOSE_ON_EXIT=FALSE
username: admin
password: 123456
sql:
init:
mode: always
" # 需要配合 r2dbc 的配置进行改动"
platform: h2
halo:
" # 工作目录位置"
work-dir: ${user.home}/.halo2
"# 外部访问地址"
external-url: http://localhost:8090
" # 附件映射配置,通常用于迁移场景"
attachment:
resource-mappings:
- pathPattern: /upload/**
locations:
- migrate-from-1.x
数据库配置说明:
[链接登录后可见]
配置对应关系:
[链接登录后可见]
HOST:数据库服务地址,如 localhost
PORT:数据库服务端口,如 3306
DATABASE:数据库名称,如 halo,需要提前创建
(4)、测试运行 Halo
cd ~/app && java -jar halo.jar --spring.config.additional-location=optional:file:$HOME/.halo2/
(5)、如果没有观察到异常日志,即可尝试访问 Halo
`打开 http://ip:端口号 即可跳转到初始化页面。
信息
如测试启动正常,请继续看作为服务运行部分,第 8 步仅仅作为测试。当你关闭 ssh 连接之后,服务会停止。你可使用 CTRL+C 停止运行测试进程。
提示
如果需要配置域名访问,建议先配置好反向代理以及域名解析再进行初始化。如果通过 http://ip:端口号 的形式无法访问,请到服务器厂商后台将运行的端口号添加到安全组,如果服务器使用了 Linux 面板,请检查此 Linux 面板是否有还有安全组配置,需要同样将端口号添加到安全组。
3、作为服务运行
(1)、创建 halo.service 文件
vim /etc/systemd/system/halo.service将以下内容复制到 halo.service 中,根据下面的配置说明进行配置。
[Unit]
Description=Halo Service
Documentation=[链接登录后可见]
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/halo/app/halo-2.15.2.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
4、版本升级
(1)、备份数据,可以参考 备份与恢复 进行完整备份
(2)、升级步骤
#停止 Halo 服务
service halo stop
#下载新版本的 Halo 运行包,覆盖原有的运行包
wget https://dl.halo.run/release/halo-2.15.0.jar -O /home/halo/app/halo.jar
#启动 Halo 服务
service halo start
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 [链接登录后可见];
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;
}
}
`