在 CentOS 安装 Halo

2022-06-15 17:52:56 浏览数 (1)

更新

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

  1. 版本:5.7
  2. 字符集(Character Set):utf8mb4
  3. 排序规则(Collate):utf8mb4_bin
  4. 存储引擎:InnoDB

参考命令

代码语言:javascript复制
create database halodb character set utf8mb4 collate utf8mb4_bin;

安装

安装 Java

CentOS

代码语言:javascript复制
sudo yum install java-11-openjdk -y

Ubuntu

代码语言:javascript复制
sudo apt-get install openjdk-11-jre -y

调整JDK版本(如果仅有一个JDK可跳过)

  • 输入下面的命令后用上下键调整到11版本回车
代码语言:javascript复制
update-alternatives --config java
  • 查看更改是否成功,如果开头显示openjdk version "11.x.x"即成功
代码语言:javascript复制
java -version

配置给Halo用的系统用户(可选)

  • 创建一个名为 halo 的用户(名字可以随意)
代码语言:javascript复制
useradd -m halo
  • 给予 sudo 权限
代码语言:javascript复制
usermod -aG wheel halo
  • 为 halo 用户创建密码
代码语言:javascript复制
passwd halo
  • 登录到 halo 账户
代码语言:javascript复制
su - halo

配置并安装 Halo

  • 创建工作目录(必须放在用户家目录)
代码语言:javascript复制
mkdir ~/.halo
  • 下载示例配置文件到工作目录
代码语言:javascript复制
cd ~/.halo
wget https://dl.halo.run/config/application-template.yaml -O ./application.yaml 
  • 用nano编辑配置文件application.yaml ,下面为示例:
代码语言:javascript复制
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包的目录
代码语言:javascript复制
mkdir ~/halo
cd ~/halo
  • 下载 Halo Jar包(这里建议下载后重命名成halo.jar,方便以后更新,不然如果将Halo添加进到服务运行,每次更新后需要改halo.service文件会比较麻烦,当然如果只是用nohup运行就没有这个问题,后面使得 Halo 保持运行那节会说)
代码语言:javascript复制
wget https://dl.halo.run/release/halo-1.4.17.jar
  • 运行测试
代码语言:javascript复制
java -jar halo-1.4.17.jar
  • 不出意外可以看到如下显示(带登录网址的INFO)
代码语言:javascript复制
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用户
代码语言:javascript复制
sudo su
  • 下载 Halo 官方的 halo.service 模板
代码语言:javascript复制
wget https://dl.halo.run/config/halo.service -O /etc/systemd/system/halo.service
  • 用nano修改下载好的模板文件/etc/systemd/system/halo.service,改成如下示例(实际使用时去掉注释):
代码语言:javascript复制
[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
代码语言:javascript复制
systemctl daemon-reload
  • 运行服务
代码语言:javascript复制
systemctl start halo
  • 设置自启
代码语言:javascript复制
systemctl enable halo
  • 查看服务日志检查启动状态
代码语言:javascript复制
journalctl -n 20 -u halo

完成

0 人点赞