在Ubuntu上使用Jetty部署War包

MartinDai發表於2024-06-10

前提

有一臺裝有Ubuntu系統的伺服器和一個可以部署的War包

安裝Java

建立資料夾

sudo mkdir /usr/java
cd /usr/java

進入https://www.oracle.com/technetwork/java/javase/downloads/index.html找到需要安裝的JDK版本下載地址

下載JDK

sudo wget --no-check-certificate -c --header "Cookie: oraclelicense=accept-securebackup-cookie" https://download.oracle.com/otn-pub/java/jdk/13+33/5b8a42f3905b406298b72d750b6919f6/jdk-13_linux-x64_bin.tar.gz

有些版本不支援這種方式下載,所以只能手動下載後再上傳到伺服器

解壓JDK

sudo tar -xvzf jdk-13_linux-x64_bin.tar.gz

安裝Java軟鏈

sudo update-alternatives --install "/usr/bin/java" "java" "/usr/java/jdk-13/bin/java" 0
sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/java/jdk-13/bin/javac" 0
sudo update-alternatives --set java /usr/java/jdk-13/bin/java
sudo update-alternatives --set javac /usr/java/jdk-13/bin/javac

其中jdk-13是上一步解壓後的資料夾名,根據實際版本做替換

驗證Java軟鏈

update-alternatives --list java
update-alternatives --list javac

應該可以輸出配置的路徑

修改環境變數

sudo nano /etc/environment

在PATH變數後追加

:/usr/java/jdk-13/bin

新增變數

JAVA_HOME="/usr/java/jdk-13"

Control+X儲存退出,編輯後檔案類似於如下:

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/java/jdk-13/bin"
JAVA_HOME="/usr/java/jdk-13"

驗證Java版本

重新登入終端,執行

java -version

安裝Jetty

進入https://www.eclipse.org/jetty/download.html 複製下載地址

建立資料夾

sudo mkdir /usr/jetty
cd /usr/jetty

下載Jetty

sudo wget https://repo1.maven.org/maven2/org/eclipse/jetty/jetty-distribution/9.4.21.v20190926/jetty-distribution-9.4.21.v20190926.tar.gz

解壓Jetty

sudo tar -xvzf jetty-distribution-9.4.21.v20190926.tar.gz

上傳War包

如果有許可權可以直接使用rz命令上傳
進入wabapps資料夾

cd /usr/jetty/jetty-distribution-9.4.21.v20190926/webapps/
rz

當然也可以使用如下指令將本地檔案複製到伺服器臨時目錄

scp ~/project.war username@hostname:/tmp  

其中username為使用者名稱,hostname為伺服器外網地址

然後複製到webapps目錄

sudo mv /tmp/project.war /usr/jetty/jetty-distribution-9.4.21.v20190926/webapps/

啟動Jetty

編輯start.ini

sudo vi /usr/jetty/jetty-distribution-9.4.21.v20190926/start.ini

找到jetty.http.host和jetty.http.port,去掉前面的#號,如有需要可修改繫結埠

## Connector host/address to bind to
# jetty.http.host=0.0.0.0

## Connector port to listen on
# jetty.http.port=8080

啟動Jetty

sudo /usr/jetty/jetty-distribution-9.4.21.v20190926/bin/jetty.sh start nohup

停止Jetty

sudo /usr/jetty/jetty-distribution-9.4.21.v20190926/bin/jetty.sh stop

如果只有一個應用想要把根路徑繫結到該應用,則可在webapps目錄下新增應用同名的xml,如當前有project.war,則可新增project.xml檔案,內容為

<?xml version="1.0"  encoding="ISO-8859-1"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd">
<Configure class="org.eclipse.jetty.webapp.WebAppContext">
    <Set name="contextPath">/</Set>
    <Set name="war"><SystemProperty name="jetty.home" default="."/>/webapps/project.war</Set>
</Configure>

完成

參考連結
https://www.javahelps.com/2019/04/install-latest-oracle-jdk-on-linux.html
https://www.cnblogs.com/freeweb/p/5942972.html

相關文章