zoukankan      html  css  js  c++  java
  • 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服务器上,再测试

     

     

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

  • 相关阅读:
    php底层HashTable的实现
    【问底】徐汉彬:PHP7和HHVM的性能之争
    linux查找系统中占用磁盘空间最大的文件
    深入理解Yii2.0(yii学习的经典博客)
    梦想天空(关注前端开发技术 html5+css3)
    风雪之隅(Laruence PHP开发组成员, Zend兼职顾问, Yaf, Yar, Yac, Opcache等项目作者、维护者.)
    阿里云收集服务器性能指标的python脚本
    简单5步,释放Mac磁盘空间
    我是如何自学Android,资料分享(2015 版)
    查询tensorflow中的函数用法
  • 原文地址:https://www.cnblogs.com/xuhao0705/p/13843079.html
Copyright © 2011-2022 走看看