依赖检查#
在开始之前,需要确保服务器已经满足以下条件:
Java 环境,目前 Halo 最低需要 JRE 17 的环境。
数据库(任一) ◦ MySQL 5.7+ ◦ MariaDB ◦ PostgreSQL 由于 Linux 发行版本的差异以及包管理器的不同,此文档不会涉及到如何安装 Java 环境以及数据库,建议查阅对应依赖的官方文档进行安装。
一、centos7安装java17
1、下载java
需要登录一下,然后将rpm包下载到本地计算机
2、将jdk-17.0.14_linux-x64_bin.rpm上传到服务器
3、安装
yum install -y ./jdk-17.0.14_linux-x64_bin.rpm
环境变量:通过仓库或 RPM 安装无需手动配置,系统自动设置路径;手动安装需在 /etc/profile
添加 JAVA_HOME
和 PATH
。
4、验证
java version
二、centos7安装mysql
下载mysql
MySQL :: Download MySQL Community Server (Archived Versions)
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.44-1.el7.x86_64.rpm-bundle.tar
安装
启动
systemctl enable mysqld --now
查找临时密码**
MySQL 首次启动时会生成一个临时 root 密码,保存在日志文件中:
sudo grep 'temporary password' /var/log/mysqld.log
1. 初始化 mysql安全配置
# 运行安全初始化脚本(设置 root 密码、删除匿名用户等)
sudo mysql_secure_installation
交互步骤:
输入上一步获取的密码
设置 root 密码(输入并确认)
移除匿名用户(选
Y
)禁止 root 远程登录(选
Y
,生产环境建议)删除测试数据库(选
Y
)重新加载权限表(选
Y
)
**2. 登录 mysql
bashCopy Code# 使用 root 用户登录(输入上一步设置的密码)
mysql -u root -p
3. 创建新数据库
-- 创建数据库(将 `halo` 替换为你的数据库名)
create database halo character set utf8mb4 collate utf8mb4_bin;
4. 创建用户并授权
-- 创建用户(将 `halo` 和 `halo@DB123` 替换为实际值)
CREATE USER 'halo'@'localhost' IDENTIFIED BY 'halo@DB123';
-- 授予用户对数据库的完全权限(按需调整权限)
GRANT ALL PRIVILEGES ON halo.* TO 'halo'@'localhost';
-- 刷新权限
FLUSH PRIVILEGES;
-- 退出 mysql
EXIT;
5. 验证操作
# 使用新用户登录并检查数据库
mysql -u halo -p -e "SHOW DATABASES;"
输出应包含你创建的数据库 `halo。
6. 其他关键命令
设置 mysql开机自启
sudo systemctl enable mysql
三、使用JAR文件部署HALO
1、创建新的系统用户
创建一个名为 halo 的用户(名字可以随意)
useradd -m halo
为 halo 用户创建密码
passwd halo
登录到 halo 账户
su - halo
2、创建存放运行包的目录,这里以 ~/app
为例
mkdir ~/app && cd ~/app
3、下载运行包
wget https://dl.halo.run/release/halo-2.20.12.jar -O halo.jar
4、创建 工作目录
mkdir ~/.halo2 && cd ~/.halo2
5、创建 Halo 配置文件
vim application.yaml
将以下内容复制到 application.yaml 中,根据下面的配置说明进行配置。配置完成之后,保存即可。
server:
# 运行端口
port: 80
spring:
# 数据库配置,支持 MySQL、MariaDB、PostgreSQL、H2 Database,具体配置方式可以参考下面的数据库配置
r2dbc:
url: r2dbc:pool:mysql://localhost:3306/halo
username: halo
password: halo@DB123
init:
mode: always
# 需要配合 r2dbc 的配置进行改动
platform: mysql
halo:
# 工作目录位置
work-dir: /home/halo/.halo2
# 外部访问地址
external-url: http://localhost:80
# 附件映射配置,通常用于迁移场景
attachment:
resource-mappings:
- pathPattern: /upload/**
locations:
- migrate-from-1.x
MariaDB r2dbc:pool:mariadb://{HOST}:{PORT}/{DATABASE}
6、测试运行 Halo
cd ~/app && java -Dfile.encoding=UTF-8 -jar halo.jar --spring.config.additional-location=optional:file:$HOME/.halo2/
java -Dfile.encoding=UTF-8 -jar halo.jar --spring.config.additional-location=optional:file:/home/halo/.halo2/
7、如果没有观察到异常日志,即可尝试访问 Halo
打开 http://ip:端口号 即可跳转到初始化页面。
四、将HALO jar配置成服务运行
1、退出 halo 账户,登录到 root 账户
2、创建 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=USER
#普通用户端口只能1024以上
#User=halo
User=root
ExecStart=/usr/bin/java -Dfile.encoding=UTF-8 -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
JAR_PATH:Halo 运行包的绝对路径,例如
/home/halo/app/halo.jar
,注意:此路径不支持~
符号。USER:运行 Halo 的系统用户,如果有按照上方教程创建新的用户来运行 Halo,修改为你创建的用户名称即可。反之请删除
User=USER
。
提示:请确保 /usr/bin/java
是正确无误的。建议将 ExecStart
中的命令复制出来运行一下,保证命令有效。
3、重新加载 systemd
systemctl daemon-reload
4、运行服务
systemctl start halo
5、在系统启动时启动服务
systemctl enable halo
6、最后,你可以通过下面的命令查看服务日志:
journalctl -n 20 -u halo
五、原站恢复
将在原站备份的数据直接在web console界面上传完成站点恢复
六、版本升级
以下是官方维护的下载地址:
#pro版
wget https://dl.halo.run/release/halo-pro-2.20.18.jar -O /home/halo/app/halo.jar
#2.20.19-beta.2 推出halo app公测
wget https://dl.halo.run/release/halo-pro-2.20.19-beta.2.jar -O /home/halo/app/halo.jar
七、配置nginx+SSL
1、安装nginx
#安装nginx
sudo yum install nginx # CentOS/RHEL
2、申请SLL证书
sudo yum install -y epel-release # 安装EPEL仓库
sudo yum repolist # 确认仓库已启用
sudo yum install -y certbot # 安装Certbot
sudo yum install -y python3-certbot-nginx # 安装插件python2-ertbot-nginx
#注意事项:运行certbot前需临时关闭占用 80 和 443 端口的服务(如 Nginx):
sudo certbot --nginx -d rongtech.top # 自动获取并配置证书 证书会自动续期,并修改 Nginx 配置为 HTTPS。
# 自动获取证书没有成功,改用这个命令手动获取
sudo certbot certonly --standalone -d blog.rongtech.top --email wu_fu_rong@163.com --agree-tos --non-interactive
Your certificate and chain have been saved at:
/etc/letsencrypt/live/blog.rongtech.top/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/blog.rongtech.top/privkey.pem
3、配置nginx
#配置反向代理•
#编辑 Nginx 配置文件(如 /etc/nginx/conf.d/blog-app.conf):
## 3、配置Nginx
server {
listen 443 ssl;
server_name blog.rongtech.top;
ssl_certificate /etc/letsencrypt/live/blog.rongtech.top/fullchain.pem; # 证书路径
ssl_certificate_key /etc/letsencrypt/live/blog.rongtech.top/privkey.pem; # 私钥路径
location / {
proxy_pass http://localhost:8081;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
# 强制HTTP跳转到HTTPS
server {
listen 80;
server_name blog.rongtech.top;
return 301 https://$host$request_uri;
}
#启动nginx,测试访问网站
还可以通过阿里云申请免费证书
/etc/ssl/nginx/blog.rongtech.top.key
/etc/ssl/nginx/blog.rongtech.top.pem
#配置反向代理•
#编辑 Nginx 配置文件(如 /etc/nginx/conf.d/blog-app.conf):
## 3、配置Nginx
server {
listen 443 ssl;
server_name blog.rongtech.top;
ssl_certificate /etc/ssl/nginx/blog.rongtech.top.pem; # 证书路径
ssl_certificate_key /etc/ssl/nginx/blog.rongtech.top.key; # 私钥路径
location / {
proxy_pass http://localhost:8081;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
# 强制HTTP跳转到HTTPS
server {
listen 80;
server_name blog.rongtech.top;
return 301 https://$host$request_uri;
}
八、附录,安装mariadb
#
yum install -y mariadb mariadb-server
1. 初始化 MariaDB 安全配置
bashCopy Code# 启动 MariaDB 服务
sudo systemctl start mariadb
# 运行安全初始化脚本(设置 root 密码、删除匿名用户等)
sudo mysql_secure_installation
交互步骤:
输入当前 root 密码(首次安装为空,直接回车)
设置 root 密码(输入并确认)
移除匿名用户(选
Y
)禁止 root 远程登录(选
Y
,生产环境建议)删除测试数据库(选
Y
)重新加载权限表(选
Y
)
2. 登录 MariaDB
bashCopy Code# 使用 root 用户登录(输入上一步设置的密码)
mysql -u root -p
3. 创建新数据库
-- 创建数据库(将 `halo` 替换为你的数据库名)
create database halo character set utf8mb4 collate utf8mb4_bin;
4. 创建用户并授权
-- 创建用户(将 `halo` 和 `halodbpassword` 替换为实际值)
CREATE USER 'halo'@'localhost' IDENTIFIED BY 'halodbpassword';
-- 授予用户对数据库的完全权限(按需调整权限)
GRANT ALL PRIVILEGES ON halo.* TO 'halo'@'localhost';
-- 刷新权限
FLUSH PRIVILEGES;
-- 退出 MariaDB
EXIT;
5. 验证操作
# 使用新用户登录并检查数据库
mysql -u halo -p -e "SHOW DATABASES;"
输出应包含你创建的数据库 halodb
。
6. 其他关键命令
设置 MariaDB 开机自启
sudo systemctl enable mariadb