如何在 Ubuntu 20.04 上安裝 Tomcat 9

本文最先發布在:https://www.itcoder.tech/posts/how-to-install-tomcat-9-on-ubuntu-20-04/

這篇指南描述如何在 Ubuntu 20.04 上安裝和配置 Tomcat 9 。

Apache Tomcat是一個開源的 Web 服務器和 Java servlet 容器。它是世界上最流行的選擇,用來構建基於 Java 的網站和應用。Tomcat 是一個輕量級,易於使用,並且有一個強壯的擴展生態系統。

一、安裝 Java

Tomcat 9 要求在系統上安裝 Java SE 8 或者更新版本。我們將會安裝 OpenJDK 11,Java 平臺的開源實現。

以 root 或者其他 sudo 權限用戶身份運行下面的命令來更新軟件包索引,並且安裝 OpenJDK 11 JDK 軟件包:

sudo apt update
sudo apt install openjdk-11-jdk

一旦安裝完成,通過檢查 Java 版本來驗證它:

java -version

輸出應該像下面這樣:

openjdk version "11.0.7" 2020-04-14
OpenJDK Runtime Environment (build 11.0.7+10-post-Ubuntu-3ubuntu1)
OpenJDK 64-Bit Server VM (build 11.0.7+10-post-Ubuntu-3ubuntu1, mixed mode, sharing)

二、創建一個系統用戶

以 root 用戶運行 Tomcat 有一個安全風險。我們將會創建一個系統用戶和用戶組,其主目錄爲/opt/tomcat。我們將會使用這個用戶來運行 Tomcat 服務。想要這麼做,輸入下面的命令:

sudo useradd -m -U -d /opt/tomcat -s /bin/false tomcat

三、下載 Tomcat

Tomcat 二進制發行版在 Tomcat 下載頁面可以下載

就在寫作的時候,最新的 Tomcat 版本是 9.0.35。在繼續下一步之前,檢查 Tomcat 9 下載頁面,看看是否有更新的版本可以下載。

使用wget來下載 Tomcat zip 文件到/tmp目錄:

VERSION=9.0.35
wget https://www-eu.apache.org/dist/tomcat/tomcat-9/v${VERSION}/bin/apache-tomcat-${VERSION}.tar.gz -P /tmp

一旦下載完成,解壓 tar 文件到/opt/tomcat目錄:

sudo tar -xf /tmp/apache-tomcat-${VERSION}.tar.gz -C /opt/tomcat/

Tomcat 會定期更新 安全補丁和新功能。想要更好地升級版本和更新,我們將會創建一個符號鏈接,稱爲latest,指向 Tomcat 安裝目錄。

sudo ln -s /opt/tomcat/apache-tomcat-${VERSION} /opt/tomcat/latest

稍後,當升級 Tomcat 時,解壓新的版本,並且修改符號鏈接,指向它。

前面創建的系統用戶必須對 tomcat 安裝目錄有訪問權限。修改目錄歸屬到用戶和用戶組 tomcat:

sudo chown -R tomcat: /opt/tomcat

在 Tomcat bin目錄下的 shell 腳本必須可執行:

sudo sh -c 'chmod +x /opt/tomcat/latest/bin/*.sh'

這些腳本將會被用來啓動,停止,以及其他對 Tomcat 的管理操作。

四、創建 SystemD 單元文件

與使用 shell 腳本來啓動和停止 Tomcat 服務器相比,我們將會將它作爲服務來運行。

打開你的文本編輯器,並且在/etc/systemd/system/目錄下創建一個 tomcat.service 單元文件。

sudo nano /etc/systemd/system/tomcat.service

粘貼下面的配置文件:

[Unit]
Description=Tomcat 9 servlet container
After=network.target

[Service]
Type=forking

User=tomcat
Group=tomcat

Environment="JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64"
Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom -Djava.awt.headless=true"

Environment="CATALINA_BASE=/opt/tomcat/latest"
Environment="CATALINA_HOME=/opt/tomcat/latest"
Environment="CATALINA_PID=/opt/tomcat/latest/temp/tomcat.pid"
Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC"

ExecStart=/opt/tomcat/latest/bin/startup.sh
ExecStop=/opt/tomcat/latest/bin/shutdown.sh

[Install]
WantedBy=multi-user.target
如果你的 Java 安裝路徑不一樣,請修改`JAVA_HOME`環境變量。

保存並且關閉文件,通知 systemd 一個新的單元文件存在:

sudo systemctl daemon-reload

啓用並且啓動 Tomcat 服務:

