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。
Tomcat是一個web服務,提供動態程式的解析(java),支援靜態資源。
企業會nginx+tomcat模型, nginx處理靜態資源,tomcat處理動態資源(java),能加速網站的存取和降低存取的延遲。
yum install java -y
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
bin 主要包含啓動和關閉tomcat的指令碼(啓停java指令碼依賴jar包檔案)
conf tomcat組態檔的目錄
lib tomcat執行時需要載入的jar包
logs tomcat日誌存放位置
temp tomcat臨時存放檔案路徑
webapps tomcat預設站點目錄
work tomcat執行時產生的快取檔案
1.瞭解組態檔
2.使用圖的方式在來講解一次,結合組態檔去理解。
Tomcat的HTTP請求過程
使用者發出一個請求,如http://tomcat.oldxu.com:8080/index.jsp
Connector發現是http/1.1協定,而且還是8080埠,於是就把請求接收後交給符合條件的Engine
Engine通過請求中的主機名tomcat.oldxu.com查詢滿足條件的虛擬主機(Host)
找到後就去此虛擬主機指定的appBase(程式碼存放的目錄)最後將解析產生的結果返回給使用者。
1.獲取war包,或者 ( 原始碼包 -->編譯–>war包–部署 )
war包:直接部署
原始碼包:編譯生成war包在部署
<!--站點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 "%r" %s %b" />
</Host>
[root@web01 conf]# mkdir /zrlog
[root@web01 conf]# ll /zrlog/
總用量 11316
-rw-r--r-- 1 root root 11585583 5月 11 11:32 ROOT.war
1.自動加壓.war包
2.自動部署,war包
[root@web01 conf]# /soft/tomcat/bin/shutdown.sh
[root@web01 conf]# /soft/tomcat/bin/startup.sh
[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
設定遠端數據庫連線資訊
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基礎認證。
[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