1、tomcat简介
Tomcat,属于web应用服务器,是用java语言开发的。
java组成:
- 语言、语法规范。关键字,如: if、for、class等
- 源代码source code
- 依赖库
- jvm虚拟机,也就是java的虚拟机。
示例:实现java hello
root@localhost ~]#yum install epel-release.noarch -y
[root@localhost ~]#yum install java -y
[root@localhost ~]#yum provides */javac
[root@localhost data]#yum install java-1.8.0-openjdk-devel -y //这个可以安装javac
[root@localhost ~]#javac Hello.java //编译成字节码
#生成 class 文件
[root@localhost ~]#java Hello
2、java基础
2.1 动态 转换成 静态页面
2.1.1 servlet 动静结合⭐
本质是一段java程序:原理就是在java程序中嵌入 html语言
2.1.2 jsp⭐
动态网页,html是静态网页。
JSP是基于Servlet实现
优点:架构简单,比较适合小型项目开发
总结:
- servlet:处理java代码的动态资源,把结果交给jsp
- jsp:将动态资源镶嵌到 前端html静态页面,生成新的页面。
// nginx擅长处理静态资源,处理不了的动态资源,会转交给tomcat。tomcat会将处理完的动态资源,镶嵌在静态网页中,回复给nginx。
2.2 jdk
工具:
-
jdk: java程序、虚拟机、java运行库,包括下面两个
-
jre:库文件,提供一些第三方功能,包括下面的jvm虚拟机
- jvm:虚拟机
-
小tips:开发让部署java环境,其实就是安装jdk!!!
小拓展:
JDK8、JDK11是长期支持版(Long Term Support),8是免费的,
但是JDK8明年会停止维护。
2.3 安装openjdk⭐
安装tomcat之前,必须先安装jdk!!!
java -version //查看版本,注意只有一个横杠!
Oracle JDK 的 rpm安装:
- 下载软件包
官方登录下载连接:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html //下载需要注册
- 加载软件包
******加载软件包*******
yum install jdk-8u291-linux-x64.rpm -y
yum history info 6
rpm -ql jdk1.8-2000:1.8.0_291-fcs //查看文件列表
find / -name javac
vim /etc/profile.d/jdk.sh
export JAVA_HOME=/usr/java/default
export PATH=$JAVA_HOME/bin:$PATH
cat /etc/profile.d/jdk.sh
3、tomcat 基础功能
3.1 手动安装tomcat⭐⭐⭐⭐⭐
- 安装JDK
[root@localhost ~]# mkdir /data
[root@localhost ~]# cd /data
[root@localhost data]# ls
apache-tomcat-9.0.16.tar.gz jdk-8u201-linux-x64.rpm //加载两个安装包
[root@localhost data]# rpm -ivh jdk-8u201-linux-x64.rpm //安装JDK包
[root@localhost data]# cd /usr/java/jdk1.8.0_201-amd64/
[root@localhost jdk1.8.0_201-amd64]# vim /etc/profile //添加环境变量
export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$JAVA_HOME/bin:$PATH
[root@localhost jdk1.8.0_201-amd64]# source /etc/profile //刷新配置文件,等价于 ./etc/profile
- 安装tomcat
[root@localhost jdk1.8.0_201-amd64]# cd /data
[root@localhost data]# tar zxvf apache-tomcat-9.0.16.tar.gz
[root@localhost data]# ln -s /data/apache-tomcat-9.0.16 /usr/local/tomcat //软连接,也可以用cp -r命令
[root@localhost data]# cd /usr/local/tomcat/
[root@localhost tomcat]# /usr/local/tomcat/bin/catalina.sh start //启动tomcat
[root@localhost tomcat]# /usr/local/tomcat/bin/catalina.sh stop //关闭tomcat
[root@localhost tomcat]# cd bin/
[root@localhost bin]# useradd -s /sbin/nologin tomcat //新建tomcat用户、不允许登录
[root@localhost bin]# cd /usr/local/
[root@localhost local]# chown tomcat:tomcat tomcat/ -R //修改属主和属组权限
[root@localhost local]# cat > /usr/lib/systemd/system/tomcat.service <<EOF
[Unit]
Description=Tomcat
After=syslog.target network.target
[Service]
Type=forking
ExecStart=/usr/local/tomcat/bin/startup.sh
ExecStop=/usr/local/tomcat/bin/shutdown.sh
RestartSec=3
PrivateTmp=true
User=tomcat
Group=tomcat
[Install]
WantedBy=multi-user.target
EOF
[root@localhost local]# systemctl daemon-reload //重新加载systemd文件
[root@localhost local]# systemctl start tomcat //如果安装错误,前面的步骤不会报错提示,但在这步会起不来!
[root@localhost local]# ss -ntap |grep 8080
- 验证访问
真机访问 192.168.125.130
3.2 tomcat 调优
调优主要分为两部分:
- jvm调优,也就是虚拟机调优
- tomcat自身的调优
共享区域:heap 堆⭐
私有区域:stack 栈
// 把堆和栈放到内存中进行处理后,堆和栈里原本的东西还在,但是已经没用了,成为了垃圾。
回收垃圾注意事项:
- 怎么确定垃圾
- 怎么回收
- 什么时间回收
3.2.1 jvm调优
把内存初始大小,直接调成内存最终大小。
| 参数 | 说明 | 举例 |
|---|---|---|
| -Xms | 设置应用程序初始使用的堆内存大小(年轻代+老年代) | -Xms2g |
| -Xmx | 设置应用程序能获得的最大堆内存早期JVM不建议超过32G,内存管理效率下降 | -Xms4g |
| total | 总计 |
jvm调优要掌握的唯一的一条命令:
修改catalina脚本 第118行:
JAVA_0PTS="-server -Xms128m -Xmx512m -Xx:Newsize=100m -XX:MaxNewsize=200m" //主要就是-Xms和-Xmx
// 修改年轻态、老年态
java是个命令执行程序,后面也可以加选项,选项不是固定的,分为三种类型:
- 标准选项
- 非标准稳定选项
- 非标准不稳定选项
3.3 配置文件
// webapps是主站点,appbase也是主站点。
[root@localhost tomcat]# ls ###/usr/local/tomcat下面的文件夹
apache-tomcat-9.0.16 BUILDING.txt CONTRIBUTING.md LICENSE NOTICE RELEASE-NOTES temp work
bin conf lib logs README.md RUNNING.txt webapps
| 目录名字 | 功能 |
|---|---|
| webapps | 主站点 |
| conf | 配置文件。常用的是 server.xml、context.xml、tomcat-users.xml、web.xml共4个 |
| bin | 二进制程序。存放启动和关闭 Tomcat 的脚本文件,比较常用的是 catalina.sh、startup.sh、shutdown.sh 三个文件 |
| lib | 运行库。存放 Tomcat 服务器的 jar 包,jar包是压缩文件,也就是java程序的压缩包。一般不作任何改动 |
| logs | 日志文件。 catalina.out 较常用 |
| temp | 存放 Tomcat 运行时产生的文件 |
| work | 缓存。Tomcat 工作目录,一般清除 Tomcat 缓存的时候会使用到(升级版本时注意要删除里面的缓存) |
3.3.1 webapps 主站点
[root@localhost tomcat]# cd webapps/ ###/usr/local/tomcat/webapps/下的五个项目
[root@localhost webapps]# ls
docs examples host-manager manager ROOT
主机管理 系统管理 根
注意: 主站点下有5个项目,ROOT项目是默认的!!!必须要大写!!!
3.3.2 conf 主配置和子配置
注意配置文件对于大小写敏感
| 配置文件名 | 文件路径 | 说明 |
|---|---|---|
| server.xml | /usr/local/tomcat/conf/server.xml | 主配置文件,全局生效 |
| web.xml | /usr/local/tomcat/conf/web.xml | 子配置文件,其他项目下,也都有子配置文件 |
| context.xml | __ | 用于定义所有web应用均需加载的Context配置,此文件为所有的webapps提供默认配置,其存放位置为WEB-INF/目录中,覆盖全局的文件 |
| tomcat-users.xml | __ | 用户的配置文件,用户认证的账号和密码文件 |
小拓展:
主站点下的子配置文件: /usr/local/tomcat/webapps/manager/WEB-INF/web.xml
3.3.3 logs 日志文件
主日志:/usr/local/tomcat/logs/catalina.out,可以查看报错信息。
[root@localhost tomcat]# cd logs //查看日志文件,默认自动做日志分割。
[root@localhost logs]# ls
catalina.2024-06-12.log host-manager.2024-06-12.log localhost_access_log.2024-06-12.txt
catalina.out localhost.2024-06-12.log manager.2024-06-12.log
分解:
catalina.2024-06-12.log //tomcat服务日志
catalina.out //tomcat服务日志⭐
host-manager.2024-06-12.log //host manager管理日志,管理调试tomcat产生的日志
localhost.2024-06-12.log //默认主机日志
localhost_access_log.2024-06-12.txt //默认主机访问日志⭐
manager.2024-06-12.log //manager 管理日志
3.4 组件
3.4.1 核心组件
格式:
<server> //1层
<service> //2层
<engine> //3层
<host> //4层
<context> //5层
</context> //5层
</host> //4层
</engine> //3层
</service> //2层
</server> //1层
- server:类似于主进程(说法不严谨,但是便于理解…)
- service:类似子进程,子进程可以有多个,也可以只有一个。不同的是,service也不用干活。一个service里可以有多个连接器。端口号有三个,分别是8080、8005、8009。
- 8080:http协议 请求的接口。比如nginx和apache之间 用的是http协议。
- 8005:tomcat管理端口,这个端口很危险,但是不能关闭,只能修改。建议把端口修改成-1,意思是无效端口。如果改成0,就是随机端口。
```js
vim /usr/local/tomcat/conf/server.xml //主配置文件
<Server port="8005" shutdown="SHUTDOWN">
***有下面几种修改方法:
1、shutdown="gajfashfuwjdjhkhfjsahfjsf" //改成乱码
2、port="0" //随机端口
3、port="-1" //无效端口
```
- 8009:AJP协议 专用接口,基本不用,因为这个协议有漏洞。
-
connector:连接器,相当于连接起了service和engine,主要作用是接收用户请求。
-
engine引擎:处理用户的请求。没有指定,就走默认的虚拟主机,比如localhost
<Engine name="Catalina" defaultHost="localhost"> //默认的localhost -
host:交给哪个虚拟主机处理请求,如果没有指定,就默认为localhost。
示例: <Host name="www.a.com" appBase="/data/web1" unpackWARs="true" autoDeploy="true"> </Host> 虚拟主机域名 虚拟主机主站点 自动解压 自动部署 //注意:自动解压和自动部署,与下面3.5章节的jar包有关。 -
context:基础配置,类似于优化配置。
<Context path="/test" docBase="/data/test" reloadable="false" /> PATH等于alias别名 是否可以重新加载 -
最后web应用里的servlet 、jsp、html:用servlet生成动态资源,交给jsp,jsp再将动态资源镶嵌到html静态页面中。
3.4.2 ROOT 默认项目⭐⭐
主站点下有5个项目,当没有指明项目时,默认的项目是ROOT
因为ROOT是默认的,所以ROOT可以省略!!!但 其他项目不可以省略!!!
ROOT下的index.jsp是默认的动态网页!!!
默认网页的位置:
/usr/local/tomcat/webapps/ROOT/index.jsp
示例:
访问/usr/local/tomcat/webapps/ROOT/index.jsp 等价于 192.168.125.130:8080 //真机访问无需加ROOT
访问/usr/local/tomcat/webapps/docs/index.jsp 等价于 192.168.125.130:8080/docs/ //其他项目,必须要加名字
访问tomcat动态网页,必须要加端口号!!!
3.4.3 主页文件 优先级
- index.html
- index.htm
- index.jsp
vim /usr/local/tomcat/conf/web.xml //该子配置最下面(G),定义了优先级
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
复制文件,注意修改权限:⭐⭐
chown -R tomcat:tomcat 文件夹名/
3.5 实现java项目
.war:WebApp打包,类zip格式文件.jar:EJB类文件的打包压缩类zip格式文件.rar:资源适配器类打包文件,目前已不常用.ear:企业级WebApp打包,目前已不常用
3.5.1 手动部署jar包
语法格式:
jar cvf /opt/app1.war *
命令 选项 压缩包名字 要压缩的文件(*代表所有)
示例:
[root@localhost ~]# cd /opt
[root@localhost opt]# mkdir app1
[root@localhost opt]# vim abc.html
[root@localhost opt]# vim xyz.jsp
[root@localhost opt]# cd app1
[root@localhost app1]# ls
abc.html xyz.jsp
[root@localhost app1]# jar cvf app1.war * //把整个app1文件打包
已添加清单
正在添加: abc.html(输入 = 12) (输出 = 9)(压缩了 25%)
正在添加: xyz.jsp(输入 = 12) (输出 = 9)(压缩了 25%)
[root@localhost app1]# ls
abc.html app1.war xyz.jsp
[root@localhost app1]# cp app1.war /usr/local/tomcat/webapps //把压缩包拷贝到主站点
[root@localhost app1]# cd /usr/local/tomcat/webapps
[root@localhost webapps]# ls
app1 app1.war docs examples host-manager manager ROOT //压缩包已放入主站点,并且会自动解压!
[root@localhost webapps]# cd app1
[root@localhost app1]# ls
abc.html META-INF xyz.jsp
3.5.2 搭建博客
[root@localhost ~]# cd /usr/local/tomcat/webapps
*********加载jpress博客********
[root@localhost webapps]# ln -s jpress-v3.2.1 jpress
[root@localhost webapps]# cat >/etc/yum.repos.d/mysql.repo <<EOF
[mysql57-community]
name=MySQL 5.7 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/x86_64/
enabled=1
gpgcheck=0
EOF
[root@localhost webapps]# yum -y install mysql-community-server //安装mysql软件
[root@localhost webapps]# systemctl start mysqld
[root@localhost webapps]# ss -ntap |grep 3306 //mysql端口号是3306
[root@localhost webapps]# grep password /var/log/mysqld.log //查看密码
[root@localhost webapps]# mysql -u root -p"e>&;LGtZ1m<%"
mysql> set global validate_password_policy=0;
mysql> set global validate_password_length=1;
//修改密码策略
mysql> alter user root@'localhost' identified by 'abc123';
mysql> mysql> mysql> CREATE DATABASE blog; //数据库名称blog
mysql> mysql> GRANT all ON blog.* TO 'bloguser'@'%' IDENTIFIED BY 'admin123'; //数据库用户名bloguser
mysql> GRANT all ON blog.* TO 'bloguser'@'localhost' IDENTIFIED BY 'admin123'; //数据库密码abc123
mysql> flush privileges;
真机访问:192.168.125.130:8080/jpress 不要忘加端口号!!!
3.6 状态页
server status状态页manager app管理项目host manager配置虚拟主机的设置
前两个:server status 和 manager app,属于manager项目下的功能;
第三个:host manager,属于host-manager项目下的功能。
3.6.1 server status
3.6.1.1 如何访问server status状态页?
server status 权限非常大,为了安全考虑,默认不允许远程登录,只能本地登录!!!
添加角色:manager-gui
vim /usr/local/tomcat/conf/tomcat-users.xml //查看最后面(G)
<role rolename="manager-gui"/> //manager-gui是规定的角色名字,不能更改!
<user username="abc" password="xyz" roles="manager-gui"/> //名称和密码可以自定义,但是roles必须与上面一致!
systemctl restart tomcat //重启tomcat
本地登录方法: 虚拟机中,打开火狐浏览器,访问127.0.0.1:8080,输入用户名abc、密码xyz,即可登录成功。
3.6.1.2 远程登录 server status状态页
[root@localhost ~]# cd /usr/local/tomcat/webapps/manager/META-INF //属于manager项目下
[root@localhost META-INF]# vim context.xml
allow="192\d+.\d+.\d+|127.\d+.\d+.\d+|::1|0:0:0:0:0:0:0:1" /> //添加192段
[root@localhost META-INF]# systemctl restart tomcat
//通过上述设置,就可在浏览器中,远程登录状态页!
注意:这个行为十分危险!!!不建议开启远程登录!!!
3.6.2 manager app 管理项目
以jpress博客 为例:
如果点击 关闭stop,则真机访问就会报错:
通过manager app,采用可视化方法,对软件、项目等进行管理和部署。
3.6.3 host manager 管理主机
- 添加角色:
admin-gui
[root@localhost ~]# vim /usr/local/tomcat/conf/tomcat-users.xml //查看最后面(G)
<role rolename="manager-gui"/>
<role rolename="admin-gui"/> //新增admin-gui
<user username="abc" password="xyz" roles="manager-gui,admin-gui"/> //两个角色之间,用逗号隔开
[root@localhost ~]# systemctl restart tomcat
- 设置 host-manager 项目
[root@localhost ~]# vim /usr/local/tomcat/webapps/host-manager/META-INF/context.xml
allow="192.\d+.\d+.\d+|127.\d+.\d+.\d+|::1|0:0:0:0:0:0:0:1" /> //同样添加192段
[root@localhost ~]# systemctl restart tomcat
4、虚拟主机(实验一)
实验目的:在一台服务器上,新增两个域名 www.abc.com、www.xyz.com,通过不同域名 访问不同的项目内容。
实验环境:7-3 192.168.125.130
- 新建文件夹
[root@7-3 ~]# cd /data
[root@7-3 data]# ls
[root@7-3 data]# mkdir -pv web{1,2,3}/ROOT/ //新建6个文件夹
[root@7-3 data]# tree
.
├── web1
│ └── ROOT
├── web2
│ └── ROOT
└── web3
└── ROOT
6 directories, 0 files
- 创建页面
[root@7-3 data]# echo "web1" > /data/web1/ROOT/index.jsp
[root@7-3 data]# echo "web2" > /data/web2/ROOT/index.jsp
[root@7-3 data]# echo "web3" > /data/web3/ROOT/index.jsp
[root@7-3 data]# tree
.
├── web1
│ └── ROOT
│ └── index.jsp
├── web2
│ └── ROOT
│ └── index.jsp
└── web3
└── ROOT
└── index.jsp
6 directories, 3 files
[root@7-3 data]# chown -R tomcat:tomcat /data/ //修改文件的属主、属组
- 修改主配置文件
[root@7-3 data]# vim /usr/local/tomcat/conf/server.xml //改主配置
*********复制第148、149行*********
165 <Host name="www.a.com" appBase="/data/web1"
166 unpackWARs="true" autoDeploy="true">
167 </Host>
168 <Host name="www.b.com" appBase="/data/web2"
169 unpackWARs="true" autoDeploy="true">
170 </Host>
171 <Host name="www.c.com" appBase="/data/web3"
172 unpackWARs="true" autoDeploy="true">
[root@7-3 data]# systemctl restart tomcat //启软件
- 用7-2验证
[root@7-2 ~]# vim /etc/hosts
192.168.125.130 www.a.com www.b.com www.c.com
[root@7-2 ~]# curl www.a.com:8080
web1
[root@7-2 ~]# curl www.b.com:8080
web2
[root@7-2 ~]# curl www.c.com:8080
web3
小拓展: localhost 托底页面
[root@7-2 ~]# curl 192.168.125.130:8080 //如果访问的是ip地址,那么默认访问的就是下面的localhost页面,这也是托底的页面!
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
5、context 配置
Context作用:
- 路径映射:将url映射至指定路径,而非使用appBase下的物理目录,实现虚拟目录功能
- 应用独立配置,例如:单独配置应用日志、单独配置应用访问控制
指令说明:
path:指的是访问的URL路径,如果path与appBase下面的子目录同名,context的docBase路径优先级更高!docBase:可以是磁盘文件的绝对路径,也可以是相对路径(相对于Host的appBase)reloadable:true表示如果.class文件(字节码)有改动,就会重新加载配置文件。生产环境中,建议使用false来禁用。
示例:
7-3:
[root@7-3 data]# vim /usr/local/tomcat/conf/server.xml //改主配置
<Host name="www.a.com" appBase="/data/web1"
unpackWARs="true" autoDeploy="true">
<Context path="/test" docBase="/data/test" reloadable="false" /> //新加一行,PATH相当于别名。意思是,当访问www.a.com/test/,那么就替换成 /data/test
</Host>
[root@7-3 data]# mkdir test //PATH置换,后面不需要加ROOT
[root@7-3 data]# cd test
[root@7-3 test]# echo "hello" > index.jsp
[root@7-3 data]# chown -R tomcat:tomcat /data/ //修改权限
[root@7-3 data]# ll
总用量 0
drwxr-xr-x. 2 tomcat tomcat 23 6月 16 17:57 test
drwxr-xr-x. 3 tomcat tomcat 18 6月 16 17:10 web1
drwxr-xr-x. 3 tomcat tomcat 18 6月 16 17:10 web2
drwxr-xr-x. 3 tomcat tomcat 18 6月 16 17:10 web3
7-2:
[root@7-2 ~]# curl www.a.com:8080/test/ //注意:一定要加端口号和最后的/斜杠
hello
6、tomcat+nginx 动静分离
6.1 单机反向代理
实验环境:
| 类型 | 名称 | ip |
|---|---|---|
| 客户机 | 7-1 | 192.168.125.100 |
| 代理服务器 | 7-2 | 192.168.125.120 |
| 真实服务器 | 7-3 | 192.168.125.130 |
实验目的:无论客户机访问的是www.a.com或者www.b.com或者www.c.com,都统一交给www.a.com进行处理。
7-3:
`新建网页:`
[root@7-3 ~]# cd /usr/local/tomcat/webapps/ROOT/
[root@7-3 ROOT]# mv index.jsp index.jsp.bak
[root@7-3 ROOT]# echo "7-3 7-3 tomcat" > index.jsp
[root@7-3 ROOT]# cat index.jsp
7-3 7-3 tomcat
`新建虚拟主机:`
[root@7-3 ~]# vim /usr/local/tomcat/conf/server.xml
*********复制第148、149行*********
165 <Host name="www.a.com" appBase="/opt/web1"
166 unpackWARs="true" autoDeploy="true">
167 </Host>
168 <Host name="www.b.com" appBase="/opt/web2"
169 unpackWARs="true" autoDeploy="true">
170 </Host>
171 <Host name="www.c.com" appBase="/opt/web3"
172 unpackWARs="true" autoDeploy="true">
173 </Host>
`创建页面:`
[root@7-3 ~]# cd /opt
[root@7-3 opt]# mkdir -pv web{1,2,3}/ROOT/ //创建文件夹和页面
[root@7-3 opt]# echo "web111" > /opt/web1/ROOT/index.jsp
[root@7-3 opt]# echo "web222" > /opt/web2/ROOT/index.jsp
[root@7-3 opt]# echo "web333" > /opt/web3/ROOT/index.jsp
[root@7-3 opt]# chown -R tomcat:tomcat /opt/ //修改权限
[root@7-3 ~]# systemctl restart tomcat //重启
7-2:
`设置DNS域名:`
[root@7-2 ~]# vim /etc/hosts
192.168.125.130 www.a.com www.b.com www.c.com
[root@7-2 ~]# systemctl stop firewalld
[root@7-2 ~]# setenforce 0
[root@7-2 ~]# yum install epel-release.noarch -y
[root@7-2 ~]# yum install nginx -y
[root@7-2 ~]# systemctl start nginx //安装软件
`反向代理:`
[root@7-2 ~]# vim /etc/nginx/nginx.conf
location / {
proxy_pass http://www.a.com:8080; //注意:一定要先在hosts中新增域名,反向代理中的域名才不会报错!
}
[root@7-2 ~]# nginx -t
[root@7-2 ~]# nginx -s reload
[root@7-1 ~]# vim /etc/hosts
192.168.125.120 www.a.com www.b.com www.c.com //注意:ip是代理服务器的,与7-2不一样⭐
[root@7-1 ~]# curl www.a.com //注意:域名后面不能加端口号,因为客户机访问的是代理,代理是nginx!
web111
[root@7-1 ~]# curl www.b.com
web111
[root@7-1 ~]# curl www.c.com
web111
6.2 多机反向代理(负载均衡)
实验环境:
7-1 客户机 192.168.125.100
7-3 真实服务器 192.168.125.130 tomcat
7-4 代理服务器 192.168.125.140 nginx
7-5 真实服务器 192.168.125.150 tomcat
实验目的:
7-5:
[root@7-5 ~]# systemctl stop firewalld
[root@7-5 ~]# setenforce 0
[root@7-5 ~]# cd /usr/local/tomcat/webapps/ROOT/
[root@7-5 ROOT]# mv index.jsp index.jsp.bak
[root@7-5 ROOT]# echo "this is 7-5" > index.jsp
7-3:
[root@7-3 ~]# systemctl stop firewalld
[root@7-3 ~]# setenforce 0
[root@7-3 ~]# cd /usr/local/tomcat/webapps/ROOT/
[root@7-3 ROOT]# mv index.jsp index.jsp.bak
[root@7-3 ROOT]# echo "this is 7-3 7-3" > index.jsp
7-4:
[root@localhost ~]# vim /etc/nginx/nginx.conf
`负载均衡:`
http语句块:
upstream tomcat {
server 192.168.125.130:8080;
server 192.168.125.150:8080;
}
`反向代理:`
server语句块:
location / {
proxy_pass http://tomcat;
}
[root@localhost ~]# nginx -t
[root@localhost ~]# nginx -s reload
7-1:验证
[root@7-1 ~]# curl 192.168.125.140/index.jsp
this is 7-3 7-3
[root@7-1 ~]# curl 192.168.125.140/index.jsp
this is 7-5
6.3 多机 多级 反向代理
实验环境:
7-1 既是客户端,也是代理服务器 192.168.125.100 nginx
7-2 192.168.125.120 nginx —— 7-3 192.168.125.130 tomcat
7-4 192.168.125.140 nginx —— 7-5 192.168.125.150 tomcat
实验目的: 7-1 反向代理、负载均衡;7-2和7-3、7-4和7-5动静分离
- 设置反向代理和负载均衡
7-1:代理服务器
[root@7-1 ~]# systemctl stop firewalld
[root@7-1 ~]# setenforce 0
[root@7-1 ~]# vim /apps/nginx/conf/nginx.conf
http语句块:负载均衡
upstream web {
server 192.168.125.120;
server 192.168.125.140;
}
server语句块:反向代理
location / {
proxy_pass http://web;
}
[root@7-1 ~]# nginx -t
[root@7-1 ~]# nginx -s reload
- 在yum安装的nginx下,设置动静分离
7-2: yum安装的nginx
[root@7-2 ~]# systemctl restart nginx
[root@7-2 ~]# vim /etc/nginx/nginx.conf
server语句块:动静分离
location ~ .jsp$ {
proxy_pass http://192.168.125.130:8080; //tomcat记得加8080端口
}
location ~ .(jpg|png|html)$ {
root /usr/share/nginx/html;
}
[root@7-2 ~]# nginx -t
[root@7-2 ~]# nginx -s reload
准备网页:
[root@7-2 ~]# cd /usr/share/nginx/html
[root@7-2 html]# echo "7-2 nginx" > index.html
- 在编译安装的nginx下,设置动静分离
7-4: 编译安装的nginx
[root@7-4 ~]# systemctl restart nginx
[root@7-4 ~]# vim /apps/nginx/conf.d/pc.conf
server语句块:动静分离
server {
listen 80;
server_name www.pc.com;
root /data/html;
location ~ .jsp$ {
proxy_pass http://192.168.125.150:8080;
}
location ~ .(jpg|png|html)$ {
root /data/html;
}
}
[root@7-4 ~]# nginx -t
[root@7-4 ~]# nginx -s reload
准备网页:
[root@7-4 ~]# mkdir -p /data/html
[root@7-4 ~]# cd /data/html
[root@7-4 html]# echo "7-4 7-4 nginx" > index.html
- 准备tomcat网页,如果不想加项目,必须放到默认的ROOT下面。
7-3: tomcat
[root@7-3 ~]# cd /usr/local/tomcat/webapps/ROOT //默认网页存放路径
[root@7-3 ROOT]# mv index.jsp index.jsp.bak
[root@7-3 ROOT]# echo "7-3 tomcat" > index.jsp
7-5: tomcat
[root@7-5 ~]# cd /usr/local/tomcat/webapps/ROOT
[root@7-5 ROOT]# mv index.jsp index.jsp.bak
[root@7-5 ROOT]# echo "7-5 7-5 tomcat" > index.jsp
- 客户端验证
7-1:
[root@7-1 conf]# curl 192.168.125.100/index.html
7-4 7-4 nginx
[root@7-1 conf]# curl 192.168.125.100/index.html
7-2 nginx
[root@7-1 conf]# curl 192.168.125.100/index.jsp
7-3 tomcat
[root@7-1 conf]# curl 192.168.125.100/index.jsp
7-5 7-5 tomcat