This post was updated 713 days ago and some of the ideas may be out of date.

halo搭建

halo

软件环境

Halo 理论上可以运行在任何支持 Java 的平台。

JRE(Java Runtime Environment)

必须在运行环境安装好 JRE,这是运行 Halo 所要求的的最低软件环境要求。如果您使用 Docker 运行 Halo,可忽略此要求。
从 1.4.3 起,版本要求为 11 以上的版本。1.4.3 以下需要 1.8 以上的版本。

MySQL(可选)

这并不是 Halo 必须依赖的,Halo 默认使用自带的 H2 Database,无需单独安装。如果 H2 Database 不能满足你的要求,您需要在系统内安装并运行好 MySQL。
具体要求:

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

Supervisor管理器

一个Python开发的通用的进程管理程序,用来管理halo运行进程,实现常驻后台。
supervisor管理器

安装教程

安装JRE 11

CentOS
sudo yum install java-11-openjdk -y

检查版本

java -version

如果输出以下类似内容即代表成功

openjdk version "11.0.10" 2021-01-19 LTS
OpenJDK Runtime Environment 18.9 (build 11.0.10+9-LTS)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.10+9-LTS, mixed mode, sharing)
Ubuntu
sudo apt-get install openjdk-11-jre -y

检查版本:

java -version

如果输出以下类似内容即代表成功

openjdk version "11.0.10" 2021-01-19
OpenJDK Runtime Environment (build 11.0.10+9-Ubuntu-0ubuntu1.20.04)
OpenJDK 64-Bit Server VM (build 11.0.10+9-Ubuntu-0ubuntu1.20.04, mixed mode)

创建新的系统用户

不推荐直接使用系统 root 用户来运行 Halo。如果您需要直接使用 root 用户,请跳过这一步。
教程使用root账户来示例。
创建一个名为 halo 的用户(名字可以随意)

useradd -m halo

给予 sudo 权限

usermod -aG wheel halo

为 halo 用户创建密码

passwd halo

登录到 halo 账户

su - halo

用户

安装halo

来到宝塔创建网站,设置目录以方便放程序文件
创建网站
cd进入网站目录

cd /www/wwwroot/ecy

进入网站目录
halo

下载运行包
wget https://dl.halo.run/release/halo-1.5.3.jar -O halo.jar 

下载运行包

创建halo工作目录

Halo 所依赖的工作目录,在 Halo 运行的时候会在系统当前用户目录下产生一个 .halo 的文件夹,绝对路径为 ~/.halo。由于这个工作目录是固定的,所以上面所说的 运行包不限制所存放的位置

mkdir ~/.halo && cd ~/.halo
下载示例配置文件到工作目录
wget https://dl.halo.run/config/application-template.yaml -O ./application.yaml 
测试运行 Halo

进入网站目录执行运行命令

cd /www/wwwroot/ecy && java -jar halo.jar

如看到类似以下日志输出,则代表启动成功。

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!

PS:配置数据库或者端口等,如需配置请参考 配置参考
别忘记在宝塔的防火墙或者服务器防火墙放行halo端口
防火墙

使用 Supervisor 托管 Halo 进程

打开 Supervisor 管理器的设置,点击 添加守护进程 按钮。

需要填写的表单信息如下:

名称:随意
启动用户:如果您按照 在 Linux 环境部署 创建了用于运行 Halo 的用户,则选择您创建的用户即可。否则选择默认的 root
运行目录:运行包的存放目录,按照实际情况填写,需要保证你所选的目录包含运行包。
启动命令:java -server -Xms256m -Xmx256m -jar halo.jar
填写完成之后点击 确定 按钮即可。
supervisor

使用反代理实现域名访问halo

在反代理之前建议部署ssl证书。我这边使用宝塔免费证书示例,需要开启强制ssl
ssl
强制ssl

添加反代理

目标URL设置你配置的即可。我这边没用做任何修改端口,使用默认8090端口。也在宝塔防火墙放行。
反代理
访问域名即可进行 Halo 的初始化。