【问题标题】:spring-boot serve static content when app is deployed as a background service (jar)当应用程序部署为后台服务(jar)时,spring-boot 提供静态内容
【发布时间】:2019-03-05 21:10:51
【问题描述】:

我在使用 spring-boot 提供静态内容时遇到问题。

我已将静态内容配置为通过 application.properties 文件提供,如下所示:

static-location-path=/opt/myapp/static
spring.resources.static-locations=file:${static-location-path}/

请注意,它位于 jar 文件之外。现在,如果我像这样使用 mvn spring-boot 插件启动我的应用程序:

mvn spring-boot:run -Drun.profiles=staging

那么静态文件就被正确地提供了,我可以访问它们了。

但我不想在暂存环境中像这样运行我的应用程序,而是作为一项服务,可以在服务器启动时自动启动。 所以我设法将应用程序构建为可执行 jar。然后我设法将它作为 init.d 服务启动。应用程序工作正常,但它不再提供静态文件。我检查过,正确的配置文件(确定应该使用哪个 application.properties 文件)应该在那里正确加载。

主要问题是:当应用程序作为 init.d 服务 (jar) 启动并且我使用 application.properties 配置来提供静态内容时,如何使用 spring-boot 提供静态内容?

也许这里有一些我不明白的地方。与此相关的补充问题是:

  1. 不同的 application.properties 文件(在资源文件夹下)是否也捆绑在 jar 中?这意味着应该找到它们,并且应用程序将从那里获得正确的配置值?

  2. 当应用程序捆绑为 jar 并作为 init.d 服务启动时,spring-boot 是否可以提供静态内容?

  3. 如何进一步调试问题?我知道应用日志的写入位置,所以这至少对某些方面有所帮助。

【问题讨论】:

标签: java spring spring-boot init.d


【解决方案1】:

解决了。静态内容文件夹和文件不归用于运行服务的用户所有,因此用户无权访问它们。太糟糕了,收到的错误不清楚 (404),而不是一些权限错误。

【讨论】:

    猜你喜欢
    • 2015-05-24
    • 2016-12-20
    • 1970-01-01
    • 2019-07-11
    • 2015-07-12
    • 2019-02-13
    • 2017-11-19
    • 1970-01-01
    • 2016-07-14
    相关资源
    最近更新 更多