【问题标题】:Pivotal Cloud Foundry - Deployed Spring Boot App failed to run because of java netsocket(port) permission deniedPivotal Cloud Foundry - 由于 java netsocket(port) 权限被拒绝,部署的 Spring Boot 应用程序无法运行
【发布时间】:2020-12-15 17:19:52
【问题描述】:

所以,我尝试将 Spring Boot 应用程序部署到 PCF 服务器。当我部署它时,日志显示我的应用程序已关闭,因为它无法打开 tomcat 服务器,因为有一个 java.netsocketexception 表示权限被拒绝。 tomcat服务器一时间还好好的(成功使用了端口),但下一刻,因为有权限被拒绝的netsocketexception,它被关闭了。

我尝试使用的端口是 443 端口。我尝试查找多种问题。其中之一说我需要具有 root 访问权限才能使用低于 1000 的端口。问题是,即使我使用端口 443,我的其他应用程序,即尤里卡服务器也能完美运行。

配置、构建包和一切都是一样的。它甚至部署在同一个pcf平台上。那么,为什么这个应用程序会失败,而另一个(eureka 服务器)可以使用 443 端口。

谁能告诉我需要检查哪些内容才能确定问题所在?

【问题讨论】:

  • 您不应该尝试设置端口,您需要让 Java buildpack 为您设置要使用的端口(它将根据平台告诉它的内容执行此操作)。此外,您无需将应用程序配置为使用 HTTPS。同样,该平台将为您处理所有这些。停止所有这些,看看会发生什么或解释你为什么要这样做。
  • 我的 buildpack 和 env 配置默认端口是 8080,因为我想在端口 443 中部署我的应用程序,所以我在 application.yml 中将 server.port 设置为 443
  • 我问的问题是为什么我的其他应用可以部署在 443 端口,但我尝试部署的却不行
  • 如答案中所述,您不想设置server.port(我有点惊讶Java buildpack 并没有压缩您的设置)。无论如何,正如我上面提到的,TLS/HTTPS 是平台给你的礼物。它可以正常工作,您无需在应用程序中执行任何特定操作来支持它。只需将路由映射到您的应用程序并通过 HTTPS 访问该路由。 TLS 由平台终止,流量通过端口 8080 上的 HTTP 路由到您的应用程序。
  • 我不知道为什么它以前有效。没有更多信息很难说。 Java buildpack 可能会覆盖您的设置,它通过 SERVER_PORT env 变量提供端口,该变量应该覆盖 application.yml 中的设置(请参阅docs.spring.io/spring-boot/docs/current/reference/html/…,其中列出了 Spring Boot 加载设置的顺序和位置)。也有可能您使用了 TCP 路由或内部路由,它们可以在端口 443 上工作,但您会知道是否这样做。

标签: spring-boot tomcat cloud-foundry


【解决方案1】:

从 Spring Boot yml / properties 配置中删除 server.port 配置。默认情况下,它将向 PCF 上的 443 公开服务

【讨论】:

  • 看看我在上面帖子中的评论,看看为什么
猜你喜欢
  • 2018-06-09
  • 2018-09-06
  • 1970-01-01
  • 1970-01-01
  • 2021-09-04
  • 2019-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多