sudo systemctl enable --now tomcat

檢查服務狀態:

sudo systemctl status tomcat

輸出應該顯示 Tomcat 服務器已經啓用,並且運行了:

● tomcat.service - Tomcat 9 servlet container
     Loaded: loaded (/etc/systemd/system/tomcat.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2020-05-25 17:58:37 UTC; 4s ago
    Process: 5342 ExecStart=/opt/tomcat/latest/bin/startup.sh (code=exited, status=0/SUCCESS)
   Main PID: 5362 (java)
...

你可以 像其他 systemd 服務一樣 啓動,停止和重啓 Tomcat:

sudo systemctl start tomcat
sudo systemctl stop tomcat
sudo systemctl restart tomcat

五、配置防火牆

如果你的服務器被防火牆保護,並且你想從外面訪問你的Tomcat,你需要打開8080端口。

使用下面的命令打開必要的端口:

sudo ufw allow 8080/tcp
通常,當在生產環境運行 Tomcat 時,你應該是使用一個負載均衡,或者反向代理服務器。這是僅僅允許從你的本地網絡訪問`8080`端口的最佳實踐。

六、配置 Tomcat 網頁管理界面

正在此時,你應該通過一個瀏覽器在8080端口訪問 Tomcat。網頁管理界面不能訪問,因爲我們還沒有創建一個用戶。

Tomcat 用戶和角色被定義在 tomcat-users.xml。這個文件是一個帶有註釋和示例的模板,展示如何創建一個用戶和角色。

在這個例子中,我們將會創建一個用戶“admin-gui” 和 “manager-gui” 角色。這個 “admin-gui”角色允許用戶訪問/host-manager/htmlURL 來創建,刪除和其他對虛擬主機的管理。這個“manager-gui”角色允許用戶部署和解除部署 web 應用,而不用通過/host-manager/html界面重啓整個容器。

打開tomcat-users.xml文件,創建一個新用戶,像下面這樣:

騰訊雲學生服務器_學生機_雲服務器優惠套餐-雲+校園 - 騰訊雲

sudo nano /opt/tomcat/latest/conf/tomcat-users.xml
<tomcat-users>
<!--
    Comments
-->
   <role rolename="admin-gui"/>
   <role rolename="manager-gui"/>
   <user username="admin" password="admin_password" roles="admin-gui,manager-gui"/>
</tomcat-users>

確保你將用戶名和密碼修改得更加安全。

默認情況下,Tomcat 網頁管理界面被配置僅僅從 localhost 訪問 Manager 和 Host Manager 應用。想要從遠程 IP 訪問網頁界面,你需要移除這些限制。

這可能會有一些安全隱患,我們不推薦在生產系統中這麼做。

想要從任何地方都能訪問網頁界面,打開配置的兩個文件,註釋或者移除註釋的部分。

對於 Manager:

sudo nano /opt/tomcat/latest/webapps/manager/META-INF/context.xml

對於 Host Manager:

sudo nano /opt/tomcat/latest/webapps/host-manager/META-INF/context.xml
<Context antiResourceLocking="false" privileged="true" >
<!--
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
-->
</Context>

如果你只想從指定的 IP 訪問網頁界面,不要註釋這一段,而是將你的公網 IP 地址加進去。

假如說你的公網 IP 是41.41.41.41,並且你想允許從那個 IP 訪問網頁界面:

<Context antiResourceLocking="false" privileged="true" >
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|41.41.41.41" />
</Context>

被允許的 IP 列表以|來分隔。你可以添加一個簡單的 IP 地址,或者使用正則表達式。

一旦完成,重啓 Tomcat 服務,使應用生效:

sudo systemctl restart tomcat

七、測試 Tomcat 安裝

打開你的瀏覽器,輸入:http://<your_domain_or_IP_address>:8080

假設安裝成功,一個類似下面的頁面將會出現:

Tomcat 網頁應用管理在:

http://<your_domain_or_IP_address>:8080/manager/html

Tomcat 虛擬主機管理在:

 http://<your_domain_or_IP_address>:8080/host-manager/html

八、總結

我們已經向你展示如何在 Ubuntu 20.04 上安裝 Tomcat 9.0,並且如何訪問 Tomcat 管理界面。

想要獲得更多關於 Apache Tomcat 的信息,瀏覽官方文檔頁面




如果你有任何疑問,請通過以下方式聯繫我們:

微信:

微信羣: 加上面的微信,備註微信羣

QQ: 3217680847

QQ 羣: 82695646雪夢科技交流羣

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章