Halo 开源java博客系统

简介

Halo [ˈheɪloʊ],意为光环。当然,你也可以当成拼音读(哈喽)。

轻快,简洁,功能强大,使用 Java 开发的博客系统。

快速开始

一、在Centos服务器上部署

依赖检查

目前运行 Halo 的最低依赖要求为 JRE 11,请务必确保在进行下面操作之前已经正确安装了 JRE。

目前介绍两种 Linux 发行版的安装方式,均为 OpenJRE,不推荐 Oracle 版本。

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)

安装

1.创建新的系统用户(如果一root用户运行可以直接跳过此步)

创建一个名为 halo 的用户(名字可以随意)

useradd -m halo

给予sudo权限

usermod -aG wheel halo

为halo用户创建密码

passwd halo

登录halo账户

su - halo

2.创建存放运行包的目录

这里以 ~/app 为例

mkdir ~/app && cd ~/app

3.下载运行包

wget https://dl.halo.run/release/halo-1.4.8.jar -O halo.jar

4.创建工作目录

mkdir ~/.halo && cd ~/.halo

5.下载示例配置文件到工作目录

wget https://dl.halo.run/config/application-template.yaml -O ./application.yaml

6.编辑配置文件,配置数据库或者端口等,如需配置请参考参考配置

vim application.yaml

7.测试运行 Halo

cd ~/app && java -jar halo.jar

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

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!

注意!!!如果你 运行出现如下图情况,查看你是否安装的为java-11-openjdk

java.png

打开 http://ip:端口号 即可看到安装引导界面。

作为服务运行

1.退出halo账户,登录到root账户(如果当前是root用户其跳过此步)

exit

2.下载 Halo 官方的 halo.service 模板

wget https://dl.halo.run/config/halo.service -O /etc/systemd/system/halo.service

3.修改halo.service

vim /etc/systemd/system/halo.service

4.修改配置

  • YOUR_JAR_PATH:Halo 运行包的绝对路径,例如 /home/halo/app/halo.jar,注意:此路径不支持 ~ 符号。
  • USER:运行 Halo 的系统用户,如果有按照上方教程创建新的用户来运行 Halo,修改为你创建的用户名称即可。反之请删除 User=USER
[Unit]
Description=Halo Service
Documentation=https://halo.run
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=USER(我这里时用的root,这里写你启动服务的用户)
ExecStart=/usr/bin/java -server -Xms256m -Xmx256m -jar YOUR_JAR_PATH(你halo.jar的路径)
ExecStop=/bin/kill -s QUIT $MAINPID
Restart=always
StandOutput=syslog

StandError=inherit

[Install]
WantedBy=multi-user.target

注意!!!请确保 /usr/bin/java 是正确无误的。建议将 ExecStart 中的命令复制出来运行一下,保证命令有效。

还有USER那里要写对如果出现如下图报错检查以上是否写对

tail -f /var/log/messages

error错误

5.重新加载systemd

systemctl daemon-reload

6.运行服务

systemctl start halo

7.在系统启动时启动服务

systemctl start halo

您可以查看服务日志检查启动状态

journalctl -n 20 -u halo

反向代理

你可以在下面的反向代理软件中任选一项,我们假设你已经安装好了其中一项,并对其基本操作有一定了解。

Nginx

upstream halo {
  server 127.0.0.1:8090;
}
server {
  listen 80;
  listen [::]:80;
  server_name www.yourdomain.com;
  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;
  }
}

注意:Nginx 默认的 client_max_body_size 配置大小为 1m,可能会导致你在 Halo 后台上传文件被 Nginx 限制,所以此示例配置文件加上了 client_max_body_size 1024m; 这行配置。当然,1024m 可根据你的需要自行修改。

Caddy 1.x

https://www.yourdomain.com {
 gzip
 tls your@email.com
 proxy / localhost:8090 {
  transparent
 }
}

Caddy 2.x

www.yourdomain.com

encode gzip

reverse_proxy 127.0.0.1:8090

以上配置都可以在 https://github.com/halo-dev/halo-common 找到。

top -p 产看进程id

Q.E.D.