TOMCAT

概念

tomcat和php一样,都是用来处理动态页面的。tomcat也可以作为web应用服务器,它是开源的。

它处理的是以.jsp为结尾的文件。tomcat是用java代码写的程序,运行的是java的web应用程序。

tomcat的特点和功能

1.servlet容器 :执行java的servlet,它是服务端的java程序,用来处理客户端的http请求,以及响应

2.jsp容器:javasever page,这是一种动态页面的技术,可以在html的页面里面嵌入java代码

3.自身也是一个http服务器

4.tomcat是一个轻量级的动态页面处理程序,高并发场景不适用

它主要是优化,tomcat自身的优化以及系统的内核优化和jvm优化

servlet:是Java语言当中开发web应用程序的关键组件。功能:处理http请求,生成动态内容以及响应客户端的请求,处理java的业务逻辑,进行会话管理。可以保持用户的状态信息,购物车同步,用户登录等等,也可以转发nginx的动态请求到数据库。

jsp:web应用程序的界面,这个界面的语言是用Java实现的。是以.jsp为结尾的文件(index.jsp)

tomcat的组件

connector:负责对外接受和响应请求,它是tomcat与客户端沟通的一个枢纽。监听端口接受外界请求。它默认端口是8080。接受到了请求之后,传递给其他组件进行处理,处理完成之后回到connector,再响应客户端

container:负责处理业务逻辑,它是由engine host context wrapper四个功能组成

engine:可以用来管理多个虚拟主机,一个service只能有一个engine

host:一个host就是一个主机,也可以叫站点,通过配置host,可以添加多个站点

context:一个context代表一个web应用

wrapper:它是封装器,负责处理最底层的逻辑

service:对外提供外部服务,包含connector和container

tomcat可以有多个service。每个service之间互相是独立的

安装TOMCAT

推荐从Apache官网下载源码包直接安装启动

1.安装java环境

#安装java环境
[root@tomcat ~]# yum install java-1.8.0-openjdk.x86_64 -y
#查看java版本
[root@tomcatA ~]# java -version
openjdk version "1.8.0_402"
OpenJDK Runtime Environment (build 1.8.0_402-b06)
OpenJDK 64-Bit Server VM (build 25.402-b06, mixed mode)
#查看java的环境目录
[root@tomcatA ~]# which java
/usr/bin/java
[root@tomcatA ~]# ll /usr/bin/java
lrwxrwxrwx 1 root root 22 Jul 30 10:41 /usr/bin/java -> /etc/alternatives/java
#java的运行环境
[root@tomcatA ~]# cd /etc/alternatives/jre
[root@tomcatA jre]# ls
ASSEMBLY_EXCEPTION bin lib LICENSE THIRD_PARTY_README

2.安装并启动tomcat

#解压并生成tomcat的程序目录
[root@tomcatA ~]# tar zxf apache-tomcat-9.0.107.tar.gz -C /usr/local/
[root@tomcatA ~]# cd /usr/local/
[root@tomcatA local]# ls
apache-tomcat-9.0.107 bin etc games include lib lib64 libexec sbin share 
src
[root@tomcatA local]# mv apache-tomcat-9.0.107/ tomcat
[root@tomcatA local]# ls
bin etc games include lib lib64 libexec sbin share src tomcat
#启动tomcat
[root@tomcatA local]# cd tomcat/
[root@tomcatA tomcat]# cd bin/
[root@tomcatA bin]# ls
bootstrap.jar       commons-daemon-native.tar.gz makebase.sh       tomcat-juli.jar
catalina.bat
      configtest.bat               setclasspath.bat tomcat-native.tar.gz
catalina.sh
        configtest.sh                 setclasspath.sh   tool-wrapper.bat
catalina-tasks.xml
daemon.sh                     shutdown.bat     tool-wrapper.sh
ciphers.bat
        digest.bat                   shutdown.sh       version.bat
ciphers.sh         digest.sh                     startup.bat       version.sh
commons-daemon.jar makebase.bat                 startup.sh
[root@tomcatA bin]# ./startup.sh
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:       /usr
Using CLASSPATH:       
/usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.

3.查看端口

