更新
2022-03-28
- 缓存尽量选择内存别选硬盘,不然升级时容易遇到奇怪的问题,要手动清除硬盘的缓存(路径:
~/.halo/.leveldb
),本次1.4.17升1.5.0就遇到了问题,重新将缓存类型改为了内存。
简介
- Halo是一款用Java编写的开源博客系统,在2018年发布的第一个版本,算是比较年轻的博客系统。
- 开发人员活跃,项目一直保持更新,提issues也能很快得到回复,更重要的是由国人开发,交流无障碍。
准备工作
Java
- Halo < 1.4.3,JRE > 1.8
- Halo >= 1.4.3,JRE > 11
MySQL
- 版本:5.7
- 字符集(Character Set):utf8mb4
- 排序规则(Collate):utf8mb4_bin
- 存储引擎:InnoDB
代码语言:javascript复制参考命令
create database halodb character set utf8mb4 collate utf8mb4_bin;
安装
安装 Java
代码语言:javascript复制CentOS
sudo yum install java-11-openjdk -y
代码语言:javascript复制Ubuntu
sudo apt-get install openjdk-11-jre -y
调整JDK版本(如果仅有一个JDK可跳过)
- 输入下面的命令后用上下键调整到11版本回车
update-alternatives --config java
- 查看更改是否成功,如果开头显示
openjdk version "11.x.x"
即成功
java -version
配置给Halo用的系统用户(可选)
- 创建一个名为 halo 的用户(名字可以随意)
useradd -m halo
- 给予 sudo 权限
usermod -aG wheel halo
- 为 halo 用户创建密码
passwd halo
- 登录到 halo 账户
su - halo
配置并安装 Halo
- 创建工作目录(必须放在用户家目录)
mkdir ~/.halo
- 下载示例配置文件到工作目录
cd ~/.halo
wget https://dl.halo.run/config/application-template.yaml -O ./application.yaml
- 用nano编辑配置文件
application.yaml
,下面为示例:
server:
# 端口
port: 8090
# Response data gzip.
compression:
enabled: false
spring:
datasource:
# H2 database configuration.
# driver-class-name: org.h2.Driver
# url: jdbc:h2:file:~/.halo/db/halo
# username: admin
# password: 123456
# MySQL database configuration.
driver-class-name: com.mysql.cj.jdbc.Driver
# halodb为数据库名
url: jdbc:mysql://127.0.0.1:3306/halodb?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
# 用户名和密码
username: halo
password: PgY534iK07tGF7jht7
# H2 database console configuration.
# h2:
# console:
# settings:
# web-allow-others: false
# path: /h2-console
# enabled: false
halo:
# Your admin client path is https://your-domain/{admin-path}
# 后台管理面板地址
admin-path: admin
# memory or level
# 缓存使用内存还是硬盘
cache: level
- 创建放 halo Jar包的目录
mkdir ~/halo
cd ~/halo
- 下载 Halo Jar包(这里建议下载后重命名成halo.jar,方便以后更新,不然如果将Halo添加进到服务运行,每次更新后需要改
halo.service
文件会比较麻烦,当然如果只是用nohup
运行就没有这个问题,后面使得 Halo 保持运行
那节会说)
wget https://dl.halo.run/release/halo-1.4.17.jar
- 运行测试
java -jar halo-1.4.17.jar
- 不出意外可以看到如下显示(带登录网址的INFO)
run.halo.app.listener.StartedListener : Halo started at http://127.0.0.1:8090
run.halo.app.listener.StartedListener : Halo admin started at http://127.0.0.1:8090/admin
run.halo.app.listener.StartedListener : Halo has started successfully!
使得 Halo 保持运行
方法一:使用nohup
命令在后台运行
代码语言:javascript复制nohup java -jar halo-1.4.17.jar &
方法二:部署成服务
- 登录
root
用户
sudo su
- 下载 Halo 官方的 halo.service 模板
wget https://dl.halo.run/config/halo.service -O /etc/systemd/system/halo.service
- 用nano修改下载好的模板文件
/etc/systemd/system/halo.service
,改成如下示例(实际使用时去掉注释):
[Unit]
Description=Halo Service
Documentation=https://halo.run
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=halo # 这里写运行的用户,例如上面创建的halo用户,如果上面没有创建用户可以把这句删除
ExecStart=/usr/bin/java -server -Xms256m -Xmx256m -jar /home/halo/halo/halo-1.4.17.jar # 这个是运行命令,/home/halo/halo/halo-1.4.17.jar是刚才下载的Halo的Jar包的绝对路径
ExecStop=/bin/kill -s QUIT $MAINPID
Restart=always
StandOutput=syslog
StandError=inherit
[Install]
WantedBy=multi-user.target
- 重载 systemd
systemctl daemon-reload
- 运行服务
systemctl start halo
- 设置自启
systemctl enable halo
- 查看服务日志检查启动状态
journalctl -n 20 -u halo