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為例。若您安裝其他版本,或使用其他目錄,您需要根據實際版本及目錄替換命令中的版本及路徑。
登入Linux伺服器。具體操作,請參見使用Workbench工具以SSH協議登入Linux執行個體。
運行以下命令,下載並解壓Jetty 12安裝包。
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運行以下命令,移動Jetty所在目錄。
sudo mv jetty-home-12.0.16 /usr/local/jetty/運行以下命令,建立
jetty-base目錄。sudo mkdir /usr/local/jetty-base設定環境變數。
運行以下命令,編輯
~/.bashrc檔案。sudo vim ~/.bashrc按
i進入編輯模式,在檔案中添加以下內容。說明請將下方內容中
JETTY_HOME設定為實際的Jetty安裝目錄,JETTY_BASE設定為jetty-base目錄。export JETTY_HOME=/usr/local/jetty export JETTY_BASE=/usr/local/jetty-base編輯完成後,按
Esc鍵,輸入:wq,按Enter鍵儲存並關閉檔案。運行以下命令,使修改生效。
source ~/.bashrc
啟動Jetty模組,初始化
jetty-base目錄。運行以下命令,進入
jetty-base目錄。cd /usr/local/jetty-base運行以下命令,初始化
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
驗證環境配置。
重要以下命令需在
jetty-base目錄下運行。運行以下命令,部署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運行以下命令,啟動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 &在本地瀏覽器地址欄中,輸入
http://公網IP:8080,成功查看到測試頁面,則說明環境配置成功。說明若您修改過Jetty的連接埠,請將8080替換為修改後的連接埠,並檢查安全性群組,確認允許存取該連接埠。具體操作,請參見添加安全性群組規則。
若您上傳了本地測試專案WAR包,可訪問
http://公網IP:8080/包名測試。

Windows
此教程僅適用於安裝Jetty 12、Jetty 11、Jetty 10。
本文以安裝12.0.16版本的Jetty為例。若您安裝其他版本,或使用其他目錄,您需要根據實際版本及目錄替換命令中的版本及路徑。
登入Linux伺服器。具體操作,請參見使用Workbench工具以RDP協議登入Windows執行個體。
下載Jetty。
不同版本的Jetty支援的JDK版本不同,請您根據部署Java環境時安裝的JDK版本,閱讀Jetty官網中的說明,選擇合適版本的Jetty,並下載對應的安裝包。


解壓Jetty壓縮包。
將下載的壓縮包解壓到您希望安裝Jetty的位置。本文以
C:\download為例。重要需要將Jetty解壓至不包含空格的路徑。
設定
JETTY_HOME環境變數。按右鍵此電腦,選擇屬性。

在關於頁滾動至最下方,單擊進階系統設定。

單擊環境變數。

在系統變數地區,單擊建立,建立系統變數,完成後單擊確定。變數名為
JETTY_HOME,變數值為Jetty安裝目錄,例如C:\download\jetty-home-12.0.16。
單擊確定,儲存環境變數配置。
建立
jetty-base檔案夾。本文以在C:\download下建立為例。
初始化
jetty-base檔案夾。進入
jetty-base檔案夾,在地址欄輸入cmd並按Enter鍵,開啟命令提示字元。
在命令提示字元中運行以下命令,初始化
jetty-base檔案夾。命令執行完畢後,會建立start.d目錄及其他包含伺服器配置資訊的目錄。java -jar %JETTY_HOME%/start.jar --add-module=http,server,deploy
驗證Jetty。
運行以下命令,部署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運行以下命令,啟動Jetty。啟動後請勿關閉命令提示字元視窗。
說明Jetty預設監聽8080連接埠,您可以通過
netstat -ano | findstr :8080命令查看連接埠是否被佔用,若連接埠被佔用,您可以在啟動Jetty時指定其他連接埠以解決連接埠衝突問題,例如:java -jar %JETTY_HOME%/start.jar jetty.http.port=8081。java -jar %JETTY_HOME%/start.jar在本地瀏覽器地址欄中,輸入
http://公網IP:8080,成功查看到測試頁面,則說明環境配置成功。說明若您修改過Jetty的連接埠,請將8080替換為修改後的連接埠,並檢查安全性群組,確認允許存取該連接埠。具體操作,請參見添加安全性群組規則。
若您上傳了本地測試專案WAR包,可訪問
http://公網IP:8080/包名測試。

後續操作
部署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等,並設定了屏蔽外界訪問的規則,導致無法遠端存取伺服器。您可以通過以下方案嘗試解決:
若您的執行個體為Linux系統,需要您關閉執行個體的系統防火牆、SELinux。具體操作,請參見開啟或關閉Linux系統防火牆、開啟或關閉SELinux。
若您的執行個體為Windows系統,需要您關閉執行個體的系統防火牆。具體操作,請參見管理Windows系統防火牆。
可能原因二:
在啟動Jetty時,您修改過Jetty的監聽連接埠。您可以通過以下方案嘗試解決:
將
http://公網IP:8080中的8080替換為修改後的連接埠,並檢查安全性群組,確認允許存取該連接埠。具體操作,請參見添加安全性群組規則。
