1. 程式人生 > 其它 >tomcat(1)- tomcat服務介紹與安裝

tomcat(1)- tomcat服務介紹與安裝


目錄

1. Tomcat介紹

  • JVM簡介

    JAVA應用都是執行在java虛擬機器上的,java虛擬機器簡稱為JVM(iava Virtual Machine)。

    所謂虛擬機器是指:通過軟體模擬具有完整硬體系統的功能執行在一個完全隔離環境中的計算機系統。

  • JVM虛擬機器的作用

    C語言不支援跨平臺,因為C語言要想在windows、linux、Mac上執行,需要進行分別編譯。那麼在linux上有非常多的優秀軟體如果需要在Windows上使用則需要重新進行編譯。移植性很差。

    而JAVA則不同,JAVA是可以跨平臺的,只需要將原始碼進行一次編譯,能夠在多處執行。

    那JAVA是怎麼做到?它只需要在Windows、Linux系統上執行一個jvm,這樣我們能將java編譯好的war包在Windows和Linux平臺執行起來,無需我們重複編譯。

  • JRE和JDK

    jre是java的執行環境,會包含jvm。

    jdk是java的開發環境,會包含java的執行環境jre。

    單純的執行java程式碼只需要jre足夠,但如果需要提供開發環境以及執行環境則需要 jdk。

  • Tomcat介紹

    Tomcat與nginx,apache類似,也是一個Web伺服器軟體。只不過Tomcat是基於JAVA開發的WEB服務,主要用於解析Java程式碼,類似於php-fpm用於解析php程式碼。

    Nginx僅支援靜態資源解析,而Tomcat支援解析java開發的web應用,還支援解析靜態資源(效率不高)。

    Nginx適合做前端負載均衡,而Tomcat適合做後端應用服務處理。

    通常情況下,企業會使用Nginx+tomcat結合,由Nginx處理靜態資源,Tomcat處理動態資源。

2. Tomcat安裝

安裝tomcat軟體之前需要安裝java環境JDK。

2.1 JDK安裝

JDK安裝有兩種方式,yum安裝和二進位制安裝。

  • yum安裝方式:

    #直接通過Centos的base源進行安裝,預設安裝的版本時1.8:
    [root@xuzhichao ~]# yum install java -y
    
    [root@xuzhichao ~]# rpm -q java-1.8.0-openjdk
    java-1.8.0-openjdk-1.8.0.242.b08-1.el7.x86_64
    
  • 二進位制方式安裝

    JDK官方下載地址為https://www.oracle.com/java/technologies/javase-downloads.html

    [root@es-node1	~]#	mkdir /soft/
    [root@es-node1	~]#	tar	xf jdk-8u60-linux-x64.tar.gz -C /app/
    [root@es-node1	~]#	ln -s /soft/jdk1.8.0_60 /soft/jdk
    
    #設定環境變數
    [root@es-node1	~]#	cat	>> /etc/profile	<<'EOF'
    export JAVA_HOME=/soft/jdk
    export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
    export CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
    EOF
    

2.2 Tomcat安裝

