全部產品
Search
文件中心

Elastic Compute Service:手動部署Java Web環境(Jetty)

更新時間:Dec 21, 2024

Java Web是一種使用Java語言開發動態Web應用程式的技術棧,它利用Java平台的強大功能,結合各種技術和架構,使得開發人員能夠建立複雜、高效能、可跨平台部署的Web應用。而Jetty是一個開源的Servlet容器,主要用於運行Java Web應用。相較於Tomcat,Jetty更輕量級,更適合輕量級應用、高並發情境或分布式環境。本文介紹如何在ECS執行個體中通過Jetty部署Java Web環境。

前提條件

部署Java Web環境時,已有ECS執行個體必須滿足以下條件:

  • 執行個體已指派固定公網IP地址或綁定Elastic IP Address(EIP)。具體操作,請參見Elastic IP Address

  • 執行個體安全性群組的入方向規則需允許存取遠端連線、Jetty服務相關的連接埠,例如22、3389、8080連接埠。具體操作,請參見添加安全性群組規則

  • 執行個體已部署Java環境。具體操作,請參見部署Java環境

操作方案

您可以根據ECS執行個體的系統,選擇合適的方案。

Linux

本文以安裝12.0.16版本的Jetty為例。若您安裝其他版本,或使用其他目錄,您需要根據實際版本及目錄替換命令中的版本及路徑。

  1. 登入Linux伺服器。具體操作,請參見使用Workbench工具以SSH協議登入Linux執行個體

  2. 運行以下命令,下載並解壓Jetty 12安裝包。

    重要
    • 如果您需要安裝其他版本,或下方下載地址失效,請您直接存取Jetty官網擷取下載地址,並替換命令中的URL。

    • 不同版本的Jetty支援的JDK版本不同,請您根據部署Java環境時安裝的JDK版本,閱讀Jetty官網中的說明,選擇合適版本的Jetty。

      image

    wget https://repo1.maven.org/maven2/org/eclipse/jetty/jetty-home/12.0.16/jetty-home-12.0.16.tar.gz --no-check-certificate
    tar -zxvf jetty-home-12.0.16.tar.gz
  3. 運行以下命令,移動Jetty所在目錄。

    sudo mv jetty-home-12.0.16 /usr/local/jetty/
  4. 運行以下命令,建立jetty-base目錄。

    sudo mkdir /usr/local/jetty-base
  5. 設定環境變數。

    1. 運行以下命令,編輯~/.bashrc檔案。

      sudo vim ~/.bashrc
    2. i進入編輯模式,在檔案中添加以下內容。

      說明

      請將下方內容中JETTY_HOME設定為實際的Jetty安裝目錄,JETTY_BASE設定為jetty-base目錄。

      export JETTY_HOME=/usr/local/jetty
      export JETTY_BASE=/usr/local/jetty-base
    3. 編輯完成後,按Esc鍵,輸入:wq,按Enter鍵儲存並關閉檔案。

    4. 運行以下命令,使修改生效。

      source ~/.bashrc
  6. 啟動Jetty模組,初始化jetty-base目錄。

    1. 運行以下命令,進入jetty-base目錄。

      cd /usr/local/jetty-base
    2. 運行以下命令,初始化jetty-base目錄,命令執行完畢後,會建立 $JETTY_BASE/start.d/ 目錄及其他包含伺服器配置資訊的目錄。

      說明
      • 您可以使用java -jar $JETTY_HOME/start.jar --list-modules=*命令來查看有哪些模組可用。

      • 若您使用Jetty 9,請替換--add-module--add-to-start

      sudo java -jar $JETTY_HOME/start.jar --add-module=server,http,deploy

      image

  7. 驗證環境配置。

    重要

    以下命令需在jetty-base目錄下運行。

    1. 運行以下命令,部署Jetty的樣本Web應用程式。

      • 若您使用Jetty11、10,需要將下方命令的demos替換為demo

      • 若您使用Jetty9,需運行sudo mv $JETTY_HOME/demo-base/webapps/ROOT $JETTY_BASE/webapps命令部署樣本。

      說明

      您也可以上傳本地測試專案WAR包至$JETTY_BASE/webapps目錄進行測試,具體操作,請參見上傳或下載檔案

      sudo java -jar $JETTY_HOME/start.jar --add-module=demos
    2. 運行以下命令,啟動Jetty。

      說明

      Jetty預設監聽8080連接埠,您可以通過sudo netstat -tunlp | grep 8080命令查看連接埠是否被佔用,若連接埠被佔用,您可以在啟動Jetty時指定其他連接埠以解決連接埠衝突問題,例如:nohup sudo java -jar $JETTY_HOME/start.jar jetty.http.port=8081 &

      nohup sudo java -jar $JETTY_HOME/start.jar &
    3. 在本地瀏覽器地址欄中,輸入http://公網IP:8080,成功查看到測試頁面,則說明環境配置成功。

      說明
      • 若您修改過Jetty的連接埠,請將8080替換為修改後的連接埠,並檢查安全性群組,確認允許存取該連接埠。具體操作,請參見添加安全性群組規則

      • 若您上傳了本地測試專案WAR包,可訪問http://公網IP:8080/包名測試。

      image

