tomcat基本介绍

1.JVM基本介绍
Java业务都是运行在Java虚拟机上的,Java虚拟机简称为jvm

2.为什么Java需要jvm虚拟机?
Java是可以跨平台,只需要将源代码进行一次编译,能够在多处运行
jvm是由jre提供(Java的运行环境)

3.tomcat与nginx有什么区别?
nginx仅支持静态资源解析,而tomcat支持解析Java开发的web应用,还支持解析静态资源(效率不高)
通常情况下,企业会常用nginx+tomcat结合,由nginx处理静态资源,tomcat处理动态资源

4.tomcat快速安装
安装java环境:
jdk:
jre
jvm
运行java项目

[root@web01 ~]# yum install java -y
[root@web01 ~]# wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.39/bin/apache-tomcat-9.0.39.tar.gz
[root@web01 ~]# mkdir /soft
[root@web01 ~]# tar xf apache-tomcat-9.0.39.tar.gz  -C /soft/
[root@web01 ~]# ln -s /soft/apache-tomcat-9.0.39/ /soft/tomcat
[root@web01 ~]# /soft/tomcat/bin/startup.sh		# 启动
[root@web01 ~]# /soft/tomcat/bin/shutdown.sh	# 停止

#端口8080 对外提供服务的端口
#端口8005 关闭tomcat端口

[root@web01 ~]# netstat -lntp |grep java
tcp6       0      0 127.0.0.1:8005     :::*         LISTEN      6867/java           
tcp6       0      0 :::8080            :::*         LISTEN      6867/java

#以systemctl方式管理tomcat服务

[root@web01 ~]# vim /usr/lib/systemd/system/tomcat.service
[Unit]
Description=Apache Tomcat Server
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
ExecStart=/soft/tomcat/bin/startup.sh
ExecStop=/soft/tomcat/bin/shutdown.sh

[Install]
WantedBy=multi-user.target


# 加载tomcat 文件
[root@web01 ~]# systemctl daemon-reload 
# 将tomcat加入开机自启
[root@web01 ~]# systemctl enable tomcat

tomcat相关路径作用

bin tomcat启动与停止脚本,启动前需要加载jar包
conf tomcat配置文件 server.xml
lib tomcat 依赖jar文件, 连接数据库,就需要jar支持
logs tomcat的日志文件 catalina.out
temp tomcat临时目录
webapps tomcat的默认站点路径 webapps/ROOT
work tomcat 缓存目录

tomcat运行虚拟主机:

<!--diy.etiantian.org-->
<Host name="diy.etiantian.org"  appBase="/code/tomcat/diy"
	unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
	   prefix="diy_access_log" suffix=".txt"
	   pattern="%h %l %u %t &quot;%r&quot; %s %b" />
</Host>


[root@web01 ROOT]# systemctl stop tomcat
[root@web01 ROOT]# systemctl start tomcat
[root@web01 ROOT]# mkdir /code/tomcat/diy/ROOT -p
[root@web01 ROOT]# echo "tomcat-diy" > /code/tomcat/diy/ROOT/index.html



<Host >
	<!--访问/tt这个uri,上/code/tt中获取资源页面-->
	<Context docBase="/code/tt" path="/tt" reloadable="true"/>
</Host>

[root@web01 ROOT]# mkdir /code/tt
[root@web01 ROOT]# echo "ttttt-tomcat" > /code/tt/index.html

path: 	要访问的uri			/tt
docBase:具体的路径			/code/tt

			组合起来: 请求域名:端口/tt  --> /code/tt


5.Tomcat自带的管理页面

1.所有的管理页面,都将权限赋予给了角色,而角色的名称是固定的:   manager-gui  admin-gui
2.需要添加一个用户,将用户捆绑至对应的角色,这样用户就可以访问到对应的页面


[root@web01 ROOT]# vim /soft/tomcat/conf/tomcat-users.xml
<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<user username="tomcat" password="123456" roles="manager-gui,admin-gui"/>


3.由于项目默认允许127.0.0.1访问,所以配置好了角色和用户也无法正常访问:
[root@web01 ROOT]# vim /soft/tomcat/webapps/host-manager/META-INF/context.xml
[root@web01 ROOT]# vim /soft/tomcat/webapps/manager/META-INF/context.xml
	
默认状态,
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />

修改后的状态:10\.0\.0\.\d
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|10\.0\.0\.\d+|" />


6.Tomcat部署zrlog—博客系统 (war包: 放到tomcat目录下即可,会自动解压)
1).编写tomcat配置文件,添加一个虚拟主机

[root@web01 ROOT]# vim /soft/tomcat/conf/server.xml
<!--zrlog.etiantian.org-->
<Host name="zrlog.etiantian.org"  appBase="/code/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>


[root@web01 ROOT]# mkdir /code/zrlog

2)下载zrlog-war包,放入对应的站点目录

[root@web01 ROOT]# cd /code/zrlog/
[root@web01 zrlog]# rz -E
[root@web01 zrlog]# ls
ROOT.war

3)重启Tomcat服务

[root@web01 zrlog]# systemctl stop tomcat
[root@web01 zrlog]# systemctl start tomcat

4)在172.16.1.51上创建一个zrlog的库:

[root@db01 ~]# mysql -uroot -pboy123.com
MariaDB [(none)]> create database zrlog;
MariaDB [(none)]>

6.源码包–>jar包–war包的关系?

1.什么是源码包?
	由开发人员编写而成。

