【发布时间】:2018-04-30 07:04:17
【问题描述】:
我正在运行一个从 Eclipse 导出为可执行 JAR 的 Spring Boot 应用程序。我已经在 Windows 机器上的本地主机上对其进行了测试,包括 Eclipse 和可执行 JAR。
在我的本地 Windows 机器上,我可以使用 Firefox 的 RESTClient 连接到可执行 JAR 的 REST API。可执行文件在我的 Windows 设备上初始化时也成功地向远程服务器发送了一条消息。
我正在尝试将可执行文件部署到 CentOS 设备上进行测试。我通过将输入的默认设置设置为使用 IP 表接受,允许所有流量通过防火墙(我知道,这是一个非常糟糕的主意,但设备在演示中不会存活超过几分钟)。
可执行 JAR 在 CentOS 系统上运行。它说它正在侦听端口 8080,它在初始化时成功地将信息发送到另一个远程服务器;但我无法访问 Spring 应用程序提供的 REST API。
可执行文件在 CentOS 服务器上启动,没有任何复杂性。我可以 ping centOS 服务器,我可以 SSH 进入服务器;但是当我尝试使用 RESTCLient 访问机器时,我被告知 URL 无效,当我尝试使用浏览器发出 GET 请求时,我被告知连接已重置。当我尝试与设备建立连接时,在 spring 应用程序的控制台上没有任何记录。
我可以以这种方式将应用程序部署到 CentoOS 服务器还是需要额外的权限来监听端口?请指教!
【问题讨论】:
-
禁用 selinux 并尝试。
-
@Nonika 我没有禁用 SELinux。我已经禁用了 SELinux,但仍然无法连接到应用程序。在 linux 系统上运行的应用程序是否需要特殊权限才能绑定到端口?
-
1024以下的端口一般需要权限。但我认为没有权限问题。你能通过 tcpdump 检查数据包是否来了吗?
-
@Nonika,感谢您的建议。我会检查一下,但现在没有时间这样做。我现在即将完成大学学业,但几个月后将继续学习这门课程。我很想知道出了什么问题。就目前而言,我让它适用于 VM 上的一个版本的可执行文件,但它不适用于 VM 上的另一个版本的可执行文件,所以我只能假设这是 JAR 的错,但我没有更改任何Jar 版本之间的 Spring Boot 配置。
标签: java linux spring spring-boot centos