一、简介
1、tomcat简介:
Tomcat就是一个Java EE的不完整实现,是一个web容器,也可以成为web服务器。它只使用了Java EE附带的两个类库-----Servlet与JSP,Tomcat服务器是Apache组织开发的一种JSP引擎,同时支持Servlet,本身就具有WEB服务器的功能,但是在WEB服务器方面Tomcat处理静态的HTML页面不如Apache迅速,也没有Apache健壮,所以我们一般将Tomcat与Apache配合使用,让Apache处理静态页面的请求,Tomcat作为专门的JSP引擎,提供JSP解析。
Servlet和JSP:
JSP是一种脚本语言,语法简单,可以方便的嵌入到HTML中 Servlet必须需要硬编码进html中 //JSP 就是为了简化Java和Servlet的使用难度,同时通过扩展JSP标签(TAG)提供网页动态执行的能力 JSP与Servlet的关系 //当Web服务器(或Servlet引擎,应用服务器)支持JSP引擎时,JSP引擎会照着JSP的语法,将JSP文件转换成Servlet代码源文件,接着Servlet会被编译成Java可执行字节码(bytecode),并以一般的Servlet方式载入执行*.jsp文件 -jasper引擎-> *.java文件 -javac编译器-> .class (JVM运行)。
2、常见的web容器
商业版: Sun GlassFish Enterprise Server Sun Java System Web Server JBoss Enterprise Application Platform WebLogic Application Server Caucho's Resin Server WebSphere Application Server NetWeaver 非商业版: Apache Tomcat Apache Geronimo GlassFish JBoss Application Server Jetty
3、tomcat的体系结构
顶级组件:位于配置层次的顶级,并且彼此有严格的对应滚戏(Server,Service) 连接器:连接客户端(可以是浏览器或web服务器)请求至Servlet容器 容器:包含一组其他组件,如Engine、Host、Context 被嵌套的组件:位于一个容器当中,但不能包含其他组件(如Realm 领域、valve过滤认证 logger记录日志)
顶级组件 #1 服务器(server):Tomcat的一个实例,通常一个JVM只能包含一个Tomcat实例;因此,一台服务器上可以在启动多个JVM的情况下每一个JVM中启动一个Tomcat实例,每个实例分属于一个独立管理端口。这是一个顶级组件 #2 服务(service):一个服务组件通常包含一个引擎和此引擎相关联的一个或多个连接器。给服务命名可以方便管理员在日志文件中识别不同服务产生的日志。一个server可以包含多个service组件,但通常情况下只为一个service指派一个server 连接器类组件: # 连接器(connectors):负责连接客户端(可以是浏览器或web服务器)请求至Servlet容器内的web应用程序,通常指的是接受客户发来请求的位置及服务器段分配的端口。默认端口通常是HTTP协议的8080,管理员可以根据自己的需要改变此端口。一个引擎可以连接多个连接器,但这些连接器必须使用不同的端口。默认的连接器是HTTP/1.1的Coyote,同时Tomcat也支持AJP、JServ和JK2连机器。 容器类组件: #(1)引擎(Engine):通常指Cataliana Servlet引擎,它检查每一个请求的HTTP首部信息辨别此请求应该发往到哪个host或context,并将请求处理后的结果发送给客户端。一个引擎可以包含多个主机组件。 #(2)主机(Host):主机组件类似于Apache的虚拟主机,但Tomcat只支持基于FQDN的虚拟主机。至少一个主机组件。 #(3)上下文(Context):Context组件式最内层组件,代表Web应用程序本身。配置一个Context最主要的就是指定Web应用程序的根目录,一遍Servlet容器能偶将用户请求发往正确的位置。Context组件也可以定义包含错误页,实现用户访问发生错误时提供友好的提示信息。 被嵌套类组件: #(1)阀门(valve):可以定义在任何容器类的组件中,用来记录客户端请求/客户端IP地址和服务器等信息。 #(2)日志记录器(logger):可以用于除Context之外的任何容器中。记录日志 #(3)领域(Realm):用于用户的认证和授权
4、Tomcat连接器架构
# 基于Apache作为Tomcat前段的架构来讲,Apache通过mod_jk、mod_proxy模块与后端的Tomcat进行数据交换 apache与tomcat连接器通信的模块有两个: 1) mod_jk : apache/1.3, apache/2.0 2) mod_proxy : apache/2.2+ Tomcat的http连接器 # 1)基于java的http/1.1连接器; # 2)基于java的高性能NIO HTTP/1.1连接器 # 3)基于C/C++研发的Native APR HTTP/1.1连接器 (需要额外编译安装) Tomcat的连接器协议 # 1)http # 2)ajp Tomcat的工作模式 # 1)单独模式 # 2)进程间配置 # 3) 独立/网络配置
5、Tomcat的组织结构
<Server> 顶层元素,代表一个服务器 <Service> 顶层元素,是Connector的集合,只有一个Engine <Connectior/> 连接器类元素,代表通信接口 <Engine> 容器类元素,为特定的Service组件处理所有客户请求,可包含多个Host <Host> 为特定的虚拟主机处理所有客户请求 <Context> 为特定的WEB应用处理所有客户请求 </Context> </Host> </Engine> </Service> </Server>
6、Tomcat配置文件
//Tomcat的配置文件默认存放在$CATALINA_HOME/conf目录中 server.xml: Tomcat的主配置文件,包含Service, Connector, Engine, Realm, Valve, Hosts主组件的相关配置信息; web.xml:遵循Servlet规范标准的配置文件,用于配置servlet,并为所有的Web应用程序提供包括MIME映射等默认配置信息; tomcat-user.xml:Realm认证时用到的相关角色、用户和密码等信息;Tomcat自带的manager默认情况下会用到此文件;在Tomcat中添加/删除用户,为用户指定角色等将通过编辑此文件实现; catalina.policy:Java相关的安全策略配置文件,在系统资源级别上提供访问控制的能力; catalina.properties:Tomcat内部package的定义及访问相关的控制,也包括对通过类装载器装载的内容的控制;Tomcat在启动时会事先读取此文件的相关设置; logging.properties: Tomcat通过自己内部实现的JAVA日志记录器来记录操作相关的日志,此文件即为日志记录器相关的配置信息,可以用来定义日志记录的组件级别以及日志文件的存在位置等; #context.xml:所有host的默认配置信息;
二、安装tomcat
1、安装配置JDK
①、安装JDK
[root@tomcat ~]# rpm -ivh jdk-7u9-linux-x64.rpm Preparing... ########################################### [100%] 1:jdk ########################################### [100%]
②、配置JDK的环境变量
[root@tomcat ~]# find / -name java //查找JDK的安装路径 /usr/java /usr/java/jdk1.7.0_09/jre/bin/java /usr/bin/java /etc/pki/java [root@tomcat ~]# vim /etc/profile.d/java.sh //配置环境变量 //添加如下内容 export JAVA_HOME=/usr/java/jdk1.7.0_09 export PATH=$JAVA_HOME/bin:$PATH [root@tomcat ~]# source /etc/profile.d/java.sh //重读,立刻生效
③、验证JDK
[root@tomcat ~]# java -version java version "1.7.0_09" Java(TM) SE Runtime Environment (build 1.7.0_09-b05) Java HotSpot(TM) 64-Bit Server VM (build 23.5-b02, mixed mode)
2、安装配置tomcat
下载:apache-tomcat-7.0.42.tar.gz
①、解压tomcat
[root@tomcat ~]# tar xf apache-tomcat-7.0.42.tar.gz -C /usr/local/ [root@tomcat local]# ln -sv apache-tomcat-7.0.42/ tomcat `tomcat' -> `apache-tomcat-7.0.42/'
②、配置tomcat环境变量路径
[root@tomcat ~]# vim /etc/profile.d/tomcat.sh export JAVA_HOME=/usr/local/tomcat export PATH=$JAVA_HOME/bin:$PATH [root@tomcat ~]# source /etc/profile.d/tomcat.sh
③、验证tomcat
[root@tomcat ~]# catalina.sh -h Using CATALINA_BASE: /usr/local/tomcat Using CATALINA_HOME: /usr/local/tomcat Using CATALINA_TMPDIR: /usr/local/tomcat/temp Using JRE_HOME: /usr/local/tomcat Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar Usage: catalina.sh ( commands ... ) commands: debug Start Catalina in a debugger ... ... ... ...
④、启动tomcat
[root@tomcat ~]# catalina.sh start Using CATALINA_BASE: /usr/local/tomcat Using CATALINA_HOME: /usr/local/tomcat Using CATALINA_TMPDIR: /usr/local/tomcat/temp Using JRE_HOME: /usr/local/tomcat Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
⑤、查看日志
[root@tomcat local]# cat /usr/local/tomcat/logs/catalina.out
⑥、为Tomcat提供启动脚本
[root@tomcat ~]# vim /etc/init.d/tomcat #!/bin/sh # Tomcat init script for Linux. # chkconfig: 2345 96 14 # description: The Apache Tomcat servlet/JSP container. JAVA_HOME=/usr/java/jdk1.7.0_09/ CATALINA_HOME=/usr/local/tomcat/ export JAVA_HOME CATALINA_HOME # export CATALINA_OPTS="-Xms128m -Xmx256m" # Java使用的内存:-Xms128m默认分配的内存大小,-Xmx256m最大使用的内存。 exec $CATALINA_HOME/bin/catalina.sh $* [root@tomcat ~]# chmod +x /etc/init.d/tomcat
⑦、开机启动
[root@tomcat ~]# chkconfig --add tomcat [root@tomcat ~]# chkconfig tomcat on [root@tomcat ~]# chkconfig --list tomcat tomcat 0:off 1:off 2:on 3:on 4:on 5:on 6:off
⑧、测试脚本,查看记录日志
[root@tomcat ~]# tail -f /usr/local/tomcat/logs/catalina.2014-05-08.log May 08, 2014 9:17:26 PM org.apache.coyote.AbstractProtocol init INFO: Initializing ProtocolHandler ["ajp-bio-8009"] May 08, 2014 9:17:26 PM org.apache.catalina.startup.Catalina load INFO: Initialization processed in 2110 ms May 08, 2014 9:17:26 PM org.apache.catalina.core.StandardService startInternal INFO: Starting service Catalina May 08, 2014 9:17:26 PM org.apache.catalina.core.StandardEngine startInternal INFO: Starting Servlet Engine: Apache Tomcat/7.0.42 May 08, 2014 9:17:26 PM org.apache.catalina.startup.HostConfig deployDirectory INFO: Deploying web application directory /usr/local/apache-tomcat-7.0.42/webapps/ROOT May 08, 2014 9:17:53 PM org.apache.catalina.util.SessionIdGenerator createSecureRandom INFO: Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [25,741] milliseconds. May 08, 2014 9:17:53 PM org.apache.catalina.startup.HostConfig deployDirectory INFO: Deploying web application directory /usr/local/apache-tomcat-7.0.42/webapps/docs May 08, 2014 9:17:53 PM org.apache.catalina.startup.HostConfig deployDirectory INFO: Deploying web application directory /usr/local/apache-tomcat-7.0.42/webapps/manager May 08, 2014 9:17:53 PM org.apache.catalina.startup.HostConfig deployDirectory INFO: Deploying web application directory /usr/local/apache-tomcat-7.0.42/webapps/host-manager May 08, 2014 9:17:54 PM org.apache.catalina.startup.HostConfig deployDirectory INFO: Deploying web application directory /usr/local/apache-tomcat-7.0.42/webapps/examples May 08, 2014 9:17:54 PM org.apache.coyote.AbstractProtocol start INFO: Starting ProtocolHandler ["http-bio-8080"] May 08, 2014 9:17:54 PM org.apache.coyote.AbstractProtocol start INFO: Starting ProtocolHandler ["ajp-bio-8009"] May 08, 2014 9:17:54 PM org.apache.catalina.startup.Catalina start INFO: Server startup in 28261 ms
⑨、测试,访问8080端口
Tomcat 目录文件:
[root@tomcat1 ~]# cd /usr/local/tomcat/ [root@tomcat1 tomcat]# ls bin conf lib LICENSE logs NOTICE RELEASE-NOTES RUNNING.txt temp webapps work [root@tomcat1 tomcat]#
解释:
bin ——Tomcat执行脚本目录 conf ——Tomcat配置文件 lib ——Tomcat运行需要的库文件(JARS) logs ——Tomcat执行时的LOG文件 temp ——Tomcat临时文件存放目录 webapps ——Tomcat的主要Web发布目录(存放我们自己的JSP,SERVLET,类) work ——Tomcat的工作目录,Tomcat将翻译JSP文件到的Java文件和class文件放在这里。
⑩、配置tomcat的 Server status 、Manager App、Host Manager
[root@tomcat1 ~]# vim /usr/local/tomcat/conf/tomcat-users.xml <?xml version='1.0' encoding='utf-8'?> <tomcat-users> <role rolename="manager-gui"/> <role rolename="admin-gui"/> <user username="tomcat" password="tomcat" roles="manager-gui,admin-gui"/> </tomcat-users> [root@tomcat1 ~]# service tomcat stop [root@tomcat1 ~]# service tomcat start
3、tomcat管理程序
①、测试:登录进去(user:tomcat password:tomcat)
②、Manager APP ----可以管理web应用程序
③、Manager Host ---管理虚拟主机
4、Tomcat上部署程序
①、本机安装mysql服务器与mysql客户端
[root@tomcat1 ~]# yum -y install mysql-server mysql [root@tomcat1 ~]# service mysqld start [root@tomcat1 ~]# mysql //授权用户 mysql> grant all on *.* to 'root'@'localhost' identified by 'mageedu'; mysql> flush privileges;
②、编辑server.xml配置文件,添加一个host和context
[root@tomcat1 ~]# vim /usr/local/tomcat/conf/server.xml </Host> <Host name="www.test.com" appBase="/www/webapps" unpackWARS="true" autoDeploy="true"> <Context path="" docBase="ROOT" reloadable="true" /> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> </Host>
③、配置web
下载:JavaCenter_Home_2.0_GBK.tar.bz2
[root@tomcat1 ~]# mkdir -pv /www/webapps/ROOT [root@tomcat1 ~]# tar xf JavaCenter_Home_2.0_GBK.tar.bz2 [root@tomcat1 ~]# cd JavaCenter_Home_2.0_GBK [root@tomcat1 JavaCenter_Home_2.0_GBK]# mv ./* /www/webapps/ROOT
别忘了配置windows的hosts
点击进入管理平台
转载于:https://blog.51cto.com/lemidi/1409480