JSP运行流程:
JSP->jasper->servlet->compile ->bytecodes -> jvm
Tomcat: jws(sun)+Jserv(ASF)
Tomcat: jdk + tomcat
Tomcat: server.xml (核心配置文件)
Server,service,connector,engine,host,context
部署:
将一个运用程序需要的类以及自己需要的类装载到JVM虚拟机上叫做部署
运行时区域内存:
堆,栈,本地方法栈
查看tomcat所有的rpm包:
#yumlist all | grep tomcat
Jdk1.6使用得最多
Jdk1.7 使用不是很多
Jdk1.8不是很多用户 ELK Stack 只能运行于1.8之上
[root@node121 ~]# yum list all | grep tomcat
apache-tomcat-apis.noarch 0.1-1.el6 @base
tomcat.noarch 7.0.75-1.el6 @epel
tomcat-admin-webapps.noarch 7.0.75-1.el6 @epel
tomcat-docs-webapp.noarch 7.0.75-1.el6 @epel
tomcat-el-2.2-api.noarch 7.0.75-1.el6 @epel
tomcat-javadoc.noarch 7.0.75-1.el6 @epel
tomcat-jsp-2.2-api.noarch 7.0.75-1.el6 @epel
tomcat-lib.noarch 7.0.75-1.el6 @epel
tomcat-servlet-3.0-api.noarch 7.0.75-1.el6 @epel
tomcat-webapps.noarch 7.0.75-1.el6 @epel
glite-security-trustmanager-tomcat6.noarch 2.5.5-6.el6 epel
jakarta-commons-collections-tomcat5.noarch 3.2.1-3.5.el6_7 base
jakarta-commons-dbcp-tomcat5.noarch 1.2.1-13.9.el6 base
jakarta-commons-pool-tomcat5.x86_64 1.3-12.7.el6 base
jglobus-ssl-proxies-tomcat.noarch 2.1.0-2.el6 epel
tomcat.noarch 7.0.77-1.el6 epel
tomcat-admin-webapps.noarch 7.0.77-1.el6 epel
tomcat-docs-webapp.noarch 7.0.77-1.el6 epel
tomcat-el-2.2-api.noarch 7.0.77-1.el6 epel
tomcat-javadoc.noarch 7.0.77-1.el6 epel
tomcat-jsp-2.2-api.noarch 7.0.77-1.el6 epel
tomcat-jsvc.noarch 7.0.77-1.el6 epel
tomcat-lib.noarch 7.0.77-1.el6 epel
tomcat-native.x86_64 1.1.34-1.el6 epel
tomcat-servlet-3.0-api.noarch 7.0.77-1.el6 epel
tomcat-webapps.noarch 7.0.77-1.el6 epel
tomcat6.noarch 6.0.24-105.el6_8 updates
tomcat6-admin-webapps.noarch 6.0.24-105.el6_8 updates
tomcat6-docs-webapp.noarch 6.0.24-105.el6_8 updates
tomcat6-el-2.1-api.noarch 6.0.24-105.el6_8 updates
tomcat6-javadoc.noarch 6.0.24-105.el6_8 updates
tomcat6-jsp-2.1-api.noarch 6.0.24-105.el6_8 updates
tomcat6-lib.noarch 6.0.24-105.el6_8 updates
tomcat6-servlet-2.5-api.noarch 6.0.24-105.el6_8 updates
tomcat6-webapps.noarch 6.0.24-105.el6_8 updates
tomcatjss.noarch 2.1.0-4.el6 base
通过修改JAVA_HOME环境变量来修改使用的JDK的版本:
[root@node121 profile.d]# pwd
/etc/profile.d
[root@node121 profile.d]# cat java.sh
#!/bin/bash
export JAVA_HOME=/usr/lib/jvm/jre-1.6.0-openjdk.x86_64
export PATH=$JAVA_HOME/bin:$PATH
[root@node121 profile.d]# ./etc/profile.d/java.sh
[root@node121profile.d]# java -version
java version "1.6.0_35"
OpenJDK Runtime Environment (IcedTea61.13.7) (rhel-1.13.7.1.el6_6-x86_64)
OpenJDK 64-Bit Server VM (build 23.25-b01,mixed mode)
修改环境变量来使用catalina_home的执行命令:
[root@node120 profile.d]# pwd
/etc/profile.d
[root@node120profile.d]# cat tomcat.sh
#!/bin/bash
export CATALINA_HOME=/usr/local/tomcat
export PATH=$CATALINA_HOME/bin:$PATH
[root@node121 profile.d]# . /etc/profile.d/tomcat.sh
运行tomcat不需要管理员权限,一般只需要使用普通用户就可以启动tomcat,如果端口监听小于1024后的端口,则需要使用root使用来启动,如果监听端口大于1024,则用普通用户就可以启用tomcat
通过rpm包安装的tomcat的目录:
[root@node121 tomcat]# pwd
/usr/share/tomcat
[root@node121 tomcat]# ls
bin conf lib logs temp webapps work
[root@node121 tomcat]# lsof -i:8080
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 2043 tomcat 39u IPv6 12260 0t0 TCP *:8080 (LISTEN)
Java WebAPP组织结构:
有特定的组织形式,层次型的目录结构,主要包含了servlet代码文件,JSP页面文件,类文件,部署描述符文件等:
/usr/local/tomcat/webapps/app1/
/:webapp的根目录:
WEB-INF/: #字符必须大写,不会在网页上显示,是当前webapp的私有资源,存放当前webapp自用的we b.xml,可以从tomcat的conf目录中复制web.xml文件到这个目录中
META-INF/:#字符必须大写,不会在网页上显示,,是当前webapp的私有资源,存放当前webapp自用的context.xml, 可以从tomcat的conf目录中复制context.xml文件到这个目录中
Classes/:此webapp的私有类
Lib/:此webapp的私有类,被打包为jar格式类
Index.jsp/:webapp的主页
Webapp归档格式:
.war: webapp:
.jar: EJB的类
.rar: 资源适配器
.ear: 企业级应用程序
手动添加一个测试应用程序:
1. 创建webapp特有的目录结构
Mkdir –pv myapp/{lib,classes,WEB-INF,META-INF}
2. 提供webapp各文件
Myapp/index.jsp
部署(deployment)webapp相关的操作:
Deploy部署,将webapp的源文件放到目标目录,配置tomcat服务器能够基于context.xml文件中定义的路径来访问此webapp,将其特有类通过classloader装载至tomcat
有两种方式:
自动部署:autodeploy
手动部署:
1. 冷部署:把webapp复制到指定位置,而后才启动tomcat
2. 热部署;在不停止tomcat的前题下进行
3. 部署工具,manager,ant脚本,tcd(tomcat client deployer)等
Undeploy:反部署,停止webapp,并从tomcat实例拆除其部分文件和部署名
Stop:停止,不再向用户提供服务,但应用程序类文件还在JVM虚拟机内
Start:启动处理“停止”状态的webapp应用程序
Redeploy:重新部署
连接器组件SSL:
<Connector port=”8443” maxThreads=”150”minSpareThreads=”25” maxSpareThreads=”75” enableLookups=”false” acceptCount=”100”debug=”0” scheme=”https” secure=”true” clientAuth=”false” sslProtocol=”TLS”>
Engine组件:一个service只有一个engine组件
defaultHost
name:
jvmRoute:
Host组件:(定义虚拟主机):
<Hostname=”localhost” appBase=”webapps” unpackWARs=”true” autoDeploy=”true”xmlValidation=”false” xmlNamespaceAware=”false”>
虚拟主机定义示例:
<Enginename=”Catalina” defaultHost=”localhost”>
<Hostname=”localhost” appBase=”webapps”>
<Contextpath=”” docBase=”ROOT”/>
<Contextpath=”/bbs” docBase=”/web/bbs” reloadable=”true” crossContext=”true”/>
</Host>
<Hostname=”mail.linuxmysql.com” appBase=”/web/mail”>
<Contextpath=”/” docBase=”ROOT”>
</Host>
</Engine>
主机别名定义:访问rsc.com会访问到rscpass.com
<Hostname=”rscpass.com” appBase=”webapps” unpackWARS=”true”>
<Alias>rsc.com</Alias>
</Host>