跳到主要内容
版本:2.0.0-SNAPSHOT

在 Linux 环境部署

信息

在继续操作之前,我们推荐您先阅读《写在前面》,这可以快速帮助你了解 Halo。

依赖检查

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

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

CentOS

sudo yum install java-17-openjdk -y

检查版本:

java -version

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

openjdk version "17.0.4.1" 2022-08-12
OpenJDK Runtime Environment Homebrew (build 17.0.4.1+1)
OpenJDK 64-Bit Server VM Homebrew (build 17.0.4.1+1, mixed mode, sharing)

Ubuntu

sudo apt-get install openjdk-17-jre -y

检查版本:

java -version

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

openjdk version "17.0.4.1" 2022-08-12
OpenJDK Runtime Environment Homebrew (build 17.0.4.1+1)
OpenJDK 64-Bit Server VM Homebrew (build 17.0.4.1+1, mixed mode, sharing)

安装

  1. 创建新的系统用户

    信息

    我们不推荐直接使用系统 root 用户来运行 Halo。如果您需要直接使用 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/prerelease/halo-2.0-alpha.1.jar -O halo.jar
    信息

    如果下载速度不理想,可以 在这里 选择其他下载地址。

  4. 创建 工作目录

    mkdir ~/halo-next && cd ~/halo-next
  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!

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

    信息

    如测试启动正常,请继续看作为服务运行部分,第 8 步仅仅作为测试。当你关闭 ssh 连接之后,服务会停止。你可使用 CTRL+C 停止运行测试进程。

    提示

    如果需要配置域名访问,建议先配置好反向代理以及域名解析再进行初始化。如果通过 http://ip: 端口号 的形式无法访问,请到服务器厂商后台将运行的端口号添加到安全组,如果服务器使用了 Linux 面板,请检查此 Linux 面板是否有还有安全组配置,需要同样将端口号添加到安全组。

作为服务运行

  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
    ExecStart=/usr/bin/java -server -Xms256m -Xmx256m -jar YOUR_JAR_PATH
    ExecStop=/bin/kill -s QUIT $MAINPID
    Restart=always
    StandOutput=syslog

    StandError=inherit

    [Install]
    WantedBy=multi-user.target
    提示

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

  5. 重新加载 systemd

    systemctl daemon-reload
  6. 运行服务

    systemctl start halo
  7. 在系统启动时启动服务

    systemctl enable halo

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

    journalctl -n 20 -u halo

反向代理

你可以在下面的反向代理软件中任选一项,我们假设你已经安装好了其中一项,并对其基本操作有一定了解。如果你对 Nginx 不熟悉,我们推荐使用 OneinStack 来管理 Nginx。

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 找到。