2.什么是jar包?
	由源码包编译生成的产物。
		不可独立运行,被某个JAVA程序依赖而使用
		可独立运行,java -jar xx.jar。 [jar直接运行的项目演示](https://gitee.com/chejiangyi/dingding-sonar)

3.什么是war包?
	由源码包编译生成的产物,可直接输出至Tomcat运行 (较为广泛)

4.源码包与jar包war的关系?
	1.源码包通过maven编译,编译后分为jar war两种类型。
	2.war包通常直接放入tomcat运行,在war运行的过程中需要依赖 jar 包。
	3.jar包又分为两种,可独立运行(直接对外提供服务)和不可独立运行(被war依赖)

7.tomcat集群(两台web节点+1台负载均衡)

[root@web02 ~]# yum install java -y
[root@web02 ~]# wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.39/bin/apache-tomcat-9.0.39.tar.gz
[root@web02 ~]# mkdir /soft
[root@web02 ~]# tar xf apache-tomcat-9.0.39.tar.gz  -C /soft/
[root@web02 ~]# ln -s /soft/apache-tomcat-9.0.39/ /soft/tomcat
[root@web02 ~]# /soft/tomcat/bin/startup.sh		# 启动
[root@web02 ~]# /soft/tomcat/bin/shutdown.sh	# 停止


web01执行
[root@web01 ~]# scp /soft/tomcat/conf/server.xml root@172.16.1.8:/soft/tomcat/conf/server.xml
[root@web01 ~]# scp /usr/lib/systemd/system/tomcat.service root@172.16.1.8:/usr/lib/systemd/system/tomcat.service
[root@web01 ~]# scp -rp /code/zrlog root@172.16.1.8:/code/


web02执行
[root@web02 ~]# systemctl daemon-reload 
[root@web02 ~]# systemctl enable tomcat
Created symlink from /etc/systemd/system/multi-user.target.wants/tomcat.service to /usr/lib/systemd/system/tomcat.service.
[root@web02 ~]# systemctl start tomcat



lb执行操作:
[root@lb01 ~]# cat /etc/nginx/conf.d/proxy_zrlog.etiantian.org.conf 
upstream zrlog {
	server 172.16.1.7:8080;
	server 172.16.1.8:8080;

}

server {
	listen 80;
	server_name zrlog.etiantian.org;
           
	location / {
		proxy_pass http://zrlog;
		include proxy_params;	
	}
}

#拓展
为tomcat日志,获取http的Header信息 (/soft/tomcat/conf/server.xml文件更改部分内容)
<!--zrlog.etiantian.org-->
<Host name="zrlog.etiantian.org"  appBase="/code/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  %{User-Agent}i %{X-Forwarded-For}i" />
</Host>

8.tomcat集群配置HTTPS服务

单tomcat节点:
	https://help.aliyun.com/document_detail/98576.html?spm=5176.2020520163.cas.19.387756a7o6e0zQ
	

nginx+tomcat集群配置方式:

[root@lb01 ~]# cat /etc/nginx/conf.d/proxy_zrlog.etiantian.org.conf 
upstream zrlog {
	server 172.16.1.7:8080;
	server 172.16.1.8:8080;
}

server {
	listen 443 ssl;
	server_name zrlog.etiantian.org;
	ssl_certificate ssl_key/server.crt;
	ssl_certificate_key ssl_key/server.key;

	location / {
		proxy_pass http://zrlog;
		include proxy_params;	
	}
}

server {
	listen 80;
	server_name zrlog.etiantian.org;
	return 302 https://$http_host$request_uri;
}

9.tomcat + nginx + redis会话保持

1.配置虚拟主机 (所有节点都需要配置):
[root@web02 ~]# vim /soft/tomcat/conf/server.xml
        <!--session.etiantian.org-->
      <Host name="session.etiantian.org"  appBase="/code/session"
            unpackWARs="true" autoDeploy="true">
      </Host>

2.创建目录,编写代码(所有节点都需要配置):
[root@web02 ~]# mkdir /code/session/ROOT -p
[root@web02 ~]# vi /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.负载均衡配置:
[root@lb01 conf.d]# cat proxy_session.etiantian.org.conf 
upstream session {
	server 172.16.1.7:8080;
	server 172.16.1.8:8080;

}

server {
	listen 80;
	server_name session.etiantian.org;

	location / {
		proxy_pass http://session;
		include proxy_params;	
	}
}


4.接入 TomcatClusterRedisSessionManager ( 参考官方地址: https://github.com/ran-jit/tomcat-cluster-redis-session-manager )



1.解压zip包
[root@web01 ~]# unzip tomcat-cluster-redis-session-manager.zip

2.拷贝jars到tomcat的/lib目录中
[root@web01 ~]# cp tomcat-cluster-redis-session-manager/lib/* /soft/tomcat/lib/

3.拷贝conf下的redis.properties文件,到tomcat的conf文件
[root@web01 ~]# cp tomcat-cluster-redis-session-manager/conf/redis-data-cache.properties /soft/tomcat/conf/

4.将配置文件中连接redis地址修改为如下地址即可
[root@web01 ~]# vim /soft/tomcat/conf/redis-data-cache.properties
redis.hosts=172.16.1.51:6379


5.添加如下两行至tomcat/conf/context.xml  (添加在</Context> 上一行 )
[root@web01 ~]# vim /soft/tomcat/conf/context.xml
<Valve className="tomcat.request.session.redis.SessionHandlerValve" />
<Manager className="tomcat.request.session.redis.SessionManager" />




6.支持tomcat会话的项目(自行练习)
	https://gitee.com/mail_osc/wangmarket

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值