[halo-dev/halo]非根目录下部署问题

2024-08-20 456 views
9

/admin/index.html 打包后代码

<title>Halo Dashboard</title>
<link href=/css/chunk-13e4f411.8481e8b4.css rel=prefetch>
<link href=/css/chunk-14e8932a.b6783003.css rel=prefetch>
<link href=/css/chunk-1a112dee.45475c5a.css rel=prefetch>

后台 halo-admin 打包时使用绝对路径, 这样会导致如果部署在非根目录下时, 访问后台页面时变成空白. 比如在 application.yml 设置 context-path 来测试

server:
    servlet:
        context-path: /halo

ftl 模版中也存在这样的问题, 比如 install.ftl

<link rel="stylesheet" href="/static/halo-admin/plugins/bootstrap/css/bootstrap.min.css">
<link rel="stylesheet" href="/static/halo-admin/css/AdminLTE.min.css">
<link rel="stylesheet" href="/static/halo-admin/plugins/animate/animate.min.css">
<link rel="stylesheet" href="/static/halo-admin/plugins/bootstrapvalidator/css/">

回答

4

所以你的需求是什么?

7

@ivicel 哦哦,好的。

3

@ivicel 这种需求其实可以通过 nginx 反向代理来实现。halo 默认使用的嵌入式服务器,所以设置 context-path 的意义并不大。

另外,halo-admin 实际上是可以独立部署的。

3

@JohnNiang 嗯,请考虑所谓的小白,我只是想尽可能减少部署成本。如果你想那样独立部署或是其他的方案,是可以自己动手操作的。

6

如果你把这个打个一个 war 包直接扔进一个 tomcat 也是会产生路径问题的 像 ftl 模版应该使用 @spring.url 这样 macro 来处理 链接, 这是考虑程序的健壮性

0

@ivicel 好的哦,非常感谢你的建议。

6

@ivicel 如果你有时间的话,可以参与一下完善哦,目前需要开发的东西太多,有些东西可能顾忌不上。

7

为了提供一个部署的便捷性,我们打包了 halo-adminhalo 中,admin/index.html 无法感知用户配置的 server.servlet.context-path。再者,主题文件中需要修改的地方太多,也是给主题创作者增加相应的负担。

程序的健壮性便捷性的权衡之下,我们可能以不提供 war 包来避免这个问题。

7

@ivicel halo-admin 我们无能为力,但是主题部分,我们可以考虑修复这个问题。