简单介绍和部署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服务器上,再测试
总结:从抓包软件可以看出,图片是顺序访问的,所以网站也是循环往复的进行访问的