与宝塔面板配合使用

声明

  1. 本组织与宝塔面板官方无任何合作和利益关系。
  2. 您在使用期间如果有宝塔面板所带来的问题,均与我们无关。
  3. 开始之前,我们默认认为您已经安装好了宝塔面板,以及熟悉宝塔面板的使用。
  4. 建议使用宝塔面板最新版本,截止到撰写指南的时刻,宝塔面板的版本为 7.4.7

Halo 部署

参见 在 Linux 环境部署

:::info 「作为服务运行」 部分可以不进行操作,只需测试启动无误即可,后面将使用宝塔面板软件包中的 Supervisor 托管 Halo 进程。 :::

宝塔面板所需软件包下载

需要在宝塔面板的软件商店安装的软件包有:

  1. Nginx
  2. Supervisor

使用 Supervisor 托管 Halo 进程

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

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

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

填写完成之后点击 确定 按钮即可。

添加站点并配置 Nginx

  1. 点击左侧的 网站 菜单项,点击 添加站点 按钮。

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

  • 域名:填写您已经解析到当前服务器公网 IP 的域名。
  • PHP版本:纯静态

填写完成之后点击 提交 按钮即可。

  1. 设置 SSL

:::info 在配置反向代理之前,我们推荐先设置好 SSL 证书。 :::

  • 可选择 宝塔 SSL 或者 Let's Encrypt 进行证书申请。
  • 需要开启右上角的 强制 HTTPS
  1. 修改配置文件

在根节点添加:

  1. upstream halo {
  2. server 127.0.0.1:8090;
  3. }

其中的 8090 为 Halo 的运行端口,请按需修改。

在 server 节点添加:

  1. location / {
  2. proxy_pass http://halo;
  3. proxy_set_header HOST $host;
  4. proxy_set_header X-Forwarded-Proto $scheme;
  5. proxy_set_header X-Real-IP $remote_addr;
  6. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  7. }

修改 server 节点中的 location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ 节点:

  1. location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
  2. {
  3. proxy_pass http://halo;
  4. expires 30d;
  5. error_log /dev/null;
  6. access_log off;
  7. }

修改 server 节点中的 location ~ .*\.(js|css)?$ 节点:

  1. location ~ .*\.(js|css)?$
  2. {
  3. proxy_pass http://halo;
  4. expires 12h;
  5. error_log /dev/null;
  6. access_log off;
  7. }

完整配置文件示例(仅包含关键部分):

  1. upstream halo {
  2. server 127.0.0.1:8090;
  3. }
  4. server
  5. {
  6. ...
  7. location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
  8. {
  9. proxy_pass http://halo;
  10. expires 30d;
  11. error_log /dev/null;
  12. access_log off;
  13. }
  14. location ~ .*\.(js|css)?$
  15. {
  16. proxy_pass http://halo;
  17. expires 12h;
  18. error_log /dev/null;
  19. access_log off;
  20. }
  21. location / {
  22. proxy_pass http://halo;
  23. proxy_set_header HOST $host;
  24. proxy_set_header X-Forwarded-Proto $scheme;
  25. proxy_set_header X-Real-IP $remote_addr;
  26. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  27. }
  28. ...
  29. }

随后点击保存即可。如果配置不生效,请重载 Nginx 或者 重启 Nginx。

最后,访问域名即可进行 Halo 的初始化。