選取您的 Cookie 偏好設定

我們使用提供自身網站和服務所需的基本 Cookie 和類似工具。我們使用效能 Cookie 收集匿名統計資料,以便了解客戶如何使用我們的網站並進行改進。基本 Cookie 無法停用,但可以按一下「自訂」或「拒絕」以拒絕效能 Cookie。

如果您同意,AWS 與經核准的第三方也會使用 Cookie 提供實用的網站功能、記住您的偏好設定,並顯示相關內容,包括相關廣告。若要接受或拒絕所有非必要 Cookie,請按一下「接受」或「拒絕」。若要進行更詳細的選擇,請按一下「自訂」。

建立堆疊和執行應用程式 - AWS OpsWorks

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

建立堆疊和執行應用程式

重要

AWS OpsWorks Stacks 服務已於 2024 年 5 月 26 日終止,並已針對新客戶和現有客戶停用。我們強烈建議客戶盡快將其工作負載遷移至其他解決方案。如果您對遷移有任何疑問,請透過 AWS re:Post 或透過 AWS Premium Support 聯絡 AWS 支援 團隊。

本節說明如何使用 Tomcat 技術指南實作基本堆疊設定,執行名為 SimpleJSP 的簡易 Java 伺服器頁面 (JSP) 應用程式。堆疊包含名為 TomCustom 的 Tomcat 型自訂層和 MySQL 層。SimpleJSP 會部署到 TomCustom,並顯示 MySQL 資料庫中的一些資訊。如果您尚未熟悉如何使用 AWS OpsWorks Stacks 的基本概念,您應該先閱讀 Chef 11 Linux 堆疊入門

SimpleJSP 應用程式

SimpleJSP 應用程式會示範如何設定資料庫連線和從堆疊的 MySQL 資料庫擷取資料的基本操作。

<html> <head> <title>DB Access</title> </head> <body> <%@ page language="java" import="java.sql.*,javax.naming.*,javax.sql.*" %> <% StringBuffer output = new StringBuffer(); DataSource ds = null; Connection con = null; Statement stmt = null; ResultSet rs = null; try { Context initCtx = new InitialContext(); ds = (DataSource) initCtx.lookup("java:comp/env/jdbc/mydb"); con = ds.getConnection(); output.append("Databases found:<br>"); stmt = con.createStatement(); rs = stmt.executeQuery("show databases"); while (rs.next()) { output.append(rs.getString(1)); output.append("<br>"); } } catch (Exception e) { output.append("Exception: "); output.append(e.getMessage()); output.append("<br>"); } finally { try { if (rs != null) { rs.close(); } if (stmt != null) { stmt.close(); } if (con != null) { con.close(); } } catch (Exception e) { output.append("Exception (during close of connection): "); output.append(e.getMessage()); output.append("<br>"); } } %> <%= output.toString() %> </body> </html>

SimpleJSP 使用 DataSource 物件與 MySQL 資料庫通訊。Tomcat 使用 Web 應用程式內容組態檔案中的資料建立和初始化 DataSource 物件,並將其繫結到邏輯名稱。它接著會使用 Java 命名及目錄界面 (JNDI) 命名服務註冊邏輯名稱。為取得適當 DataSource 物件的執行個體,您會建立 InitialContext 物件,並將資源的邏輯名稱傳遞給物件的 lookup 方法,擷取適當的物件。SimpleJSP 範例的邏輯名稱 (java:comp/env/jdbc/mydb) 包含下列元件:

  • 根命名空間 (java),以冒號 (:) 與名稱的剩餘部分分開。

  • 任何額外的命名空間,都會以斜線 (/) 分開。

    Tomcat 會自動將資源新增到 comp/env 命名空間。

  • 資源名稱,定義於 web 應用程式內容組態檔案中,並以斜線與命名空間分隔。

    此範例的資源名稱為 jdbc/mydb

為建立資料庫的連線,SimpleJSP 會執行下列作業:

  1. 呼叫 DataSource 物件的 getConnection 方法,傳回 Connection 物件。

  2. 呼叫 Connection 物件的 createStatement 方法,建立 Statement 物件,您會使用此物件與資料庫通訊。

  3. 透過呼叫適當的 Statement 方法與資料庫通訊。

    SimpleJSP 會呼叫 executeQuery 執行 SHOW DATABASES 查詢,列出伺服器的資料庫。

executeQuery 方法會傳回 ResultSet 物件,其中包含查詢的結果。SimpleJSP 會從傳回的 ResultSet 物件取得資料庫名稱,然後串連它們以建立輸出字串。最後,範例會關閉 ResultSetStatementConnection 物件。如需 JSP 和 JDBC 的詳細資訊,請分別參考 JavaServer Pages TechnologyJDBC Basics

若要搭配堆疊使用 SimpleJSP,您必須將其置放在儲存庫中。您可以使用任何支援的儲存庫,但若要搭配下列章節中討論的範例堆疊使用 SimpleJSP,您必須將其置放在公有 S3 封存中。如需如何使用其他標準儲存庫的資訊,請參閱技術指南儲存庫

將 SimpleJSP 置放在 S3 封存儲存庫中
  1. 將範例程式碼複製到名為 simplejsp.jsp 的檔案,然後將檔案置放在名為 simplejsp 的目錄中。

  2. 建立 simplejsp 目錄的 .zip 存檔。

  3. 建立公有 Amazon S3 儲存貯體、simplejsp.zip上傳至儲存貯體,並將檔案設為公有。

    如需如何執行此任務的說明,請參閱 Amazon Simple Storage Service 入門

