官網下載頁面

在Core選擇tar.gz下載點(複製連結)

下載檔案

curl -O https://downloads.apache.org/tomcat/tomcat-9/v9.0.39/bin/apache-tomcat-9.0.39.tar.gz

解壓縮

tar zxvf apache-tomcat-9.0.39.tar.gz

將檔案移動並更改名稱

mv apache-tomcat-9.0.39 /usr/libexec/tomcat9

新增使用者並設定相關權限

useradd -M -d /usr/libexec/tomcat9 tomcat
chown -R tomcat. /usr/libexec/tomcat9

建立設定檔,讓tomcat可使用指令啟動服務

vi /usr/lib/systemd/system/tomcat9.service
[Unit]
Description=Apache Tomcat 9
After=network.target

[Service]
Type=oneshot
ExecStart=/usr/libexec/tomcat9/bin/startup.sh
ExecStop=/usr/libexec/tomcat9/bin/shutdown.sh
RemainAfterExit=yes
User=tomcat
Group=tomcat

[Install]
WantedBy=multi-user.target

因我的JDK是使用SDKMAN安裝的,所以在使用時,因tomcat官網的Script檔案設定會抓不到JRE,所以必須自己指定路徑

錯誤訊息

修改檔案(請依照安裝路徑再稍微修改指令)

vi /usr/libexec/tomcat9/bin/catalina.sh
在這裡新增這兩行(vim搜尋可用 / + 要搜尋的字)
export JAVA_HOME=/usr/local/sdkman/candidates/java/8.0.265-zulu
export JRE_HOME=/usr/local/sdkman/candidates/java/8.0.265-zulu/jre

改好就可以用指令啟動服務

systemctl start tomcat9

設定開機啟動

systemctl enable tomcat9

=======更新=======

啟動後我遇到了無法訪問到tomcat的頁面,後來又想到是環境變數的問題…除了上述文件要改之外還需要修改另一個檔案

vi /usr/libexec/tomcat9/bin/setclasspath.sh
export JAVA_HOME=/usr/local/sdkman/candidates/java/8.0.265-zulu
export JRE_HOME=/usr/local/sdkman/candidates/java/8.0.265-zulu/jre

變更權限

chown -R tomcat:tomcat /usr/local/sdkman

重啟服務

systemctl restart tomcat9

開啟防火牆

firewall-cmd --zone=public --add-port=8080/tcp --permanent

重新載入防火牆規則

firewall-cmd --reload