tomcat也有兩種安裝方式,yum安裝和二進位制安裝,一般使用二進位制方式安裝,因為二級制方式可以使用較新的tomcat版本,而且不需要進行編譯,安裝也較為簡單。

  1. tomcat的安裝包下載:

    下載地址為:https://tomcat.apache.org/download-10.cgi

  2. 解壓並建立軟連線:

    [root@tomcat01 ~]# tar -xf apache-tomcat-10.0.7.tar.gz -C /apps/
    
    [root@tomcat01 ~]# cd /apps/
    [root@tomcat01 apps]# ln -sv apache-tomcat-10.0.7/ tomcat
    ‘tomcat’ -> ‘apache-tomcat-10.0.7/’
    
    [root@tomcat01 apps]# ll
    total 0
    drwxr-xr-x 9 root  root  220 Jul  5 11:34 apache-tomcat-10.0.7
    lrwxrwxrwx 1 root  root   21 Jul  5 11:35 tomcat -> apache-tomcat-10.0.7/
    
  3. 啟動和停止tomcat服務:

    #啟動tomcat服務:
    [root@tomcat01 apps]# /apps//tomcat/bin/startup.sh 
    Using CATALINA_BASE:   /apps/tomcat
    Using CATALINA_HOME:   /apps/tomcat
    Using CATALINA_TMPDIR: /apps/tomcat/temp
    Using JRE_HOME:        /usr
    Using CLASSPATH:       /apps/tomcat/bin/bootstrap.jar:/apps/tomcat/bin/tomcat-juli.jar
    Using CATALINA_OPTS:   
    Tomcat started.
    
    #檢視tomcat監聽埠。tomcat預設監聽在TCP/8080埠:
    [root@tomcat01 apps]# ss -ntlp
    State      Recv-Q Send-Q  Local Address:Port                 Peer Address:Port              
    LISTEN     0      100              [::]:8080                         [::]:*                   users:(("java",pid=88545,fd=53))
    LISTEN     0      1      [::ffff:127.0.0.1]:8005                         [::]:*                   users:(("java",pid=88545,fd=62))
    
    #停止tomcat服務:
    [root@tomcat01 apps]# /apps/tomcat/bin/shutdown.sh 
    Using CATALINA_BASE:   /apps/tomcat
    Using CATALINA_HOME:   /apps/tomcat
    Using CATALINA_TMPDIR: /apps/tomcat/temp
    Using JRE_HOME:        /usr
    Using CLASSPATH:       /apps/tomcat/bin/bootstrap.jar:/apps/tomcat/bin/tomcat-juli.jar
    Using CATALINA_OPTS:
    
  4. 使用systemd控制tomcat服務

    #新增tomcat的unit指令碼
    [root@tomcat01 apps]# cat /usr/lib/systemd/system/tomcat.service
    [Unit]
    Description=Apache Tomcat Web Application Container
    After=network.target remote-fs.target nss-lookup.target
    [Service]
    Type=forking
    Environment=CATALINA_HOME=/apps/tomcat
    Environment=CATALINA_BASE=/apps/tomcat
    ExecStart=/apps/tomcat/bin/startup.sh
    ExecStop=/apps/tomcat/bin/shutdown.sh
    [Install]
    WantedBy=multi-user.target
    
    #過載指令碼:
    [root@tomcat01 apps]# systemctl daemon-reload
    
    #啟動和停止tomcat服務:
    [root@tomcat01 apps]# systemctl start tomcat.service 
    [root@tomcat01 apps]# systemctl stop tomcat.service 
    
  5. 客戶端訪問tomcat的預設頁面:

3. Tomcat開啟預設的管理頁面

當我們訪問Tomcat的預設頁面時,點選主頁上的server status,manager app,host manager都會提示403錯誤,提示需要配置basic認證才能訪問。

根據提示資訊,解決方法如下:

  1. 配置conf/tomcat-users.xml檔案

    [root@tomcat01 ~]# vim /apps/tomcat/conf/tomcat-users.xml
    <tomcat-users>
      <role rolename="manager-gui"/>
      <role rolename="admin-gui"/>
      <user username="tomcat" password="123456" roles="manager-gui,admin-gui"/>
    </tomcat-users>
    
  2. tomcat預設只允許本地127.0.0.1進行basic認證,如果需要其他網段也能進行basic認證,需要配置允許的訪問規則,配置檔案為webapps/專案名稱/META-INF/context.xml。

    [root@tomcat01 ~]# vim /apps/tomcat/webapps/host-manager/META-INF/context.xml
    <Valve className="org.apache.catalina.valves.RemoteAddrValve"
             allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|192\.168\.20\.\d+" /> 
    
    [root@tomcat01 ~]# vim /apps/tomcat/webapps/manager/META-INF/context.xml
    <Valve className="org.apache.catalina.valves.RemoteAddrValve"
             allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|192\.168\.20\.\d+" /> 
    
  3. 訪問頁面進行測試

    點選頁面時需要輸入conf/tomcat-users.xml配置檔案中定義的使用者名稱密碼認證。

server status頁面用於監控tomcat的服務狀態相關資訊:

manager app用於管理tomcat的應用(停止和開啟),以及釋出應用。

host manager用於部署tomcat的虛擬主機: