1.JVM基本介紹
2.Tomcat與Nginx區(qū)別
tomcat
基于java開發(fā)一個(gè)web服務(wù)器軟件, 和nginx類似.
tomcat能直接解析jsp代碼,以及靜態(tài)資源.
nginx + tomcat
3.Tomcat安裝配置啟動(dòng)
[root@web01 ~]# yum install java -y
二進(jìn)制安裝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
無法啟動(dòng):
1.替換配置文件: pkill java 然后在啟動(dòng)
2.配置文件寫錯(cuò)
3.虛擬主機(jī)是添加,不要修改
4.context如果寫了,一定要有對(duì)應(yīng)的目錄,不然整體就報(bào)錯(cuò)
/soft/tomcat/logs/catalina.out
4.Tomcat配置文件詳解
https://www.cnblogs.com/yinzhengjie/p/9508426.html
image.png
- 一個(gè)server表示一個(gè)tomcat實(shí)例
- 一個(gè)server中包含多個(gè)Connector連接器隧甚,Connector的主要功能是接受、響應(yīng)用戶請(qǐng)求宝踪。
- service的作用是:將connector關(guān)聯(lián)至engine(catalina引擎)
- 一個(gè)host就是一個(gè)站點(diǎn)锅睛,類似于nginx的多站點(diǎn)
- context類似于nginx中l(wèi)ocation的概念
5.Tomcat部署博客項(xiàng)目zrlog
域名: zrlog.hai.com:8080
站點(diǎn)目錄: /code/zrlog
- 1.配置server.xml文件 ,新增zrlog站點(diǎn)在 engline
[root@web01 ~]# vim /soft/tomcat/conf/server.xml
<!--zrlog站點(diǎn)-->
<Host name="zrlog.hai.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)建站點(diǎn)目錄,上傳zrlog的war包
[root@web01 ~]# mkdir /code/zrlog
[root@web01 ~]# cd /code/zrlog/
[root@web01 zrlog]# rz ROOT.war
- 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)建一個(gè)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 'oldboy.com';
6.源碼包-->jar包--war包的關(guān)系
源碼包 --> 由開發(fā)人員編寫的
maven
- jar --> 源碼包編譯
無法獨(dú)立運(yùn)行, 需要被某個(gè)程序所依賴 mysql連接
可以獨(dú)立運(yùn)行, java -jar xx.jar 啟動(dòng)
https://gitee.com/chejiangyi/dingding-sonar - war --> 源碼包編譯, 可以直接放在tomcat中進(jìn)行部署 (這種類型居多)
源碼-->maven編譯-->jar或者war包
war包直接放入tomcat即可運(yùn)行, war在運(yùn)行過程中需要依賴 jar包
jar包 分為兩種, 可獨(dú)立運(yùn)行(對(duì)外提供服務(wù)), 不可獨(dú)立運(yùn)行(被war依賴)
7.如何開啟 Server Status Host Manager頁面
1.配置conf/tomcat-users.xml
<role rolename="manager-gui"/>
<user username="tomcat" password="123456" roles="manager-gui"/>
2.如果訪問還是403凌净,是因?yàn)閠omcat默認(rèn)僅運(yùn)行本地訪問該管理頁面,需要允許同網(wǎng)段主機(jī)訪問
[root@web01 ~]# ll /soft/tomcat/webapps/manager/
[root@web01 ~]# ll /soft/tomcat/webapps/host-manager/
[root@es-node1 tomcat]# vim 項(xiàng)目目錄下/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+" />
- 啟用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)對(duì)應(yīng)的角色(多個(gè)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
8.部署多節(jié)點(diǎn)Tomcat-->mysql
10.0.0.7 ---> 10.0.0.51
10.0.0.8 ---> 10.0.0.51
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é)點(diǎn)掛載
mount -t nfs 172.16.1.31:/data/zrlog/ /code/zrlog/ROOT/attached/
9.接入負(fù)載均衡
[root@lb01 conf.d]# cat proxy_zrlog.oldhai.com.conf
upstream zrlog {
server 172.16.1.7:8080;
server 172.16.1.8:8080;
}
server {
listen 80;
server_name zrlog.oldxu.com;
location / {
proxy_pass http://zrlog;
include proxy_params;
}
}
10.session測(cè)試代碼用例诺祸,配置redis會(huì)話保持
- 1.配置虛擬主機(jī)
[root@web01 conf]# vim /soft/tomcat/conf/server.xml
<!--session站點(diǎn)-->
<Host name="session.oldxu.com" appBase="/code/session"
unpackWARs="true" autoDeploy="true">
</Host>
- 2.準(zhǔn)備index.jsp文件(為了區(qū)分需要調(diào)整輸出的web01 web02)
[root@web01 conf]# cat /code/session/ROOT/index.jsp
<body>
<%
//HttpSession session = request.getSession(true);
System.out.println(session.getCreationTime());
out.println("<br> web01 SESSION ID:" + session.getId() + "<br>");
out.println("Session created time is :" + session.getCreationTime()
+ "<br>");
%>
</body>
- 3.下載TomcatClusterRedisSessionManager (所有web集群都需要操作)
GitHub地址 https://github.com/ran-jit/tomcat-cluster-redis-session-manager
[root@tomcat ~]# wget https://github.com/ran-jit/tomcat-cluster-redis-session-manager/releases/download/3.0.3/tomcat-cluster-redis-session-manager.zip
[root@tomcat ~]# unzip tomcat-cluster-redis-session-manager.zip
[root@web01 ~]# cd tomcat-cluster-redis-session-manager
拷貝jar包
[root@web01 tomcat-cluster-redis-session-manager]# cp lib/* /soft/tomcat/lib/
拷貝tomcat連接redis配置文件
[root@web01 tomcat-cluster-redis-session-manager]# cp conf/redis-data-cache.properties /soft/tomcat/conf/
修改redis-data-cache.properties
[root@web01 ~]# vim /soft/tomcat/conf/redis-data-cache.properties
...
redis.hosts=172.16.1.51:6379
redis.password=123456 #有密碼就寫密碼,沒有不要寫
...
- 4.添加如下兩行至tomcat/conf/context.xml
[root@web01 ~]# vim /soft/tomcat/conf/context.xml
<Context>
.....
<Valve className="tomcat.request.session.redis.SessionHandlerValve" />
<Manager className="tomcat.request.session.redis.SessionManager" />
....
</Context>
- 5.修改tomcat/conf/web.xml 配置文件session的超時(shí)時(shí)間 ,單位是分鐘
<session-config>
<session-timeout>60</session-timeout> #根據(jù)情況調(diào)整
</session-config>
- 6.安裝redis着帽,當(dāng)然也可以自行搭建redis集群
[root@redis ~]# yum install redis -y
[root@redis ~]# cat /etc/redis.conf
...
bind 172.16.1.51 127.0.0.1
requirepass 123456 #如果不需要密碼,則不要配置
...
[root@redis ~]# systemctl start redis
[root@redis ~]# systemctl enable redis
Nginx+Tomcat集群全站Https+SSL
[root@lb ~]# cat /etc/nginx/conf.d/proxy_zrlog.com.conf
upstream zrlog {
server 10.0.0.7:8080;
server 10.0.0.8:8080;
}
server {
listen 443 ssl;
ssl_certificate ssl_key/server.crt;
ssl_certificate_key ssl_key/server.key;
server_name zrlog.oldxu.com;
location / {
proxy_pass http://zrlog;
include proxy_params;
}
}
server {
listen 80;
server_name zrlog.oldxu.com;
return 302 https://$http_host$request_uri;
}