如何在Ubuntu 20.04上安裝Tomcat 9

本教程描述了如何在Ubuntu 20.04上安裝和配置Tomcat 9。

Apache Tomcat是一個開源Web服務器和Java Servlet容器。 它是構建基於Java的網站和應用程序的最受歡迎的選擇之一。 Tomcat輕巧,易於使用,並且具有強大的附加組件生態系統。

安裝Java#

Tomcat 9要求在系統上安裝Java SE 8或更高版本。 我們將安裝OpenJDK 11(Java平台的開源實現)。

以root或具有sudo特權或root的用戶身份運行以下命令,以更新軟件包索引並安裝OpenJDK 11 JDK軟件包:

sudo apt updatesudo 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.35wget 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內的shell腳本 bin 目錄必須是可執行的:

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

這些腳本用於啟動,停止和管理Tomcat實例。

創建SystemD單元文件#

無需使用shell腳本來啟動和停止Tomcat服務器,而是將其設置為作為服務運行。

打開文本編輯器並創建一個 tomcat.service 單位文件 /etc/systemd/system/ 目錄:

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

粘貼以下配置:

/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_HOME 如果Java安裝路徑不同,則為變量。

保存並關閉文件,並通知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 tomcatsudo systemctl stop tomcatsudo systemctl restart tomcat

配置防火牆號

如果您的服務器受防火牆保護,並且您想從本地網絡外部訪問Tomcat,則需要打開端口 8080

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

sudo ufw allow 8080/tcp

通常,在生產環境中運行Tomcat時,應使用負載平衡器或反向代理。 允許訪問端口是一種最佳做法 8080 僅來自您的內部網絡。

配置Tomcat Web管理界面

此時,您應該能夠使用端口上的Web瀏覽器訪問Tomcat 8080。 由於我們尚未創建用戶,因此無法訪問Web管理界面。

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

/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 Web管理界面配置為僅允許從本地主機訪問Manager和Host Manager應用程序。 要從遠程IP訪問Web界面,您將必須刪除這些限制。 這可能會帶來各種安全隱患,因此不建議在生產系統中使用。

要從任何地方訪問Web界面,請打開以下兩個文件並注釋或刪除以黃色突出顯示的行。

對於Manager應用程序:

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

對於主機管理器應用程序:

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

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訪問Web界面,而不是注釋這些塊,則將您的公共IP添加到列表中。

假設您的公共IP是 41.41.41.41 並且您只允許從該IP訪問:

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|41.41.41.41" />
</Context>

允許的IP地址列表是用豎線分隔的列表 |。 您可以添加單個IP地址或使用正則表達式。

完成後,重新啟動Tomcat服務以使更改生效:

sudo systemctl restart tomcat

測試Tomcat安裝#

打開瀏覽器並輸入: http://<your_domain_or_IP_address>:8080

假設安裝成功,將顯示類似於以下內容的屏幕:

Tomcat Web應用程序管理器可從以下位置獲得: http://<your_domain_or_IP_address>:8080/manager/html

Tomcat Web應用程序管理器

Tomcat虛擬主機管理器可從以下位置獲得: http://<your_domain_or_IP_address>:8080/host-manager/html

Tomcat虛擬主機管理器

結論#

我們已經向您展示了如何在CentOS 8上安裝Tomcat 9.0以及如何訪問Tomcat管理界面。

有關Apache Tomcat的更多信息,請訪問官方文檔頁面。

如果您遇到問題或有反饋,請在下面發表評論。

java Tomcat Ubuntu

Sidebar