tomcat使用詳解(week4_day2)--技術流ken


 

tomcat簡介

 

Tomcat是Apache軟件基金會(Apache Software Foundation)的Jakarta 項目中的一個核心項目,由Apache、Sun和其他一些公司及個人共同開發而成。

Tomcat服務器是一個免費的開放源代碼的Web應用服務器,屬於輕量級應用服務器,在中小型系統和並發訪問用戶不是很多的場合下被普遍使用,是開發和調試JSP程序的首選。

Tomcat和Nginx、Apache(httpd)、lighttpd等Web服務器一樣,具有處理HTML頁面的功能,另外它還是一個Servlet和JSP容器,獨立的Servlet容器是Tomcat的默認模式。不過,

Tomcat處理靜態HTML的能力不如Nginx/Apache服務器。

目前Tomcat最新版本為9.0。Java容器還有resin、weblogic等。

 

tomcat安裝

 

系統環境:Centos7

第一步:下載tomcat安裝包

tomcat官網:https://tomcat.apache.org/

 

第二步:安裝包上傳至linux中

 

第三步:下載java環境

選擇yum安裝tomcat需要的jdk,就不用再手動配置環境變量

[root@ken3 ~]# yum install java -y

 

第四步:解壓tomcat安裝包

[root@ken3 ~]# unzip apache-tomcat-9.0.14.zip

 

第五步:移動並改名

[root@ken3 ~]# mv apache-tomcat-9.0.14 /usr/local/tomcat

 

第六步:授予執行權限

[root@ken3 local]# chmod -R a+x  tomcat/

 

第七步:啟動tomcat

[root@ken3 bin]# bash startup.sh
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@ken3 bin]# ss -tnl
State       Recv-Q Send-Q               Local Address:Port                              Peer Address:Port              
LISTEN      0      128                              *:111                                          *:*                  
LISTEN      0      128                              *:22                                           *:*                  
LISTEN      0      100                      127.0.0.1:25                                           *:*                  
LISTEN      0      100                             :::8009                                        :::*                  
LISTEN      0      128                             :::111                                         :::*                  
LISTEN      0      100                             :::8080                                        :::*                  
LISTEN      0      128                             :::80                                          :::*                  
LISTEN      0      128                             :::22                                          :::*                  
LISTEN      0      100                            ::1:25                                          :::*     

 

第八步:瀏覽器訪問

看到如下的界面即為成功

 

 關閉tomcat

[root@ken3 bin]# bash shutdown.sh 
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
[root@ken3 bin]# ss -tnl
State       Recv-Q Send-Q               Local Address:Port                              Peer Address:Port              
LISTEN      0      128                              *:111                                          *:*                  
LISTEN      0      128                              *:22                                           *:*                  
LISTEN      0      100                      127.0.0.1:25                                           *:*                  
LISTEN      0      128                             :::111                                         :::*                  
LISTEN      0      128                             :::80                                          :::*                  
LISTEN      0      128                             :::22                                          :::*                  
LISTEN      0      100                            ::1:25                                          :::*         

 

tomcat目錄介紹

 

[root@ken ~]# cd /usr/local/tomcat/
[root@ken tomcat]# tree -L 1
.
├── bin         #用以啟動、關閉Tomcat或者其它功能的腳本(.bat文件和.sh文件)
├── conf        #用以配置Tomcat的XML及DTD文件
├── lib         #存放web應用能訪問的JAR包
├── LICENSE
├── logs        #Catalina和其它Web應用程序的日志文件
├── NOTICE
├── RELEASE-NOTES
├── RUNNING.txt
├── temp        #臨時文件
├── webapps     #Web應用程序根目錄
└── work        #用以產生有JSP編譯出的Servlet的.java和.class文件
7 directories, 4 files

[root@ken tomcat]# cd webapps/
[root@ken webapps]# ll
total 20
drwxr-xr-x 14 root root 4096 Oct  5 12:09 docs          #tomcat幫助文檔
drwxr-xr-x  6 root root 4096 Oct  5 12:09 examples      #web應用實例
drwxr-xr-x  5 root root 4096 Oct  5 12:09 host-manager  #管理
drwxr-xr-x  5 root root 4096 Oct  5 12:09 manager       #管理
drwxr-xr-x  3 root root 4096 Oct  5 12:09 ROOT          #默認網站根目錄

 

