【问题标题】:Spring boot on Aws ec2 instanceAws ec2 实例上的 Spring Boot
【发布时间】:2018-12-30 10:26:30
【问题描述】:

Spring boot demo app 在 localhost 上尝试并成功运行应用程序。我什至安装了

gradle、jdk等依赖

很容易在 aws 实例上。即使我成功运行了示例应用程序的./gradlew bootRun。

像 http:// localhost:8080 aws instane 无法根据我的路径(如 http://myip:8080)工作。

让我知道我到底做错了什么,并确保我添加了自定义 tcp 规则,例如 8080。

【问题讨论】:

  • 它在本地主机上工作,而不是在您使用 IP 时工作?你能提供更多细节吗? IP是弹性IP?该端口还必须从 AWS 管理控制台解除阻塞,这是否已完成?
  • @AlexandruMarina 我不确定弹性 IP,但我正在尝试使用公共 IP。不知道从 aws 控制台解除阻止!
  • @NightOwl 对你有用吗?我面临同样的问题。部署过程中找不到错误日志

标签: java spring amazon-ec2 spring-boot


【解决方案1】:

除了添加自定义 tcp 规则 8080 之外,尝试将以下规则添加到您的安全组中。

类型:自定义 ICMP 规则
协议:回显请求
端口范围:不适用
来源:0.0.0.0/0

然后尝试 ping YourIP 以查看是否可以从 Internet 访问您的 EC2 机器。如果您的 EC2 ip 可以 ping 通,那么我猜您无法访问 http://myip:8080 的原因是您的 spring boot 无法在 EC2 中启动。

您可以ssh into your ec2 并调查您的罐子。我不知道任何聪明的方法,但我的方法是:
ssh进入ec2机器后,

  1. 通过 ps -A -F 查找您的 jar 名称。就我而言,我可以找到java -jar application.jar
  2. 通过sudo find / -name application.jar 找到你的jar 路径。就我而言,我可以找到/var/app/current/application.jar
  3. 然后你可以cd /var/app/current/和java -jar application.jar。如果幸运的话,可以从 spring boot 日志中找到一些提示。

【讨论】:

    【解决方案2】:

    为了使这个调用起作用,有几个先决条件。我会尝试列出一个简短的列表,其他事情可能会根据环境而出现。

    1. 确保公共 IP 地址与您知道的相同。每次重新启动后都会更改。如果您不希望这种行为,您可以使用弹性 IP
    2. 8080 端口可从 Internet 访问。以下是一些确保这种情况的步骤:http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/authorizing-access-to-an-instance.html

    【讨论】:

    • 我已经完成了此更改,将自定义 tcp 规则设置为 8080 端口,但没有成功。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-19
    • 1970-01-01
    • 2020-10-08
    • 2015-10-27
    • 2018-09-17
    相关资源
    最近更新 更多