JavaWeb-BeginTomcat

ArthurRen發表於2019-02-09

上手Tomcat

1.Ubuntu 18.04 下載/安裝Tomcat

以下內容參考連結

  1. 安裝JDK

    sudo apt-get update
    sudo apt-get install default-jdk
  2. 建立Tomcat使用者

    從安全形度考慮,Tomcat應當由非Root使用者執行。所以接下來我們要建立一個使用者組和使用者來執行Tomcat

    新增使用者組:

    sudo groupadd tomcat

    新增使用者:

    sudo useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat
  3. 安裝Tomcat

    安裝Tomcat最好的方式是下載 Binary Release 並手動配置。
    Tomcat 9 Download Page 下載最新版本,並解壓到 /opt/tomcat 資料夾內

  4. 更新許可權

    # 進入 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/
  5. 建立一個服務檔案

    我們要把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
  6. 開啟防火牆並測試 Tomcat

    sudo ufw allow 8080

    在瀏覽器中輸入地址:http://127.0.0.1:8080/ ,預設會開啟 Tomcat 的啟動頁面。另外,如果我們點選 Manage App這個按鈕,會顯示拒絕訪問。下文我們將會介紹如何來配置許可權。

    最後,確認可以訪問 Tomcat 後,開啟服務。

    sudo systemctl enable tomcat
  7. 配置 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

結束!