【问题标题】:Running embedded tomcat java Spring app in linux vm (Microsoft Azure)在 linux vm (Microsoft Azure) 中运行嵌入式 tomcat java Spring 应用程序
【发布时间】:2017-06-03 23:20:10
【问题描述】:

我有一个 Spring 应用程序,我试图在 linux 虚拟机中运行。我可以打包 .WAR 文件并在我的机器上毫无问题地在本地运行它,但是我无法理解如何运行这个 .WAR 文件并在 vm 上从外部访问它,因为这是我的第一次尝试这样做。

现在,我已经将 .WAR 文件复制到虚拟机,并通过终端运行 java -jarcmd 进行部署。这样做时,我的表是在我在 vm 上运行的 postgres 数据库中创建的。但是,我不确定如何配置我的端点以能够访问我的 API?

任何建议将不胜感激,谢谢!

【问题讨论】:

  • 你说在postgres数据库中运行java -jar创建的表后,我猜app暴露的API也应该是可见的
  • 是的,我认为你是对的。我认为问题可能是配置为允许我不太熟悉的外部访问。我会做更多的挖掘:) 感谢您的评论!
  • okie,你可以试试 curl 请求暴露的 API。托管这些 APIS 的服务器位于防火墙后面?
  • 我尝试将请求卷曲到 API,但它们超时了。我将检查服务器上的防火墙设置
  • 在 Windows 机器上运行 tracert <host-name>,在 *nix 机器上运行 traceroute <host-name>。要检查端口连接,您可以运行telnet <host-name> <port number on which the app is running>。 traceroute/tracert 将让您知道是否由于防火墙而导致丢包。另外,中间有代理吗?

标签: spring azure deployment virtual-machine war


【解决方案1】:

根据你的描述,我建议你可以配置check VM和app的方法如下。

1.您可以使用netstat -ant进行检查,请确保您的端口80(您的服务器端口)正在监听0.0.0.0。如果您的服务正在侦听 127.0.0.1。您只能在 VM 内访问您的 API。

2.在 Azure NSG 或 Azure 端点上打开 80 端口。

如果您的 VM 是 ARM VM,则需要在 Azure NSG(入站规则)上打开端口 80。有关如何在 Azure 门户上添加规则的更多信息,请参阅此link。如果您的 VM 是经典 VM,则需要在端点上打开端口 80。更多信息请参考此link

注意:如果你的APP监听8080或其他端口,你需要将80改为8080或其他。

【讨论】:

    猜你喜欢
    • 2021-01-30
    • 1970-01-01
    • 2015-07-31
    • 1970-01-01
    • 2019-11-20
    • 1970-01-01
    • 2017-10-21
    • 1970-01-01
    • 2017-10-27
    相关资源
    最近更新 更多