在AWS EC2上部署springboot项目

前言

记录第一次在AWS EC2云上部署springboot web服务。

在windows上开发springboot项目,直接通过windows将项目jar包部署到AWS EC2上,部署运行,并成功访问。

1. 在windows10上开发springboot项目

1.1 项目开发

本spring boot demo用于测试,一切从简,开发工具IDEA:

项目目录如图:

pom文件依赖:

 1    <packaging>jar</packaging>
 2     <parent>
 3         <groupId>org.springframework.boot</groupId>
 4         <artifactId>spring-boot-starter-parent</artifactId>
 5         <version>2.1.0.RELEASE</version>
 6     </parent>
 7 
 8     <dependencies>
 9         <dependency>
10             <groupId>org.springframework.boot</groupId>
11             <artifactId>spring-boot-starter-web</artifactId>
12             <version>2.1.0.RELEASE</version>
13         </dependency>
14         <dependency>
15             <groupId>org.springframework.boot</groupId>
16             <artifactId>spring-boot-starter</artifactId>
17             <version>2.1.0.RELEASE</version>
18         </dependency>
19     </dependencies>

启动类:

 1 package cn.wqz.aws.web;
 2 
 3 import org.springframework.boot.SpringApplication;
 4 import org.springframework.boot.autoconfigure.SpringBootApplication;
 5 
 6 @SpringBootApplication
 7 public class Application {
 8     public static void main(String[] args) {
 9         SpringApplication.run(Application.class, args);
10     }
11 }

Controller:

 1 package cn.wqz.aws.web.controller;
 2 
 3 import org.springframework.stereotype.Controller;
 4 import org.springframework.web.bind.annotation.RequestMapping;
 5 import org.springframework.web.bind.annotation.ResponseBody;
 6 
 7 @Controller
 8 public class IndexController {
 9 
10     @RequestMapping("index")
11     @ResponseBody
12     String index(){
13         return "Hello, this is a test of EC2 spring boot web server!";
14     }
15 }

1.2 打包测试

spring boot提供了专用的项目打包插件,pom中加入以下配置:

1     <!-- 用于打包 -->
2     <build>
3         <plugins>
4             <plugin>
5                 <groupId>org.springframework.boot</groupId>
6                 <artifactId>spring-boot-maven-plugin</artifactId>
7             </plugin>
8         </plugins>
9     </build>

依次执行clean、package

 成功打包的控制台输出,输出jar文件在target中:

我这里对jar包改了名字:

 测试运行:

java -jar .ec2_web_test.jar

成功访问:

2. 使用 PuTTY 从 Windows 连接到 AWS Linux 实例(摘自亚马逊官方文档)

PDF

启动您的实例之后,您可以连接到该实例,然后像使用您面前的计算机一样来使用它。

以下说明介绍如何使用 PuTTY (适用于 Windows 的免费 SSH 客户端) 连接到您的实例。如果您在尝试连接到您的实例时收到错误消息,请参阅排查实例的连接问题

先决条件

使用 PuTTY 连接到您的 Linux 实例之前,请先完成以下先决条件。

验证该实例是否就绪

启动实例后,需要几分钟准备好实例,以便您能连接到实例。检查您的实例是否通过了状态检查。您可以在实例页面的状态检查列中查看此信息。

验证有关连接到您的实例的常规先决条件

有关更多信息,请参阅 连接到您的实例的常规先决条件

在本地计算机上安装 PuTTY

从 PuTTY 下载页面下载 PuTTY 并安装。如果您安装的是旧版本的 PuTTY,建议您下载最新版本。确保安装整个套件。

使用 PuTTYgen 转换私有密钥

找到您在启动实例时指定的密钥对的私有密钥(.pem 文件)。将 .pem 文件转换为 .ppk 文件以用于 PuTTY。有关更多信息,请按照下一节中的步骤操作。

使用 PuTTYgen 转换私有密钥

PuTTY 自身并不支持由 SSH 密钥的生成的私有密钥格式 (.pem)。PuTTY 提供一个名为 PuTTYgen 的工具,此工具可以将密钥转换为所需的 PuTTY 格式。您必须如下所示将私有密钥(.pem 文件)转换为此格式(.ppk 文件),以便使用 PuTTY 连接到您的实例。