建立堆疊

若要執行 SimpleJSP,您需要具有下列 layer 的堆疊。

  • 支援後端 MySQL 資料庫的 MySQL layer。

  • 使用 Tomcat 技術指南支援 Tomcat 伺服器執行個體的自訂 layer。

建立堆疊
  1. 在 AWS OpsWorks Stacks 儀表板上,按一下新增 Stack 以建立新的堆疊,然後按一下進階 >> 以顯示所有選項。設定堆疊如下。

    • 名稱 – 使用者定義的堆疊名稱;此範例使用 TomStack。

    • 使用自訂 Chef 技術指南 – 將切換設定為,顯示一些其他選項。

    • 儲存庫類型 – Git。

    • 儲存庫 URLgit://github.com/amazonwebservices/opsworks-example-cookbooks.git

    • 自訂 Chef JSON – 新增下列 JSON:

      { "tomcat": { "base_version": 7, "java_opts": "-Djava.awt.headless=true -Xmx256m" }, "datasources": { "ROOT": "jdbc/mydb" } }

    對於剩餘的選項,您可以接受預設值。

    自訂 JSON 會執行下列操作:

    • 覆寫 Tomcat 技術指南的 ['base_version'] 屬性,將 Tomcat 的版本設為 7。預設值為 6。

    • 覆寫 Tomcat 技術指南的 ['java_opts'] 屬性,指定執行個體沒有標題,並將 JVM 最大堆積大小設為 256MB。預設值不會為執行 Amazon Linux 的執行個體設定任何選項。

    • 指定 ['datasources] 屬性值,指派 JDBC 資源名稱 (jdbc/mydb) 給 web 應用程式內容名稱 (ROOT),如 tomcat::context 中所討論。

      這個最後一個屬性沒有任何預設值。您必須使用自訂 JSON 設定它。

    Configuration Management interface showing Chef version options and custom JSON input field.
  2. 按一下 Add a layer (新增 layer)。針對 Layer type (Layer 類型),選取 MySQL。然後按一下 Add Layer (新增 Layer)

  3. 按一下導覽窗格中的 Instances (執行個體),然後按一下 Add an instance (新增執行個體)。按一下 Add Instance (新增執行個體) 接受預設值。在執行個體的列上,按一下 start (啟動)

  4. 返回 Layers (Layer) 頁面然後按一下 + Layer (+Layer) 以新增 layer。針對 Layer type (Layer 類型),按一下 Custom (自訂)。範例使用 TomCustomtomcustom 分別做為 layer 的名稱和短名。

    Add Layer form with Custom layer type, Name, and Short name fields for creating a customized layer.
  5. Layers (Layer) 頁面上,針對自訂 layer,按一下 Recipes (配方) 然後按一下 Edit (編輯)。在 Custom Chef Recipes (自訂 Chef 配方) 下,將 Tomcat 技術指南配方指派給 layer 的生命週期事件,如下所示:

    • 針對 Setup (安裝),輸入 tomcat::setup 然後按一下 +

    • 針對 Configure (設定),輸入 tomcat::configure 然後按一下 +

    • 針對 Deploy (部署),輸入 tomcat::deploy 然後按一下 +。然後按一下 Save (儲存)

      .

    Custom Chef Recipes interface showing setup, configure, and deploy steps with options.
  6. 按一下導覽窗格中的 Apps (應用程式),然後按一下 Add an app (新增應用程式)。指定下列選項,然後按一下 Add App (新增應用程式)

    • Name – 應用程式的名稱;範例使用 SimpleJSP,Stacks AWS OpsWorks 產生的簡短名稱將是 Simplejsp。

    • 應用程式類型 – 將此選項設為其他

      AWS OpsWorks Stacks 會自動將標準應用程式類型部署至相關聯的伺服器執行個體。若您將 App type (應用程式類型) 設為「其他」, AWS OpsWorks Stacks 便只會執行部署配方,並讓它們處理部署。

    • 文件根 – 將此選項設定為 ROOT

      Document root (文件根) 的值指定內容名稱。

    • 儲存庫類型 – 將此選項設定為 S3 Archive

    • 儲存庫 URL – 將此設定為您先前建立的應用程式 Amazon S3 URL。

    其他選項請使用預設設定。

    Application settings form with fields for name, app type, document root, and source details.
  7. 使用執行個體頁面,將執行個體新增至 TomCustom 層並啟動它。安裝配方完成後, AWS OpsWorks Stacks 會自動在新執行個體上執行部署配方,因此啟動執行個體也會部署 SimpleJSP。

  8. 當 TomCustom 執行個體上線時,在 Instances (執行個體) 頁面上按一下執行個體名稱以查看詳細資訊。複製公有 IP 地址。然後建構 URL 如下:http://publicIP/tc/appname.jsp。例如,此 URL 看起來會像這樣:http://50.218.191.172/tc/simplejsp.jsp

    注意

    轉遞請求至 Tomcat 的 Apache URL 已設為預設 ['tomcat']['apache_tomcat_bind_path'] 屬性,/tc/。SimpleJSP 文件根已設為 ROOT,為解析至 / 的特殊值。URL 因此為 ".../tc/simplejsp.jsp"。

  9. 將先前步驟中的 URL 於您的瀏覽器內貼上。請查看下列事項:

    Databases found: information_schema simplejsp test
    注意

    如果您的堆疊有 MySQL 執行個體, AWS OpsWorks Stacks 會自動為每個應用程式建立資料庫,並以應用程式的簡短名稱命名。

隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。