简单介绍和部署Tomcat

一、Tomcat核心组件

 二、Tomcat处理请求过程

 

server:tomcat实例  注意:一个JVM(Java虚拟机)只能有一个tomcat实例

service:接收请求到处理请求的所有组件的集合

service组件分为connector(连接器)和container(容器)两部分

connector负责接受用户请求和消息报文的,将消息报文发往container

engine:是一个容器,是用来将用户的请求发往它下面的虚拟主机的,engine是加载虚拟主机的一个容器 

host:是虚拟主机的容器

content:管理servlet

servlet:是支持Java语言的组件

详细的解释:https://www.cnblogs.com/haimishasha/p/10740606.html

三、Tomcat部署步骤

3.1、将需要配置的软件包上传到服务器上,配置Java环境

1 ll
2 tar zxf jdk-8u91-linux-x64.tar.gz -C /opt
3 mv /opt/jdk1.8.0_91/ /usr/local/java
4 cd /etc/profile.d
5 vim java.sh
6 export JAVA_HOME=/usr/local/java            #设置Java根目录
7 export PATH=$PATH:$JAVA_HOME/bin        #在PATH环境变量中添加Java根目录下的bin子目录
8 source java.sh             #Java.sh脚本导入到环境变量,使其生效
9 java -version             #查看版本

3.2、写个Java小程序,测试是否可以正常工作

1 vi a.java
2 public class a {
3         public static void main (String[] args) {
4                 System.out.println("你好,世界!!!");
5         }
6 }
7 javac a.java          #执行,编译成功后生成可执行文件
8 java a                   #测试,原样输出则为成功
9 你好,世界!!!

3.3、安装tomcat

1 tar zxf apache-tomcat-8.5.16.tar.gz -C /opt
2 mv apache-tomcat-8.5.16/ /usr/local/tomcat8
3 /usr/local/tomcat8/bin/startup.sh             #启动tomcat
4 netstat -anpt | grep 8080                         #查看端口开启状态
5 tcp6       0      0 :::8080                 :::*                    LI      53903/java                                             #端口开启成功状态
6 /usr/local/tomcat8/bin/shutdown.sh           #关闭tomcat
7 ln -s /usr/local/tomcat8/bin/startup.sh /usr/bin/tomcatup      #创建软链接,优化开启命令
8 ln -s /usr/local/tomcat8/bin/shutdown.sh /usr/bin/tomcatdown   #创建软链接,优化关闭命令

3.4、加入测试页面,编辑配置文件并测试

 1 mkdir -p /web/webapp1
 2 vi /web/webapp1/index.jsp
 3 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
 4 <html>
 5 <head>
 6 <title>JSP test1 page</title></head>
 7 <body><% out.println("welcome to test site");%>
 8 <div>动态页面</div>
 9 <img src="a.jpg" />
10 </body>
11 </html>
12 #这个jsp中引入的page标签
13 #language表示语言是Java
14 #import类似于Java类中的import就是把包导入进来,这样在jsp才可以调用包中的类
15 #pageEncoding表示页面的编码格式
1 tomcatdown
2 vi /usr/local/tomcat8/conf/server.xml
3 <Host name="localhost"  appBase="webapps"
4            unpackWARs="true" autoDeploy="true">
5       <Context docBase="/web/webapp1" path="" reloadable="false"></Context>   #添加
6 tomcatup
7 netstat -anpt | grep 8080

3.5、再配置一台tomcat并测试

 1 ll
 2 tar zxf jdk-8u91-linux-x64.tar.gz -C /opt
 3 mv /opt/jdk1.8.0_91/ /usr/local/java
 4 cd /etc/profile.d
 5 vim java.sh
 6 export JAVA_HOME=/usr/local/java            #设置Java根目录
 7 export PATH=$PATH:$JAVA_HOME/bin        #在PATH环境变量中添加Java根目录下的bin子目录
 8 source java.sh             #Java.sh脚本导入到环境变量,使其生效
 9 java -version             #查看版本
10 vi a.java
11 public class a {
12         public static void main (String[] args) {
13                 System.out.println("你好,世界!!!");
14         }
15 }
16 javac a.java          #执行,编译成功后生成可执行文件
17 java a                   #测试,原样输出则为成功
18 你好,世界!!!
19 tar zxf apache-tomcat-8.5.16.tar.gz -C /opt
20 mv apache-tomcat-8.5.16/ /usr/local/tomcat8
21 /usr/local/tomcat8/bin/startup.sh             #启动tomcat
22 netstat -anpt | grep 8080                         #查看端口开启状态
23 tcp6       0      0 :::8080                 :::*                    LI      53903/java                                             #端口开启成功状态
24 /usr/local/tomcat8/bin/shutdown.sh           #关闭tomcat
25 ln -s /usr/local/tomcat8/bin/startup.sh /usr/bin/tomcatup      #创建软链接,优化开启命令
26 ln -s /usr/local/tomcat8/bin/shutdown.sh /usr/bin/tomcatdown   #创建软链接,优化关闭命令
27 mkdir -p /web/webapp2
28 vi /web/webapp2/index.jsp
29 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
30 <html>
31 <head>
32 <title>JSP test2 page</title></head>
33 <body><% out.println("welcome to test site");%>
34 <div>动态页面</div>
35 <img src="b.jpg" />
36 </body>
37 </html>
38 #这个jsp中引入的page标签
39 #language表示语言是Java
40 #import类似于Java类中的import就是把包导入进来,这样在jsp才可以调用包中的类
41 #pageEncoding表示页面的编码格式
42 tomcatdown
43 vi /usr/local/tomcat8/conf/server.xml
44 <Host name="localhost"  appBase="webapps"
45           unpackWARs="true" autoDeploy="true">
46      <Context docBase="/web/webapp2" path="" reloadable="false"></Context>   #添加
47 tomcatup
48 netstat -anpt | grep 8080

3.6、tomcat虚拟主机的设置(基于域名,基于端口)

3.6.1、基于域名

 1 vi /usr/local/tomcat8/conf/server.xml
 2  <Host name="www.aaa.com"  appBase="webapps"
 3             unpackWARs="true" autoDeploy="true">
 4       <Context docBase="/web/webapp1" path="" reloadable="false"></Context>
 5 省略部分内容
 6  </Host>
 7       <Host name="www.bbb.com"  appBase="webapps"   #添加
 8             unpackWARs="true" autoDeploy="true">             #添加
 9       <Context docBase="/web/webapp1" path=""
10 reloadable="false"></Context>                                        #添加
11       </Host>                                                   #添加
12 tomcatdown
13 tomcatup

 

3.6.2、基于端口

 1 vi /usr/local/tomcat8/conf/server.xml
 2 <Service name="Catalina">
 3      <Connector port="8081" protocol="HTTP/1.1"
 4                      connectionTimeout="20000"
 5                      redirectPort="8443" />
 6             <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">
 7             <Host name="www.aaa.com" appBase="webapps"
 8             unpackWARs="true" autoDeploy="true">
 9       <Context docBase="/web/webapp1" path="" reloadable="false"></Context>
10             </Host>
11             </Engine>
12 </Service>                   #再/Server前面添加
13 </Server>
14 
15 tomcatdown
16 tomcatup
17 netstat -anpt | grep 8080
18 netstat -anpt | grep 8081

 

3.7、再配置一台Nginx的服务器做动静分离

 1 yum -y install pcre-devel zlib-devel openssl-devel gcc gcc-c++ 
 2 tar zxf nginx-1.6.0.tar.gz -C /opt
 3 cd /opt/nginx-1.6.0/
 4 ./configure \
 5 --prefix=/usr/local/nginx \
 6 --user=nginx \
 7 --group=nginx \
 8 --with-file-aio \                                  #同时提交多个io请求给内核
 9 --with-http_stub_status_module \        #状态统计
10 --with-http_gzip_static_module \       
11 --with-http_flv_module \                  #支持对FLV(flash)文件的拖动播放
12 --with-http_ssl_module                    #支持安全证书
13 
14  make && make install
15 
16 useradd -M -s /sbin/nologin nginx
17 vim /usr/local/nginx/conf/nginx.conf
18  upstream tomcat_server {
19                server 20.0.0.10:8080 weight=1;
20                server 20.0.0.20:8080 weight=1;
21              }                   #添加
22     server {
23         listen       80;
24         server_name  localhost;
25 
26         #charset koi8-r;
27 
28         #access_log  logs/host.access.log  main;
29 
30         location / {
31             root   html;
32             index  index.html index.htm;
33         }
34         location ~ \.jsp$ {                         #添加
35                   proxy_pass http://tomcat_server;
36          }
37 nginx -t
38 killall -3 nginx
39 nginx
40 netstat -anpt | grep nginx

 

3.8、图片无法显示,因为访问的是20.0.0.30里面的图片,将图片放到20.0.0.30服务器上,再测试

 

 

 总结:从抓包软件可以看出,图片是顺序访问的,所以网站也是循环往复的进行访问的