声明:本文章基于官方文档进行改编,可自行前往Halo官网查看。

Halo博客

1. 直接部署

1.1. 依赖检查

目前运行 Halo 的最低依赖要求为 JRE 11,请务必确保在进行下面操作之前已经正确安装了 JRE。
目前介绍两种 Linux 发行版的安装方式,均为 OpenJRE,不推荐 Oracle 版本。

CentOS
sudo yum install java-11-openjdk -y
Ubuntu
sudo apt-get install openjdk-11-jre -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.2. 安装

1.2.1.创建存放运行包的目录,这里以 ~/app 为例

mkdir ~/app && cd ~/app

1.2.2.使用wget下载运行包

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

1.2.3.创建工作目录

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

1.2.4.下载示例文件到工作目录

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

1.2.5.编辑配置文件(如需配置参考->配置参考)

1.2.6.测试运行Halo

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

1.2.7.如看到类似日志则代表启动成功。

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!

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

2.docker部署(推荐)

2.1.安装docker
2.1.1.有宝塔面板可以在宝塔面板中找到Docker管理器安装即可
image-1653392343906
2.1.2.无宝塔面板
linux上安装Docker(非常简单的安装方法)
2.2.拉取镜像安装

docker run -it -d --name halo -p 8090:8090 -v ~/.halo:/root/.halo --restart=always halohub/halo:1.5.3

这里提供的命令是简易安装版,想要具体设置可以以前往官方查看文档
使用 Docker 部署 Halo

  • -it: 开启输入功能并连接伪终端
  • -d: 后台运行容器
  • –name: 为容器指定一个名称
  • -p: 端口映射,格式为 主机(宿主)端口:容器端口 ,可在 application.yaml 配置。
  • –v: 工作目录映射。形式为:-v 宿主机路径:/root/.halo,后者不能修改。
  • –restart: 建议设置为 unless-stopped,在 Docker 启动的时候自动启动 Halo 容器。
    打开http://ip:端口即可看到安装引导界面。

3.反向代理(nginx)

  • 这里只介绍nginx反向代理配置。
    3.1.宝塔面板配置反向代理(nginx)
    3.1.1打开宝塔面板管理界面选择添加网站
    image-1653393002344
    填好域名其余配置如上图
    3.1.2.配置https(可选)
    站点管理选择SSL
    image-1653393126155
    image-1653393178776
    选择 Let‘s Encrypt(最快的SSL获取)一键获取
    3.1.3. 反向代理配置
    image-1653404289388
    image-1653404314087
    点击保存完成配置
    3.2.1.nginx配置文件
#PROXY-START/
location ^~ /
{
    proxy_pass http://0.0.0.0:8090;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header REMOTE-HOST $remote_addr;
    add_header X-Cache $upstream_cache_status;
    #Set Nginx Cache
    set $static_fileelcjjerM 0;
    if ( $uri ~* "\.(gif|png|jpg|css|js|woff|woff2)$" )
    {
    	set $static_fileelcjjerM 1;
    	expires 12h;
        }
    if ( $static_fileelcjjerM = 0 )
    {
    add_header Cache-Control no-cache;
    }
}
#PROXY-END/

Q.E.D.