转换您的私有密钥

  1. 从 Start (开始) 菜单中,依次选择 All Programs (所有程序)、PuTTY、PuTTYgen。

  2. 在 Type of key to generate 下,选择 RSA。如果您使用的是旧版本的 PuTTYgen,请选择 SSH-2 RSA。

    
							PuTTYgen 中的 RSA 密钥
  3. 选择 Load。默认情况下,PuTTYgen 仅显示扩展名为 .ppk 的文件。要找到您的 .pem 文件,请选择显示所有类型的文件的选项。

    
							选择所有文件类型
  4. 选择在启动实例时指定的密钥对的 .pem 文件,然后选择 Open (打开)。PuTTYgen 会显示一个通知,指示已成功导入 .pem 文件。选择 OK。

  5. 要以 PuTTY 可使用的格式保存密钥,请选择保存私有密钥。PuTTYgen 将显示有关保存没有密码的密钥的警告。选择是。

    注意

    私有密钥上的密码提供额外一层保护。即使发现了您的私有密钥,也不能在没有密码的情况下使用该密钥。使用密码的缺点是自动化更难实现,因为需要人工干预以登录到实例或将文件复制到实例中。

  6. 为密钥指定您用于密钥对的相同名称(例如 my-key-pair)并选择 Save (保存)。PuTTY 会自动添加 .ppk 文件扩展名。

您的私有密钥格式现在是正确的 PuTTY 使用格式了。您现在可以使用 PuTTY 的 SSH 客户端连接到实例。

连接到 Linux 实例

通过以下过程使用 PuTTY 连接到您的 Linux 实例。您需要使用为私有密钥创建的 .ppk 文件。有关更多信息,请参阅上一个部分中的使用 PuTTYgen 转换私有密钥。如果您在尝试连接到您的实例时收到错误消息,请参阅排查实例的连接问题

使用 PuTTY 连接到您的实例

  1. 启动 PuTTY(在开始菜单中,选择所有程序 > PuTTY > PuTTY)。

  2. 在 Category 窗格中,选择 Session 并填写以下字段:

    1. 在主机名框中,执行以下操作之一:

      • (公有 DNS)要使用您实例的公有 DNS 进行连接,请输入 user_name@public_dns_name

      • (IPv6) 或者,如果您的实例具有 IPv6 地址,要使用实例的 IPv6 地址进行连接,请输入 user_name@ipv6_address

      有关如何获取实例的公有 DNS 名称或 IPv6 地址的信息,请参阅获取有关您的实例的信息

      对于 user_name,确保为您的 AMI 指定相应的用户名。例如:

      • 对于 Amazon Linux 2 或 Amazon Linux AMI,用户名称是 ec2-user

      • 对于 CentOS AMI,用户名称是 centos

      • 对于 Debian AMI,用户名称是 admin 或 root

      • 对于 Fedora AMI,用户名为 ec2-user 或 fedora

      • 对于 RHEL AMI,用户名称是 ec2-user 或 root

      • 对于 SUSE AMI,用户名称是 ec2-user 或 root

      • 对于 Ubuntu AMI,用户名称是 ubuntu

      • 另外,如果 ec2-user 和 root 无法使用,请与 AMI 供应商核实。

    2. 确保端口值为 22。

    3. 在连接类型下,选择 SSH。

    
							PuTTY 配置 - 会话
  3. (可选) 您可以配置 PuTTY 以定期自动发送“保持连接”数据以将会话保持活动状态。要避免由于会话处于不活动状态而与实例断开连接,这是非常有用的。在 Category 窗格中,选择 Connection,然后在 Seconds between keepalives 字段中输入所需的间隔。例如,如果您的会话在处于不活动状态 10 分钟后断开连接,请输入 180 以将 PuTTY 配置为每隔 3 分钟发送一次保持活动数据。

  4. 在 Category 窗格中,展开 Connection,再展开 SSH,然后选择 Auth。完成以下操作:

    1. 选择 Browse。

    2. 选择为密钥对生成的 .ppk 文件,然后选择打开。

    3. (可选) 如果打算稍后重新启动此会话,则可以保存此会话信息以便日后使用。在类别下面,选择会话,在保存的会话中输入会话的名称,然后选择保存。

    4. 选择 Open。

  5. 如果这是第一次连接到该实例,PuTTY 将显示安全警报对话框,以询问您是否信任要连接到的主机。

    1. (可选) 验证安全警报对话框中的指纹是否与您之前在 (可选)获取实例指纹 中获得的指纹相匹配。如果这些指纹不匹配,则表示有人可能在试图实施“中间人”攻击。如果匹配,请继续到下一步。

    2. 选择是。将打开一个窗口,并且您连接到实例。

      注意

      如果您在将私有密钥转换成 PuTTY 格式时指定了密码,当您登录到实例时,您必须提供该密码。

如果您在尝试连接到您的实例时收到错误消息,请参阅排查实例的连接问题

3. 使用 WinSCP 将JAR传输到您的 Linux 实例(摘自亚马逊官方文档)

WinSCP 是适用于 Windows 的基于 GUI 的文件管理器,您可以通过它来使用 SFTP、SCP、FTP 和 FTPS 协议将文件上传并传输到远程计算机。通过 WinSCP,您可以将 Windows 计算机中的文件拖放到 Linux 实例或同步这两个系统之间的所有目录结构。

要使用 WinSCP,您需要使用在使用 PuTTYgen 转换私有密钥中生成的私有密钥。您还需要使用 Linux 实例的公有 DNS 地址。

  1. 从 http://winscp.net/eng/download.php 上下载并安装 WinSCP。对于大多数用户而言,采用默认安装选项就可以了。

  2. 启动 WinSCP。

  3. 在 WinSCP 登录屏幕中,对于 Host name,请输入实例的公有 DNS 主机名称或公有 IPv4 地址。

    (仅限 IPv6) 要使用实例的 IPv6 地址登录,请输入实例的 IPv6 地址。

  4. 对于用户名,请输入默认的 AMI 用户名。

    • 对于 Amazon Linux 2 或 Amazon Linux AMI,用户名称是 ec2-user

    • 对于 CentOS AMI,用户名称是 centos

    • 对于 Debian AMI,用户名称是 admin 或 root

    • 对于 Fedora AMI,用户名为 ec2-user 或 fedora

    • 对于 RHEL AMI,用户名称是 ec2-user 或 root

    • 对于 SUSE AMI,用户名称是 ec2-user 或 root

    • 对于 Ubuntu AMI,用户名称是 ubuntu

    • 另外,如果 ec2-user 和 root 无法使用,请与 AMI 供应商核实。

  5. 为您的实例指定私有密钥。对于私有密钥,请输入私有密钥的路径,或选择 ... 按钮以浏览文件。要打开高级站点设置,对于较高版本的 WinSCP,请选择高级。要查找私有密钥文件设置,请在 SSH 下面选择身份验证。

    以下是 WinSCP 版本 5.9.4 中的屏幕截图:

    
							WinSCP Advanced 屏幕

    WinSCP 需要 PuTTY 私有密钥文件 (.ppk)。您可以使用 PuTTYgen 将 .pem 安全密钥文件转换成 .ppk 格式。有关更多信息,请参阅使用 PuTTYgen 转换私有密钥

  6. (可选)在左侧面板中,选择目录。对于远程目录,请输入要将文件添加到的目录的路径。要打开高级站点设置,对于较高版本的 WinSCP,请选择高级。要查找远程目录设置,请在环境下面选择目录。

  7. 选择登录。要将主机指纹添加到主机缓存中,请选择是。

    
							WinSCP 屏幕
  8. 建立连接后,在连接窗口中,您的 Linux 实例显示在右侧,本地计算机显示在左侧。您可以直接将文件从本地计算机拖放到远程文件系统。有关 WinSCP 的更多信息,请参阅 http://winscp.net/eng/docs/start 中的项目文档。

    9 .将 jar 文件拖至linux中:

 4. 配置运行与测试

4.1 配置

解决一些问题:

问题1:JDK版本问题

windows开发springboot使用的是JDK8版本,检查服务器上的JDK,不符合的予以卸载与更改,注意更改profile配置文件。

问题2:EC2端口问题

在AWS控制台,进入目标实例安全组,编辑入站规则:

 自行调整配置(自定义出可选择任意流量):

 4.2 运行

java -jar ec2_web_test.jar

 4.3 测试

 成功访问。

本文结束。

原文地址:https://www.cnblogs.com/yelao/p/12589098.html