[root@tomcat ~]# netstat -antlupe | grep java
tcp6       0      0 :::8080                 :::*                   LISTEN      0 
         68636      32887/java

4.访问tomcat

tomcat的文件结构和组成

目录结构

目录   说明
-------------------------------------------------------
bin 服务启动、停止等相关程序和文件
conf 配置文件
lib   库目录
logs 日志目录
webapps 应用程序,应用部署目录,相当于nginx的默认发布目录
work jsp 编译后的结果文件,建议提前预热访问

查看tomcat相关目录和文件

[root@tomcat ~]# ls /usr/local/tomcat/
bin           conf             lib     logs   README.md     RUNNING.txt 
webapps
BUILDING.txt CONTRIBUTING.md LICENSE NOTICE RELEASE-NOTES temp         work

生成tomcat的启动文件

1.生成tomcat的主配置文件

[root@tomcat ~]# vim /usr/local/tomcat/conf/tomcat.conf
JAVA_HOME=/etc/alternatives/jre

2.生成启动文件

[root@tomcat ~]# vim /lib/systemd/system/tomcat.service
[Unit]
Description=Tomcat
#After=syslog.target network.target remote-fs.target nss-lookup.target
After=syslog.target network.target
[Service]
Type=forking
EnvironmentFile=/usr/local/tomcat/conf/tomcat.conf
ExecStart=/usr/local/tomcat/bin/startup.sh
ExecStop=/usr/local/tomcat/bin/shutdown.sh
PrivateTmp=true
User=tomcat
Group=tomcat
[Install]
WantedBy=multi-user.target

3.生成tomcat用户并设定软件安装目录权限

[root@tomcatB bin]# useradd -s /sbin/nologin -M tomcat
[root@tomcatB bin]# chown tomcat.tomcat /usr/local/tomcat/ -R

4.用启动脚本开启服务

[root@tomcatB ~]# systemctl enable --now tomcat

结合反向代理实现tomcat部署

standalone模式,Tomcat单独运行,直接接受用户的请求,不推荐。

反向代理,单机运行,提供了一个Nginx作为反向代理,可以做到静态由nginx提供响应,动态jsp代 理给Tomcat LNMT:Linux + Nginx + MySQL + Tomcat LAMT:Linux + Apache(Httpd)+ MySQL + Tomcat

前置一台Nginx,给多台Tomcat实例做反向代理和负载均衡调度,Tomcat上部署的纯动态页面更 适合 LNMT:Linux + Nginx + MySQL + Tomcat

多级代理 LNNMT:Linux + Nginx + Nginx + MySQL + Tomcat

利用 nginx 反向代理实现

利用nginx反向代理功能,实现图中的代理功能,将用户请求全部转发至指定的同一个tomcat主机 利用nginx指令proxy_pass 可以向后端服务器转发请求报文,并且在转发时会保留客户端的请求报文中的 host首部

[root@Nginx ~]# vim /usr/local/nginx/conf.d/vhosts.conf
   location ~ \.jsp$ {
       proxy_pass http://172.25.254.10:8080;
   }

测试: 在浏览器中访问信息

lee.timinglee.org/test.jsp

实现tomcat中的负载均衡

动态服务器的问题,往往就是并发能力太弱,往往需要多台动态服务器一起提供服务。如何把并发的压 力分摊,这就需要调度,采用一定的调度策略,将请求分发给不同的服务器,这就是Load Balance负载 均衡。

当单机Tomcat,演化出多机多级部署的时候,一个问题便凸显出来,这就是Session。而这个问题的由 来,都是由于HTTP协议在设计之初没有想到未来的发展

tomcat负载均衡实现

[root@Nginx ~]# vim /usr/local/nginx/conf.d/vhosts.conf
upstream tomcat {
   #ip_bash;
   #hash $cookie_JSESSIONID;
   server 172.25.254.10:8080;
   server 172.25.254.20:8080;
}
server {
   listen 80;
   server_name lee.timinglee.org;
   root /webdataw/nginx/timinglee.org/lee;
   access_log /var/log/nginx/access.log;
   error_log /var/log/nginx/error.log;
   try_files $uri $uri.html $uri/index.html /error/default.html;
   location ~ \.jsp$ {
       proxy_pass http://tomcat;
   }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值