Halo_Deployment
使用 Jar 文件部署 halo 博客系统
需求环境需求
# 更新软件包列表
sudo apt-get update
# Java 17 以上
sudo apt-get -y install openjdk-17-jdk
java --version
# Mysql 5.7 以上
sudo apt-get -y install mysql-server
systemctl status mysql
# Nignx 作为反向代理域名用
sudo apt-get -y install nginx
systemctl status nginx
准备依赖
数据库准备
mysql -uroot -p
# 使用root账户登录
CREATE DATABASE IF NOT EXISTS halodb DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
# 创建halo数据库
CREATE USER 'halouser'@'localhost' identified with mysql_native_password by 'halopassword';
# 创建halo数据库专用用户
GRANT ALL PRIVILEGES ON halodb.* to 'halouser'@'localhost';
# 赋予用户当地访问权限
FLUSH PRIVILEGES;
# 刷新
# ----------------------
show databases; # 确认数据库存在
show grants for halouser@localhost; # 确认权限
启动用户准备
useradd -m halo
passwd halo
su - halo
mkdir ~/app && cd ~/app
wget https://dl.halo.run/release/halo-2.13.0.jar -O halo.jar
mkdir ~/.halo2 && cd ~/.halo2
touch /home/halo/.halo2/application.yaml
准备配置文件
server:
# 运行端口
port: 8080
spring:
# 数据库配置,支持 MySQL、MariaDB、PostgreSQL、H2 Database,具体配置方式可以参考下面的数据库配置
r2dbc:
url: r2dbc:pool:mysql://localhost:3306/halodb
username: halouser
password: halopassword
sql:
init:
mode: always
# 需要配合 r2dbc 的配置进行改动
platform: mysql
halo:
caches:
page:
# 是否禁用页面缓存
disabled: true
# 工作目录位置
work-dir: ${user.home}/.halo2
# 外部访问地址
external-url: https://www.fumi.live
# 附件映射配置,通常用于迁移场景
attachment:
resource-mappings:
- pathPattern: /upload/**
locations:
- migrate-from-1.x
测试启动
su - halo
cd ~/app && java -jar halo.jar --spring.config.additional-location=optional:file:$HOME/.halo2/
服务化
shell指令
whoami #root
touch /etc/systemd/system/halo.service
systemctl daemon-reload
systemctl start halo
systemctl enable halo
journalctl -n 20 -u halo
halo.service
[Unit]
Description=Halo Service
Documentation=https://docs.halo.run
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=Halo
ExecStart=/usr/bin/java -server -Xms256m -Xmx256m -jar /home/halo/app/halo.jar --spring.config.additional-location=optional:file:/home/halo/.halo2/
ExecStop=/bin/kill -s QUIT $MAINPID
Restart=always
StandOutput=syslog
StandError=inherit
[Install]
WantedBy=multi-user.target
版本升级
service halo stop
wget https://dl.halo.run/release/halo-2.13.0.jar -O /home/halo/app/halo.jar
service halo start
反向代理
shell执行
nginx -t
nginx -s reload
touch /etc/nginx/conf.d/server.conf
配置文件追加
upstream halo {
server 127.0.0.1:8080;
}
server {
listen 80;
listen [::]:80;
server_name www.fumi.live;
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;
}
}
SSL配置
免费证书申请
登录控制台追加解析记录
验证服务器
签发成功后如图所示
根据服务器下载对应证书格式
配置文件修改
upstream halo {
server 127.0.0.1:8080;
}
server {
listen 443 ssl;
#listen [::]:443;
server_name www.fumi.live;
ssl_certificate /home/halo/cert/fumi.live.pem;
ssl_certificate_key /home/halo/cert/fumi.live.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
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;
}
}
页面测试