Java Web是一種使用Java語言開發(fā)動態(tài)Web應用程序的技術棧,它利用Java平臺的強大功能,結合各種技術和框架,使得開發(fā)者能夠創(chuàng)建復雜、高性能、可跨平臺部署的Web應用。而Jetty是一個開源的Servlet容器,主要用于運行Java Web應用。相較于Tomcat,Jetty更輕量級,更適合輕量級應用、高并發(fā)場景或分布式環(huán)境。本文介紹如何在ECS實例中通過Jetty部署Java Web環(huán)境。
前提條件
部署Java Web環(huán)境時,已有ECS實例必須滿足以下條件:
實例已分配固定公網IP地址或綁定彈性公網IP(EIP)。具體操作,請參見彈性公網IP。
實例安全組的入方向規(guī)則需放行遠程連接、Jetty服務相關的端口,例如22、3389、8080端口。具體操作,請參見添加安全組規(guī)則。
實例已部署Java環(huán)境。具體操作,請參見部署Java環(huán)境。
操作方案
您可以根據(jù)ECS實例的系統(tǒng),選擇合適的方案。
Linux
本文以安裝12.0.16
版本的Jetty為例。若您安裝其他版本,或使用其他目錄,您需要根據(jù)實際版本及目錄替換命令中的版本及路徑。
登錄Linux服務器。具體操作,請參見使用Workbench工具以SSH協(xié)議登錄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/
運行以下命令,創(chuàng)建
jetty-base
目錄。sudo mkdir /usr/local/jetty-base
設置環(huán)境變量。
運行以下命令,編輯
~/.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
目錄,命令執(zhí)行完畢后,會創(chuàng)建$JETTY_BASE/start.d/
目錄及其他包含服務器配置信息的目錄。說明您可以使用
java -jar $JETTY_HOME/start.jar --list-modules=*
命令來查看有哪些模塊可用。若您使用Jetty 9,請?zhí)鎿Q
--add-module
為--add-to-start
。
sudo java -jar $JETTY_HOME/start.jar --add-module=server,http,deploy
驗證環(huán)境配置。
重要以下命令需在
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默認監(jiān)聽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
,成功查看到測試頁面,則說明環(huán)境配置成功。說明若您修改過Jetty的端口,請將8080替換為修改后的端口,并檢查安全組,確認放行該端口。具體操作,請參見添加安全組規(guī)則。
若您上傳了本地測試項目WAR包,可訪問
http://公網IP:8080/包名
測試。
Windows
此教程僅適用于安裝Jetty 12、Jetty 11、Jetty 10。
本文以安裝12.0.16
版本的Jetty為例。若您安裝其他版本,或使用其他目錄,您需要根據(jù)實際版本及目錄替換命令中的版本及路徑。
登錄Linux服務器。具體操作,請參見使用Workbench工具以RDP協(xié)議登錄Windows實例。
下載Jetty。
不同版本的Jetty支持的JDK版本不同,請您根據(jù)部署Java環(huán)境時安裝的JDK版本,閱讀Jetty官網中的說明,選擇合適版本的Jetty,并下載對應的安裝包。
解壓Jetty壓縮包。
將下載的壓縮包解壓到您希望安裝Jetty的位置。本文以
C:\download
為例。重要需要將Jetty解壓至不包含空格的路徑。
設置
JETTY_HOME
環(huán)境變量。右鍵單擊此電腦,選擇屬性。
在關于頁滾動至最下方,單擊高級系統(tǒng)設置。
單擊環(huán)境變量。
在系統(tǒng)變量區(qū)域,單擊新建,創(chuàng)建系統(tǒng)變量,完成后單擊確定。變量名為
JETTY_HOME
,變量值為Jetty安裝目錄,例如C:\download\jetty-home-12.0.16
。單擊確定,保存環(huán)境變量配置。
創(chuàng)建
jetty-base
文件夾。本文以在C:\download
下創(chuàng)建為例。初始化
jetty-base
文件夾。進入
jetty-base
文件夾,在地址欄輸入cmd
并按Enter
鍵,打開命令提示符。在命令提示符中運行以下命令,初始化
jetty-base
文件夾。命令執(zhí)行完畢后,會創(chuàng)建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默認監(jiān)聽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
,成功查看到測試頁面,則說明環(huán)境配置成功。說明若您修改過Jetty的端口,請將8080替換為修改后的端口,并檢查安全組,確認放行該端口。具體操作,請參見添加安全組規(guī)則。
若您上傳了本地測試項目WAR包,可訪問
http://公網IP:8080/包名
測試。
后續(xù)操作
部署Java Web環(huán)境后,您可以考慮在服務器上配置網站,為ECS實例的公網IP地址綁定域名等。具體操作,請參見搭建網站。
您可以選擇合適的開發(fā)工具進行Web開發(fā),如果您的應用需要使用數(shù)據(jù)庫存儲應用數(shù)據(jù),可以在Web項目的相關配置文件(例如Properties文件)中添加數(shù)據(jù)庫配置,連接至數(shù)據(jù)庫。開發(fā)完成后,您可以將Java Web應用程序部署到Jetty中(例如部署到
$JETTY_BASE/webapps
目錄),部署和運行后,通過Web訪問您的應用。關于Jetty的更多信息,您可以訪問Jetty官網獲取。說明如果您使用的是其他版本的Jetty,只需將URL中的版本號替換為相應版本即可。
若您需要上傳本地文件到ECS,具體操作,請參見上傳或下載文件(Linux)。
若您需要使用數(shù)據(jù)庫存儲和管理Web應用中的數(shù)據(jù),可以使用云數(shù)據(jù)庫RDS MySQL,或在實例中部署MySQL數(shù)據(jù)庫,具體操作,請參見部署數(shù)據(jù)庫。
您可以考慮使用負載均衡SLB提高網站的可用性和性能。詳細信息,請參見快速入門。
您可以直接使用ECS的構建與部署功能,關聯(lián)代碼倉庫并進行構建部署,詳情請參見部署應用。
您也可以考慮通過云效建立CI/CD流程來持續(xù)集成,提高效率。詳細信息,請參見什么是云效。
常見問題
部署完成后,本地瀏覽器無法訪問http://公網IP:8080
參考本文部署Jetty后,驗證時無法通過瀏覽器訪問http://公網IP:8080
,可能是以下原因導致:
可能原因一:
服務器開啟了系統(tǒng)防火墻或SELinux等,并設置了屏蔽外界訪問的規(guī)則,導致無法遠程訪問服務器。您可以通過以下方案嘗試解決:
若您的實例為Linux系統(tǒng),需要您關閉實例的系統(tǒng)防火墻、SELinux。具體操作,請參見開啟或關閉Linux系統(tǒng)防火墻、開啟或關閉SELinux。
若您的實例為Windows系統(tǒng),需要您關閉實例的系統(tǒng)防火墻。具體操作,請參見管理Windows系統(tǒng)防火墻。
可能原因二:
在啟動Jetty時,您修改過Jetty的監(jiān)聽端口。您可以通過以下方案嘗試解決:
將
http://公網IP:8080
中的8080替換為修改后的端口,并檢查安全組,確認放行該端口。具體操作,請參見添加安全組規(guī)則。