本文最先發布在: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/html
URL 來創建,刪除和其他對虛擬主機的管理。這個“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