你好朋友,
在本教程中,我们将看到如何在AWS EC2实例上部署Spring Boot应用程序。
这是我们将要执行的步骤。
1.使用Spring Boot Initialiser创建一个Spring Boot项目。
2.创建一个休息端点,部署后我们可以访问
3.启动EC2实例 4.将我们的Spring Boot项目从本地计算机复制到EC2实例 5.使用SSH连接到EC2实例 6.删除JDK 7并通过EC2实例安装JDK 8 7.在EC2实例上执行spring boot jar 8.确保您的安全组允许通过端口8080并使用TCP协议来自Internet的入站流量 9.通过从浏览器中访问端点URL来测试应用程序 。
因此,让我们一步一步来看看...。
您可以按照以前的教程之一进行操作,在其中我逐步说明了如何使用Spring Initialiser创建Spring Boot项目。以下是链接。
如何使用Spring Initialiser创建Spring Boot项目
对于此示例,我给项目指定了名称“ springbootproject”,因此您可以使用相同的名称,因为该名称将在后续步骤中使用。
在项目中添加以下Rest端点。我们正在添加此非常基本的端点,以便稍后可以在部署后通过单击此端点来测试应用程序。
package com.blogspot.javasolutionsguide.springbootproject; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** * @author JavaSolutionsGuide * */ @RestController @RequestMapping (value = "/api" ) public class Hello { @GetMapping (value = "/v1/data" ) public String sayHelloWorld() { return "Hello JavaSolutionsGuide Readers" ; } }
我编写了详细的分步教程,其中介绍了如何在AWS中启动EC2实例。
链接在这里。 如何在AWS上启动EC2实例
当我们想在EC2上部署我们的spring boot项目时,代码必须移至EC2实例。
将代码从本地计算机复制到EC2实例,然后从代码所在的目录中执行以下命令。
scp -i /用户/ Aakarsh /下载/
EC2Keypair.pem /用户/ Aakarsh /下载/springbootproject/target/springbootproject-0.0.1-SNAPSHOT.jar ec2-user@ec2-54-242-53-241.compute-1.amazonaws.com:〜
scp的语法如下所示
scp -i <本地计算机上pem文件的路径> <spring引导项目或可交付成果的路径> user @ remote主机名:〜
scp
您可以通过以下链接关于SCP的信息安全复制协议
在AWS中启动EC2实例时,您可以指定密钥对。您可以指定在启动时创建的现有密钥对或新密钥对。在EC2引导时,公钥内容将放置在实例中。 〜/ .ssh /授权密钥中的条目。要登录到实例,必须在连接到实例时指定私钥(.pem文件)。
请注意,每个Linux实例均使用默认的Linux系统用户帐户启动。默认用户名由启动实例时用户指定的API确定。对于Amazon Linux 2或Amazon Linux API,用户名为ec2-user。
〜代表远程EC2系统的主目录。
要连接到EC2实例,您需要遵循以下说明。
单击实例,然后从以下屏幕上单击“连接”按钮,将获得这些说明。
这是从终端执行命令并连接到ec2实例时的样子。
我从AMI获得的EC2实例默认情况下已打开jdk 7。
我们也可以继续使用JDK 7,但是由于我现在大多数时候都在使用JDK,并且仅使用jdk 8编译我的项目,因此我删除了JDK 7并安装了JDK 8。
删除JDK 7的命令
sudo yum删除java-1.7.0-openjdk
sudo yum安装java-1.8.0
执行以下命令
java -jar springbootproject-0.0.1-SNAPSHOT.jar
在AWS控制台中单击实例并检查与您的实例关联的安全组
正如我们在上面的屏幕截图中看到的那样,此EC2实例所附的安全组是launch-wizard-1
现在,当我们打开此安全组时,我有以下条目,如您所见,它仅允许使用SSH通过端口22进行Internet通信。这完全是我们能够使用SSH从我们的计算机连接到此EC2实例的原因。如果我们从这里删除此规则,SSh将不起作用
但是现在,由于我们要使用http协议从浏览器(互联网)测试端点,并且需要通过端口8080访问我们的应用程序,因此安全组中应该有与之对应的规则。
因此,让我们继续添加安全组入站规则
单击保存,您的新规则将被保存。此外,您无需重新启动实例即可使此安全组规则生效。一旦保存该规则,它将立即生效。
在浏览器中点击以下网址
http://ec2-3-19-64-196.us-east-2.compute.amazonaws.com:8080/api/v1/data
ec2-3-19-64-196.us-east-2.compute.amazonaws.com在这里是EC2实例的公共DNS。
因此,正如您所看到的,我们能够成功地看到来自端点的响应,这意味着springbootproject已成功部署并正在按预期执行。
谢谢您的阅读。此外,我还将在未来几天内在AWS上编写更多此类教程。如果您发现本教程很有用,请不要忘了订阅博客,不要错过最新博客的更新。
翻译自: https://www.javacodegeeks.com/2019/10/deploy-spring-boot-application-aws-ec2-instance.html