Windows

重要

此教程僅適用於安裝Jetty 12、Jetty 11、Jetty 10。

本文以安裝12.0.16版本的Jetty為例。若您安裝其他版本,或使用其他目錄,您需要根據實際版本及目錄替換命令中的版本及路徑。

  1. 登入Linux伺服器。具體操作,請參見使用Workbench工具以RDP協議登入Windows執行個體

  2. 下載Jetty。

    不同版本的Jetty支援的JDK版本不同,請您根據部署Java環境時安裝的JDK版本,閱讀Jetty官網中的說明,選擇合適版本的Jetty,並下載對應的安裝包。

    image

    image

  3. 解壓Jetty壓縮包。

    將下載的壓縮包解壓到您希望安裝Jetty的位置。本文以C:\download為例。

    重要

    需要將Jetty解壓至不包含空格的路徑。

  4. 設定JETTY_HOME環境變數。

    1. 按右鍵此電腦,選擇屬性image

    2. 關於頁滾動至最下方,單擊進階系統設定image

    3. 單擊環境變數image

    4. 系統變數地區,單擊建立,建立系統變數,完成後單擊確定。變數名為JETTY_HOME,變數值為Jetty安裝目錄,例如C:\download\jetty-home-12.0.16

      image

    5. 單擊確定,儲存環境變數配置。

  5. 建立jetty-base檔案夾。本文以在C:\download下建立為例。

    image

  6. 初始化jetty-base檔案夾。

    1. 進入jetty-base檔案夾,在地址欄輸入cmd並按Enter鍵,開啟命令提示字元。

      image

    2. 在命令提示字元中運行以下命令,初始化jetty-base檔案夾。命令執行完畢後,會建立start.d目錄及其他包含伺服器配置資訊的目錄。

      java -jar %JETTY_HOME%/start.jar --add-module=http,server,deploy

      image

  7. 驗證Jetty。

    1. 運行以下命令,部署Jetty的樣本Web應用程式。

      若您使用Jetty11、10,需要將下方命令的demos替換為demo

      說明

      您也可以上傳本地測試專案WAR包至<jetty-base>/webapps目錄進行測試,<jetty-base>jetty-base檔案夾路徑,例如C:\download\jetty-base。具體操作,請參見上傳或下載檔案

      java -jar %JETTY_HOME%/start.jar --add-module=demos
    2. 運行以下命令,啟動Jetty。啟動後請勿關閉命令提示字元視窗。

      說明

      Jetty預設監聽8080連接埠,您可以通過netstat -ano | findstr :8080命令查看連接埠是否被佔用,若連接埠被佔用,您可以在啟動Jetty時指定其他連接埠以解決連接埠衝突問題,例如:java -jar %JETTY_HOME%/start.jar jetty.http.port=8081

      java -jar %JETTY_HOME%/start.jar
    3. 在本地瀏覽器地址欄中,輸入http://公網IP:8080,成功查看到測試頁面,則說明環境配置成功。

      說明
      • 若您修改過Jetty的連接埠,請將8080替換為修改後的連接埠,並檢查安全性群組,確認允許存取該連接埠。具體操作,請參見添加安全性群組規則

      • 若您上傳了本地測試專案WAR包,可訪問http://公網IP:8080/包名測試。

      image

後續操作

  • 部署Java Web環境後,您可以考慮在伺服器上配置網站,為ECS執行個體的公網IP地址綁定網域名稱等。具體操作,請參見搭建網站

    您可以選擇合適的開發工具進行Web開發,如果您的應用需要使用資料庫儲存應用資料,可以在Web專案的相關設定檔(例如Properties檔案)中添加資料庫配置,串連至資料庫。開發完成後,您可以將Java Web應用程式部署到Jetty中(例如部署到$JETTY_BASE/webapps目錄),部署和運行後,通過Web訪問您的應用。關於Jetty的更多資訊,您可以訪問Jetty官網擷取。

    說明

    如果您使用的是其他版本的Jetty,只需將URL中的版本號碼替換為相應版本即可。

    若您需要上傳本地檔案到ECS,具體操作,請參見上傳或下載檔案(Linux)

    若您需要使用資料庫儲存和管理Web應用中的資料,可以使用雲資料庫RDS MySQL,或在執行個體中部署MySQL資料庫,具體操作,請參見部署資料庫

  • 您可以考慮使用Server Load Balancer提高網站的可用性和效能。詳細資料,請參見快速入門

常見問題

部署完成後,本地瀏覽器無法訪問http://公網IP:8080

參考本文部署Jetty後,驗證時無法通過瀏覽器訪問http://公網IP:8080,可能是以下原因導致:

  • 可能原因一:

    伺服器開啟了系統防火牆或SELinux等,並設定了屏蔽外界訪問的規則,導致無法遠端存取伺服器。您可以通過以下方案嘗試解決:

  • 可能原因二:

    在啟動Jetty時,您修改過Jetty的監聽連接埠。您可以通過以下方案嘗試解決:

    http://公網IP:8080中的8080替換為修改後的連接埠,並檢查安全性群組,確認允許存取該連接埠。具體操作,請參見添加安全性群組規則