如何在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 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內的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 tomcat
sudo systemctl stop tomcat
sudo 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虛擬主機管理器可從以下位置獲得: http://<your_domain_or_IP_address>:8080/host-manager/html
。
結論#
我們已經向您展示了如何在CentOS 8上安裝Tomcat 9.0以及如何訪問Tomcat管理界面。
有關Apache Tomcat的更多信息,請訪問官方文檔頁面。
如果您遇到問題或有反饋,請在下面發表評論。
java Tomcat Ubuntu