tomcat日志

 

[root@ken3 logs]# cd /usr/local/tomcat/logs/
[root@ken3 logs]# ls
catalina.2019-01-25.log  host-manager.2019-01-25.log  localhost_access_log.2019-01-25.txt
catalina.out             localhost.2019-01-25.log     manager.2019-01-25.log

#tomcat的實時日志catalina.out [root@ken3 logs]# tail
-f catalina.out 25-Jan-2019 15:03:50.314 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["ajp-nio-8009"] 25-Jan-2019 15:03:50.319 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in [1,598] milliseconds 25-Jan-2019 15:07:28.455 INFO [main] org.apache.catalina.core.StandardServer.await A valid shutdown command was received via the shutdown port. Stopping the Server instance. 25-Jan-2019 15:07:28.456 INFO [main] org.apache.coyote.AbstractProtocol.pause Pausing ProtocolHandler ["http-nio-8080"] 25-Jan-2019 15:07:28.466 INFO [main] org.apache.coyote.AbstractProtocol.pause Pausing ProtocolHandler ["ajp-nio-8009"] 25-Jan-2019 15:07:28.479 INFO [main] org.apache.catalina.core.StandardService.stopInternal Stopping service [Catalina] 25-Jan-2019 15:07:28.538 INFO [main] org.apache.coyote.AbstractProtocol.stop Stopping ProtocolHandler ["http-nio-8080"] 25-Jan-2019 15:07:28.549 INFO [main] org.apache.coyote.AbstractProtocol.stop Stopping ProtocolHandler ["ajp-nio-8009"] 25-Jan-2019 15:07:28.551 INFO [main] org.apache.coyote.AbstractProtocol.destroy Destroying ProtocolHandler ["http-nio-8080"] 25-Jan-2019 15:07:28.552 INFO [main] org.apache.coyote.AbstractProtocol.destroy Destroying ProtocolHandler ["ajp-nio-8009"]

 

tomcat主配置文件server.xml詳解

 

<?xml version='1.0' encoding='utf-8'?>
<!--
<Server>元素代表整個容器,是Tomcat實例的頂層元素.由org.apache.catalina.Server接口來定義.它包含一個<Service>元素.並且它不能做為任何元素的子元素.
    port指定Tomcat監聽shutdown命令端口.終止服務器運行時,必須在Tomcat服務器所在的機器上發出shutdown命令.該屬性是必須的.
    shutdown指定終止Tomcat服務器運行時,發給Tomcat服務器的shutdown監聽端口的字符串.該屬性必須設置
-->
<Server port="8005" shutdown="SHUTDOWN">
  <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
  <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
  <GlobalNamingResources>
    <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" />
  </GlobalNamingResources>
  <!--service服務組件-->
  <Service name="Catalina">
    <!--
    connector:接收用戶請求,類似於httpd的listen配置監聽端口.
        port指定服務器端要創建的端口號,並在這個端口監聽來自客戶端的請求。
        address:指定連接器監聽的地址,默認為所有地址(即0.0.0.0)
        protocol連接器使用的協議,支持HTTP和AJP。AJP(Apache Jserv Protocol)專用於tomcat與apache建立通信的, 在httpd反向代理用戶請求至tomcat時使用(可見Nginx反向代理時不可用AJP協議)。
        minProcessors服務器啟動時創建的處理請求的線程數
        maxProcessors最大可以創建的處理請求的線程數
        enableLookups如果為true,則可以通過調用request.getRemoteHost()進行DNS查詢來得到遠程客戶端的實際主機名,若為false則不進行DNS查詢,而是返回其ip地址
        redirectPort指定服務器正在處理http請求時收到了一個SSL傳輸請求后重定向的端口號
        acceptCount指定當所有可以使用的處理請求的線程數都被使用時,可以放到處理隊列中的請求數,超過這個數的請求將不予處理
        connectionTimeout指定超時的時間數(以毫秒為單位)
    -->
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

    <!--engine,核心容器組件,catalina引擎,負責通過connector接收用戶請求,並處理請求,將請求轉至對應的虛擬主機host
        defaultHost指定缺省的處理請求的主機名,它至少與其中的一個host元素的name屬性值是一樣的
    -->
    <Engine name="Catalina" defaultHost="localhost">
      <!--Realm表示存放用戶名,密碼及role的數據庫-->
      <Realm className="org.apache.catalina.realm.LockOutRealm">
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
               resourceName="UserDatabase"/>
      </Realm>
      <!--
      host表示一個虛擬主機
        name指定主機名
        appBase應用程序基本目錄,即存放應用程序的目錄.一般為appBase="webapps" ,相對於CATALINA_HOME而言的,也可以寫絕對路徑。
        unpackWARs如果為true,則tomcat會自動將WAR文件解壓,否則不解壓,直接從WAR文件中運行應用程序
        autoDeploy:在tomcat啟動時,是否自動部署。
        xmlValidation:是否啟動xml的校驗功能,一般xmlValidation="false"。
        xmlNamespaceAware:檢測名稱空間,一般xmlNamespaceAware="false"-->
      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
        <!--
        Context表示一個web應用程序,通常為WAR文件
            docBase應用程序的路徑或者是WAR文件存放的路徑,也可以使用相對路徑,起始路徑為此Context所屬Host中appBase定義的路徑。
            path表示此web應用程序的url的前綴,這樣請求的url為http://localhost:8080/path/****
            reloadable這個屬性非常重要,如果為true,則tomcat會自動檢測應用程序的/WEB-INF/lib 和/WEB-INF/classes目錄的變化,自動裝載新的應用程序,可以在不重啟tomcat的情況下改變應用程序
        -->
        <Context path="" docBase="" debug=""/>

        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
      </Host>
    </Engine>
  </Service>
</Server>

 

 

tomcat的三個端口

 

Tomcat主配置文件Server.xml文件里面有三個端口

第一個:接收SHUTDOWN指令

    port指定Tomcat監聽shutdown命令端口.終止服務器運行時,必須在Tomcat服務器所在的機器上發出shutdown命令.該屬性是必須的.
    shutdown指定終止Tomcat服務器運行時,發給Tomcat服務器的shutdown監聽端口的字符串.該屬性必須設置
-->
<Server port="8005" shutdown="SHUTDOWN">

 

第二個:接收HTTP協議

   connector:接收用戶請求,類似於httpd的listen配置監聽端口.
        port指定服務器端要創建的端口號,並在這個端口監聽來自客戶端的請求。
 redirectPort指定服務器正在處理http請求時收到了一個SSL傳輸請求后重定向的端口號
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />

 

第三個:接收AJP協議

  protocol連接器使用的協議,支持HTTP和AJP。AJP(Apache Jserv Protocol)專用於tomcat與apache建立通信的, 在httpd反向代理用戶請求至tomcat時使用(可見Nginx反向代理時不可用AJP協議)
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

 

tomcat多實例部署

 

第一步:復制tomcat目錄

[root@ken3 local]# cp -a tomcat tomcat1
[root@ken3 local]# cp -a tomcat tomcat2

 

第二步:修改配置文件

tomcat1

[root@ken3 local]# vim tomcat1/conf/server.xml
...
22 <Server port="8011" shutdown="SHUTDOWN">
...
 69     <Connector port="8081" protocol="HTTP/1.1"
...

tomcat2

[root@ken3 local]# vim tomcat1/conf/server.xml
...
22 <Server port="8012" shutdown="SHUTDOWN">
...
 69     <Connector port="8082" protocol="HTTP/1.1"
...
tomcat2

 

第三步:啟動多實例

[root@ken3 local]# tomcat2/bin/startup.sh 
Using CATALINA_BASE:   /usr/local/tomcat2
Using CATALINA_HOME:   /usr/local/tomcat2
Using CATALINA_TMPDIR: /usr/local/tomcat2/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/local/tomcat2/bin/bootstrap.jar:/usr/local/tomcat2/bin/tomcat-juli.jar
Tomcat started.
[root@ken3 local]# ss -tnl
State       Recv-Q Send-Q               Local Address:Port                              Peer Address:Port              
LISTEN      0      128                              *:111                                          *:*                  
LISTEN      0      128                              *:22                                           *:*                  
LISTEN      0      100                      127.0.0.1:25                                           *:*                  
LISTEN      0      1                 ::ffff:127.0.0.1:8005                                        :::*                  
LISTEN      0      100                             :::8009                                        :::*                  
LISTEN      0      1                 ::ffff:127.0.0.1:8011                                        :::*                  
LISTEN      0      1                 ::ffff:127.0.0.1:8012                                        :::*                  
LISTEN      0      128                             :::111                                         :::*                  
LISTEN      0      100                             :::8080                                        :::*                  
LISTEN      0      128                             :::80                                          :::*                  
LISTEN      0      100                             :::8081                                        :::*                  
LISTEN      0      100                             :::8082                                        :::*                  
LISTEN      0      128                             :::22                                          :::*                  
LISTEN      0      100                            ::1:25                                          :::*   

 

第四步:瀏覽器訪問測試

tomat1

 

 tomcat2

 

tomcat搭建集群

 

第一步:修改配置文件

[root@ken ~]# cd /usr/local/tomcat1/webapps/
[root@ken webapps]# ls
docs  examples  host-manager  manager  ROOT
[root@ken webapps]# mv ROOT/* /ken/1^C
[root@ken webapps]# mkdir /ken/2
[root@ken webapps]# mv ROOT/* /ken/2
[root@ken webapps]# echo "111" > ROOT/index.html

另外一台寫上111以便區分

 

第二步:安裝nginx

[root@ken ~]# yum install nginx -y

 

第三步:配置nginx

  [root@ken ~]# vim /etc/nginx/nginx.conf
...
  upstream ken {          
        server 192.168.4.190:8081;      #定義轉發地址
        server 192.168.4.190:8082;
    }

    server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  _;
        root         /usr/share/nginx/html;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / {
        proxy_pass http://ken;   #轉發至代理
        }
...

 

第四步:檢查nginx配置並重啟

[root@ken ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@ken ~]# systemctl restart nginx

 

第五步:測試

瀏覽器輸出本機IP地址即可

進行刷新

 

tomcat上線jpress博客系統

 

jpress類似於wordpress的一個開源博客系統

 

第一步:下載jpress

https://gitee.com/fuhai/jpress/blob/alpha/wars/jpress-web-newest.war

 

第二步:上傳jpress包至ROOT下

[root@ken ROOT]# pwd
/usr/local/tomcat/webapps/ROOT
[root@ken ROOT]# rz

[root@ken ROOT]# ls
fuhai-jpress-v2.0-rc.8.zip

 

第三步:解壓

使用unzip進行解壓

[root@ken ROOT]# unzip fuhai-jpress-alpha.zip
[root@ken ROOT]# ls
fuhai-jpress-alpha.zip  jpress

 

第四步:復制war包至ROOT下

[root@ken wars]# pwd
/usr/local/tomcat/webapps/ROOT/jpress/wars
[root@ken wars]# cp jpress-web-newest.war /usr/local/tomcat/webapps/ROOT/

 

第五步:解壓war包

[root@ken ROOT]# unzip jpress-web-newest.war 
[root@ken ROOT]# ls
fuhai-jpress-alpha.zip  jpress  jpress-web-newest.war  META-INF  robots.txt  static  templates  WEB-INF

 

第六步:瀏覽器進行訪問

瀏覽器輸入IP,回車之后出現如下的界面

http://服務器IP:8080/jpress

 

第七步:安裝

點擊下一步

 

需要創建數據庫及用戶

 

第八步:數據庫創建數據庫及用戶

MariaDB [(none)]> create database ken;
MariaDB [(none)]> grant all on *.* to ken@'localhost' identified by '123';

 

第九步:繼續安裝

填好數據庫信息后,點擊下一步

 

 根據提示輸入網站名稱及管理員賬號和密碼,點擊完成

 

到這一步之后需要重啟tomcat

 

第十步:重啟tomcat

[root@ken bin]# ./shutdown.sh 
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
[root@ken bin]# ./startup.sh 
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.

 

第十一步:再次訪問tomcat

 

第十二步:進入管理員界面

輸入如下的地址,搜索admin,回車之后出現如下的界面

http://服務器IP:8080/admin/

 

輸入之前設置的管理員賬戶及密碼,點擊登錄

 

 

出現如下的界面即成功!

 

第十三步:撰寫文章

 

 

退出當前登錄用戶

直接輸入IP加端口再次訪問即可看到我們剛才寫的文章

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM