Tomcat

2020-08-13 10:31:25

Tomcat應用

1.JVM基本介紹

​ JAVA業務都是執行在java虛擬機器上的,簡稱 jvm ( java virtual machine )

​ 爲什麼java需要jvm虛擬機器?
​ 早期:
​ C語言 不支援跨域平臺 (遊戲)
​ Windows:在編譯一次
​ MACOS:還需要編譯
​ LINUX: 編譯一次
​ 可移植性比較的差。
​ JAVA: 可以做到一次編譯,多處執行。
​ windows、linux、macos。

​ 需要我們在操作系統上啓動執行一個jvm虛擬機器,這樣我們將java編譯好的war、jar包
​ 在windows、linux、macos平臺上執行起來。無需我們重複編譯。

​ jvm是由誰提供的呢?
​ jre:java執行環境 java runtime environment,包含了jvm。
​ jdk:java開發環境 會包含java的執行環境 jre。

​ 如果我們只是單純執行java程式碼,jre足夠。 jdk。

2.Tomcat是什麼,與Nginx的區別。

​ Tomcat是一個web服務,提供動態程式的解析(java),支援靜態資源。
​ 企業會nginx+tomcat模型, nginx處理靜態資源,tomcat處理動態資源(java),能加速網站的存取和降低存取的延遲。

3.Tomcat安裝、設定、啓動

1.安裝jdk

yum install java -y

2.安裝Tomcat ( 下載 Tomcat、解壓、啓動 )

wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.34/bin/apache-tomcat-9.0.34.tar.gz
mkdir /soft
tar xf apache-tomcat-9.0.34.tar.gz  -C /soft/
ln -s /soft/apache-tomcat-9.0.34/ /soft/tomcat

3.目錄結構

bin		 		主要包含啓動和關閉tomcat的指令碼(啓停java指令碼依賴jar包檔案)
conf			tomcat組態檔的目錄
lib		  		tomcat執行時需要載入的jar包
logs			tomcat日誌存放位置
temp		 	tomcat臨時存放檔案路徑
webapps	   		tomcat預設站點目錄
work			tomcat執行時產生的快取檔案

4.Tomcat組態檔、架構

1.瞭解組態檔
2.使用圖的方式在來講解一次,結合組態檔去理解。

Tomcat的HTTP請求過程
使用者發出一個請求,如http://tomcat.oldxu.com:8080/index.jsp
Connector發現是http/1.1協定,而且還是8080埠,於是就把請求接收後交給符合條件的Engine
Engine通過請求中的主機名tomcat.oldxu.com查詢滿足條件的虛擬主機(Host)
找到後就去此虛擬主機指定的appBase(程式碼存放的目錄)最後將解析產生的結果返回給使用者。

5.Tomcat虛擬主機設定

7.Tomcat部署Zrlog

​ 1.獲取war包,或者 ( 原始碼包 -->編譯–>war包–部署 )
​ war包:直接部署
​ 原始碼包:編譯生成war包在部署

1.定義虛擬主機

    <!--站點zrlog.oldxu.com-->
  <Host name="zrlog.oldxu.com"  appBase="/zrlog"
​        unpackWARs="true" autoDeploy="true">

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

2.上傳war包至指定目錄

[root@web01 conf]# mkdir /zrlog
[root@web01 conf]# ll /zrlog/
總用量 11316
-rw-r--r-- 1 root root 11585583 5月  11 11:32 ROOT.war

3.重新啓動tomcat應用

​ 1.自動加壓.war包
​ 2.自動部署,war包

[root@web01 conf]# /soft/tomcat/bin/shutdown.sh
[root@web01 conf]# /soft/tomcat/bin/startup.sh

4.檢查是否部署ok

[root@web01 conf]# tail -f /soft/tomcat/logs/catalina.out
11-May-2020 11:33:32.577 資訊 [main] org.apache.coyote.AbstractProtocol.start 開始協定處理控制代碼["http-nio-8080"]
11-May-2020 11:33:32.681 資訊 [main] org.apache.catalina.startup.Catalina.start Server startup in [4,035] milliseconds

5.存取zrlog站點

​ 設定遠端數據庫連線資訊

MariaDB [(none)]> create  database zrlog charset utf8;
MariaDB [(none)]> grant all privileges on *.* to 'all'@'%' identified by 'oldxu.com';

​ 後臺使用者名稱和密碼
​ oldxu
​ oldxu

做好tomcat部署zrlog 發出來。

多個web節點。
172.16.1.7
172.16.1.8

1.安裝tomcat

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

3.拷貝程式碼 (注意是在web01節點操作的)

[root@web01 ~]# scp -rp /soft [email protected]:/
[root@web01 ~]# scp -rp /zrlog [email protected]:/

4.web02操作如下

[root@web02 ~]# rm -rf /soft/tomcat/
[root@web02 ~]# ln -s /soft/apache-tomcat-9.0.34/ /soft/tomcat

5.共用靜態資源。

yum install nfs-utils -y

[root@nfs ~]# cat /etc/exports
/data/blog 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
/data/zrlog 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)

[root@nfs ~]# mkdir /data/zrlog
[root@nfs ~]# chown -R www.www /data/zrlog/
[root@nfs ~]# systemctl restart nfs

所有web節點都需要掛載
mount -t nfs 172.16.1.31:/data/zrlog /zrlog/ROOT/attached/

tomcat自帶的base的基礎認證。 ( nginx basic auth)

1.設定conf/tomcat-users.xml

2.還需要設定該專案的存取許可權,因爲Tomcat預設管理頁面僅允許本機存取,如果希望其他網段能正常存取,需要設定允許規則。
找到webapps/專案/META-INF/context.xml

[root@es-node1 tomcat]# vim 專案目錄下/META-INF/context.xml
allow=「127.\d+.\d+.\d+|::1|0:0:0:0:0:0:0:1」 />
#修改爲
allow=「127.\d+.\d+.\d+|::1|0:0:0:0:0:0:0:1|10.0.0.\d+」 />

專案如何引入base基礎認證。

8.爲zrblog新增/admin/新增base認證,需要找到專案下的WEB-INF/web.xml進行設定。(瞭解)

[root@es-node1 tomcat]# vim /code/ROOT/WEB-INF/web.xml





zrlog
/admin/*

   <!--給對應資源關聯角色名-->
    <auth-constraint>
        <role-name>zrlog_role</role-name>
    </auth-constraint>
</security-constraint>

<!--呼叫BASIC方法來實現認證-->
<login-config>
    <auth-method>BASIC</auth-method>
    <realm-name>Default</realm-name>
</login-config>


#設定使用者名稱密碼,關聯對應的角色(多個role不要使用相同使用者)
[root@es-node1 tomcat]# vim /soft/tomcat/conf/tomcat-users.xml

#重新啓動tomcat
[root@es-node1 ~]# /soft/tomcat/bin/shutdown.sh && /soft/tomcat/bin/startup.sh

java原始碼包、jar包、war包的關係、聯繫、區別? 擴充套件知識

1.什麼是原始碼包?
由java工程師編寫的java程式碼,稱職爲java原始碼包。

	編譯  ( maven 方式去編譯java的原始碼 )

編譯之後會得到一個包裹:
	war
	jar

2.什麼是war包?
由原始碼編譯後生成的產物,可以直接放入 tomcat執行起來。( 比較廣泛 )

3.什麼是jar包?
由原始碼編譯後生成的產物。
1.不能獨立執行起來,它可能被某個java程式依賴執行。或者war包執行所依賴。
2.可獨立執行起來的, java -jar xxx.jar 直接啓動執行,無需tomcat

4.原始碼包、jar、war:
1.原始碼包編譯後會產生war包、jar包
2.war通常是直接由tomcat執行啓動,啓動載入專案時會依賴一些jar包。
3.jar包,
分爲不可獨立執行(被java程式依賴執行、或者是被war包依賴執行)
分爲可獨立執行:可以直接對外提供服務。只需要有java環境即可。啓動命令: java -jar xx.jar