在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 測試

 

 成功訪問。

 

本文結束。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM