上手Tomcat
1.Ubuntu 18.04 下載/安裝Tomcat
以下內容參考連結
-
安裝JDK
sudo apt-get update sudo apt-get install default-jdk
-
建立Tomcat使用者
從安全形度考慮,Tomcat應當由非Root使用者執行。所以接下來我們要建立一個使用者組和使用者來執行Tomcat
新增使用者組:
sudo groupadd tomcat
新增使用者:
sudo useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat
-
安裝Tomcat
安裝Tomcat最好的方式是下載 Binary Release 並手動配置。
到 Tomcat 9 Download Page 下載最新版本,並解壓到 /opt/tomcat 資料夾內 -
更新許可權
# 進入 tomcat 資料夾內 cd /opt/tomcat # 將 /opt/tomcat 資料夾及資料夾內所有內容的擁有者設定為 tomcat組 sudo chgrp -R tomcat /opt/tomcat # conf資料夾內的內容賦予讀取許可權 sudo chmod -R g+r conf # conf資料夾自身賦予讀取許可權 # 將 webapps work temp logs 的擁有者設定為 tomcat組 sudo chown -R tomcat webapps/ work/ temp/ logs/
-
建立一個服務檔案
我們要把Tomcat以服務(守護程式)的方式來執行,所以需要建立一個 systemd 服務檔案。
Tomcat 需要知道 JAVA 的安裝目錄,該目錄儲存在系統環境變數 JAVA_HOME 中,執行下面的命令來查詢安裝路徑:
sudo update-java-alternatives -l
顯示出兩個地址:
java-1.11.0-openjdk-amd64 1101 /usr/lib/jvm/java-1.11.0-openjdk-amd64 java-1.8.0-openjdk-amd64 1081 /usr/lib/jvm/java-1.8.0-openjdk-amd64
我使用 jdk8 的安裝路徑。
編輯 tomcat.service 檔案
sudo gedit /etc/systemd/system/tomcat.service
貼上如下內容:
[Unit] Description=Apache Tomcat Web Application Container After=network.target [Service] Type=forking Environment=JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64 Environment=CATALINA_PID=/opt/tomcat/temp/tomcat.pid Environment=CATALINA_HOME=/opt/tomcat Environment=CATALINA_BASE=/opt/tomcat Environment=`CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC` Environment=`JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom` ExecStart=/opt/tomcat/bin/startup.sh ExecStop=/opt/tomcat/bin/shutdown.sh User=tomcat Group=tomcat UMask=0007 RestartSec=10 Restart=always [Install] WantedBy=multi-user.target
儲存並退出。
過載修改過的配置檔案
sudo systemctl daemon-reload
開啟 Tomcat 服務
sudo systemctl start tomcat
檢視 Tomcat 服務的狀態
sudo systemctl status tomcat
-
開啟防火牆並測試 Tomcat
sudo ufw allow 8080
在瀏覽器中輸入地址:http://127.0.0.1:8080/ ,預設會開啟 Tomcat 的啟動頁面。另外,如果我們點選 Manage App這個按鈕,會顯示拒絕訪問。下文我們將會介紹如何來配置許可權。
最後,確認可以訪問 Tomcat 後,開啟服務。
sudo systemctl enable tomcat
-
配置 Tomcat 網路管理介面
為了管理Tomcat的 web app ,我們必須要開啟一個賬戶來登入 Tomcat server。
sudo gedit /opt/tomcat/conf/tomcat-users.xml
在 tomcat-users 節點下新增一個 user 節點,如下:
<tomcat-users xmlns="http://tomcat.apache.org/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd" version="1.0"> <user username="admin" password="admin" roles="manager-gui,admin-gui"/> </tomcat-users>
預設情況下,較新版本的 Tomcat只允許來自伺服器本身的連線訪問 Manager & Host Manager。如果需要通過遠端更改,可以修改 context.xml 檔案。
# Manager app sudo gedit /opt/tomcat/webapps/manager/META-INF/context.xml # Host Manader app sudo gedit /opt/tomcat/webapps/host-manager/META-INF/context.xml
註釋限制訪問的 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" /--> <Manager sessionAttributeValueClassNameFilter="java.lang.(?:Boolean|Integer|Long|Number|String)|org.apache.catalina.filters.CsrfPreventionFilter$LruCache(?:$1)?|java.util.(?:Linked)?HashMap"/> </Context>
重啟 Tomcat 服務來應用修改
sudo systemctl restart tomcat