一.JVM基本介紹
JAVA編譯型 ---> 編譯
C 編譯型--->
linux --->編譯一次
windows? ? --->編譯一次
macos
ubuntu
跨平臺? 移值型差
只需要將源代碼進行一次編譯? war,能夠在多處運行楚堤。
jvm虛擬機
windows? jvm? ? --->war
linux? ? jvm? ? --->war
mac? ? ? jvm? ? --->war
jvm 如何安裝?
jvm 需要? jre? java運行環(huán)境
環(huán)境:
jre:? java運行環(huán)境? 包含 jvm
jdk:? java開發(fā)環(huán)境? 包含 jre
只想運行java代碼,只需要jre即可
既想要運行環(huán)境,開發(fā)環(huán)境? jdk
二.Tomcat與Nginx區(qū)別
tomcat
基于java開發(fā)一個web服務(wù)器軟件, 和nginx類似.
tomcat能直接解析jsp代碼,以及靜態(tài)資源.
nginx + tomcat
三.Tomcat安裝配置啟動
yum:
[root@web01 ~]# yum install java -y
二進制安裝tomcat
[root@web01 ~]# mkdir /soft && cd /soft
[root@web01 soft]# wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.26/bin/apache-tomcat-9.0.26.tar.gz
[root@web01 soft]# tar xf apache-tomcat-9.0.26.tar.gz
[root@web01 soft]# ln -s /soft/apache-tomcat-9.0.26 /soft/tomcat
[root@web01 soft]# /soft/tomcat/bin/startup.sh
[root@web01 soft]# netstat -lntp|grep java
tcp6? ? ? 0? ? ? 0 :::8009? ? ? ? ? ? :::*? ? ? ? LISTEN? ? ? 8500/java? ? ? ? ?
tcp6? ? ? 0? ? ? 0 :::8080? ? ? ? ? ? :::*? ? ? ? LISTEN? ? ? 8500/java? ? ? ? ?
tcp6? ? ? 0? ? ? 0 127.0.0.1:8005? ? :::*? ? ? ? LISTEN? ? ? 8500/java? ?
二進制:
jdk使用二進制
tomcat使用二進制
[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 ~]# vim /etc/profile
#...最后面添加...
export JAVA_HOME=/app/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
[root@es-node1 ~]# tar xf apache-tomcat-9.0.26.tar.gz -C /soft
[root@es-node1 ~]# /soft/apache-tomcat-9.0.26/bin/startup.sh
四.Tomcat配置文件詳解
一個server表示一個tomcat實例
一個server中包含多個Connector連接器本涕,Connector的主要功能是接受讲婚、響應(yīng)用戶請求。
service的作用是:將connector關(guān)聯(lián)至engine(catalina引擎)
一個host就是一個站點,類似于nginx的多站點
context類似于nginx中l(wèi)ocation的概念
五.Tomcat配置虛擬主機 ---> 一臺服務(wù)器運行多個站點
<!--tomcat虛擬主機-->
<Host name="tomcat1.oldxu.com"? appBase="/code1"
unpackWARs="true" autoDeploy="true">
<!--類似于nginx的location? path是訪問的路徑 ->映射 docBase是真實的路徑-->
<Context docBase="/code1/admin" path="/test" reloadable="true"/>
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="tomcat1_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
無法啟動:
1.替換配置文件:? pkill java? 然后在啟動
2.配置文件寫錯?
3.虛擬主機是添加,不要修改
4.context如果寫了,一定要有對應(yīng)的目錄,不然整體就報錯
/soft/tomcat/logs/catalina.out
六.Tomcat部署博客項目zrlog
域名: zrlog.oldxu.com:8080
站點目錄:? /code/zrlog? ? ? <--ROOT
10.0.0.7? tomcat? 端口 8080 10.0.0.51 mysql? ? 端口 3306
1.配置server.xml文件 ,新增在 engline
[root@web01 ~]# vim /soft/tomcat/conf/server.xml
<!--zrlog站點-->
? ? <Host name="zrlog.oldxu.com"? appBase="/code/zrlog"
? ? ? ? ? unpackWARs="true" autoDeploy="true">
? ? ? <Va0lve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
? ? ? ? ? ? prefix="zrlog_access_log" suffix=".txt"
? ? ? ? ? ? pattern="%h %l %u %t "%r" %s %b" />
? ? </Host>
2.創(chuàng)建站點目錄,上傳zrlog的war包
[root@web01 ~]# mkdir /code/zrlog
[root@web01 ~]# cd /code/zrlog/
[root@web01 zrlog]# rz ROOT.war? ? <---這個是zrlog的war包,名稱就叫ROOT
3.重啟Tomcat服務(wù)
[root@web01 zrlog]# /soft/tomcat/bin/shutdown.sh && /soft/tomcat/bin/startup.sh && tail -f /soft/tomcat/logs/catalina.out
4.配置域名劫持
5.在172.16.1.51的數(shù)據(jù)庫上,創(chuàng)建一個zrlog的庫,配置授權(quán)訪問用戶
[root@db01 ~]# mysql -uroot -poldxu.com
MariaDB [(none)]> create database zrlog charset utf8;
<---此前配置過all用戶,可以復(fù)用
MariaDB [(none)]> grant all privileges on *.* to 'all'@'%' identified by 'oldxu.com';
jeesns? --社交
jpress? --博客 (群里-->新增Host -->新增站點目錄--->jpress.war修改為ROOT.war)
zrlog? --博客
源碼包-->jar包--war包的關(guān)系?
源碼包? -->? 由開發(fā)人員編寫的
maven
jar? ? -->? 源碼包編譯
無法獨立運行, 需要被某個程序所依賴? ? mysql連接
可以獨立運行, java -jar xx.jar 啟動
https://gitee.com/chejiangyi/dingding-sonar
war -->? 源碼包編譯, 可以直接放在tomcat中進行部署? (這種類型居多)
源碼-->maven編譯-->jar或者war包
war包直接放入tomcat即可運行, war在運行過程中需要依賴 jar包
jar包 分為兩種,? 可獨立運行(對外提供服務(wù)),? ? 不可獨立運行(被war依賴)
1.配置conf/server.xml 增加一個Host
? ? ? ? <!--jpress站點-->
? ? ? <Host name="jpress.oldxu.com"? appBase="/code/jpress"
? ? ? ? ? ? unpackWARs="true" autoDeploy="true">
? ? ? ? <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
? ? ? ? ? ? ? prefix="jpress_access_log" suffix=".txt"
? ? ? ? ? ? ? pattern="%h %l %u %t "%r" %s %b" />
? ? ? </Host>
2.上傳代碼
[root@web01 ~]# mkdir /code/jpress && cd /code/jpress
[root@web01 jpress]# rz jpress.war
[root@web01 jpress]# mv jpress.war ROOT.war
3.重啟Tomcat
[root@web01 jpress]# /soft/tomcat/bin/shutdown.sh && /soft/tomcat/bin/startup.sh && tail -f /soft/tomcat/logs/catalina.out
七.Tomcat配置基礎(chǔ)認(rèn)證 ---> 了解
如何開啟 Server Status? Host Manager頁面
1.配置conf/tomcat-users.xml
<role rolename="manager-gui"/>
<user username="tomcat" password="123456" roles="manager-gui"/>
2.如果訪問還是403,是因為tomcat默認(rèn)僅運行本地訪問該管理頁面,需要允許同網(wǎng)段主機訪問
[root@web01 ~]# ll /soft/tomcat/webapps/manager/
[root@web01 ~]# ll /soft/tomcat/webapps/host-manager/
[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+" />
--------------------------------------------------------------------------
3.啟用zrlog的基礎(chǔ)認(rèn)證 ---> zrlog.oldxu.com/admin? ? 了解? 使用Nginx替代
--------------------------------------------------------------------------
[root@es-node1 tomcat]# vim /code/zrlog/ROOT/WEB-INF/web.xml
<web-app>
...
? ? <security-constraint>
? ? ? ? <web-resource-collection>
? ? ? ? ? ? <web-resource-name>zrlog</web-resource-name>
? ? ? ? ? ? <url-pattern>/admin/*</url-pattern>
? ? ? ? </web-resource-collection>
? ? ? ? <auth-constraint>
? ? ? ? ? ? <role-name>zrlog_role</role-name>
? ? ? ? </auth-constraint>
? ? </security-constraint>
? ? <login-config>
? ? ? ? <auth-method>BASIC</auth-method>
? ? ? ? <realm-name>Default</realm-name>
? ? </login-config>
...
</web-app>
#配置用戶名密碼匾嘱,關(guān)聯(lián)對應(yīng)的角色(多個role不要使用相同用戶)
[root@es-node1 tomcat]# vim /soft/tomcat/conf/tomcat-users.xml
<role rolename="zrlog_role"/>
<user username="tomcat" password="123456" roles="zrlog_role"/>
#重啟tomcat
[root@es-node1 ~]# /soft/tomcat/bin/shutdown.sh && /soft/tomcat/bin/startup.sh
------------------------------------------------------------------------------------
八.部署多節(jié)點Tomcat-->mysql
10.0.0.7? ---> 10.0.0.51
10.0.0.8? ---> 10.0.0.51
------------------------------------------------------------------------------------
1.安裝jdk
[root@web02 ~]# yum install java -y
2.安裝tomcat? 部署代碼? (scp)
在web01上操作
[root@web01 ~]# scp -rp /soft root@172.16.1.8:/
[root@web01 ~]# scp -rp /code/zrlog root@172.16.1.8:/code/
在web02上操作
[root@web02 soft]# rm -rf /soft/tomcat/
[root@web02 soft]# ln -s /soft/apache-tomcat-9.0.26 /soft/tomcat
[root@web02 soft]# /soft/tomcat/bin/startup.sh
3.修改域名解析
------------------------------------------------------------------------------------
八.部署多節(jié)點Tomcat-->NFS
10.0.0.7? ---> 10.0.0.51
10.0.0.8? ---> 10.0.0.51
10.0.0.31
------------------------------------------------------------------------------------
1.安裝NFS
[root@nfs ~]# groupadd -g 666 www
[root@nfs ~]# useradd -u666 -g666 www
[root@nfs ~]# yum install nfs-utils -y
[root@nfs ~]# cat /etc/exports
/data/zrlog 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
[root@nfs ~]# mkdir /data/zrlog
[root@nfs ~]# systemctl restart nfs
2.找到圖片資源? 推送圖片資源至NFS
[root@web01 ~]# scp -rp /code/zrlog/ROOT/attached/* root@172.16.1.31:/data/zrlog/
[root@nfs ~]# chown -R www.www /data/zrlog/ #重新授權(quán)
3.多節(jié)點掛載?
# mount -t nfs 172.16.1.31:/data/zrlog/ /code/zrlog/ROOT/attached/