Tomcat简介 html
Tomcat主要由servlet和jsp组成,是精简版的 JAVA EE;servlet是服务器端的一个容器,当用户请求应用程序的时候,servlet接收客户端的请求,并把的请求的类文件或源文件在虚拟机中运行一次,把运行的结果封装成html语言,返回给用户.so,servlet须要有java开发环境(JDK).可是servlet有个原生性的缺陷,就是全部的html语言都要硬编码进java语言中.这就催生了jsp,jsp也是一个java类,jsp在前端入口处,他能够识别html语言中嵌入的jsp代码,从而把jsp程序交给后端的servlet处理,而html语言则不原封不懂的显示.而在jsp中执行这类操做的工具叫作jsper.前端
Apache早期也在研究能够运行jsp的JAVA EE Application Servers,叫作catanila,后来sun公司把本身的研究JAVA EE Application Servers无偿捐献给了Apache,Apache命名为Tomcat,因此如今的Tomcat中能够见到不少catanila的身影
java
1.首先要安装JDK,java的运行环境linux
2.导出java的环境变量1: rpm -ivh jdk-7u9-linux-x64.rpm2: rpm -ql jdk
3.安装配置tomcat,建议把tomcat的全部文件改为普通用户的权限,使用普通用户运行1: vim /etc/profile.d/java.sh2: export JAVA_HOME=/usr/java/latest3: export PATH=$JAVA_HOME/bin:$PATH4: . /etc/profile.d/java.sh #重读配置文件5: java -version 验证环境变量是否配置成功
4.导出tomcat的环境变量1: tar xf apache-tomcat-7.0.42.tar.gz -C /usr/local2: ln -sv apache-tomcat-7.0.42/ tomcat3: vim /usr/local/tomcat/conf/server.xml:重要的配置文件4: /usr/local/tomcat/temp/ :编译后的jsp文件5: /usr/local/tomcat/webapps/ : 默认网页文件6: /usr/local/tomcat/bin : 一些可执行脚本
1: vim /etc/profile.d/tomcat.sh2: export CATALINA_HOME=/usr/local/tomcat3: export PATH=$CATALINA_HOME/bin:$PATH4: . /etc/profile.d/tomcat.sh5: catalina.sh version : 运行此命令,若是成功则表示导出环境变量成功
5.启动查看tomcatweb
6.访问IP:80801: catalina.sh configtest 测试语法是否有误2: catalina.sh start | stop中止3: ss -tpnl4: jps 显示主机运行的java程序及程序的id号,若是显示Bootstrap说明运行成功
7.查看tomcat的配置文件shell
1: vim /usr/local/tomcat/conf/server.xml2:3: <server>--------------------顶级组件,最外层,一个运行在JVM的tomcat实例,以线程运行,一个进程多个线程4: <service>-------------------顶级组件,容器类组件,服务,将链接器关联至引擎的.一个service只能有一个引擎,能够有多个链接器5: <connector />---------------链接器组件,接受用户请求至tomcat,监听套接字的,可定义多个6: <engine >-------------------容器类组件,核心组件,处理connector接受的请求,解析编译处理这些请求,通常叫catalina引擎,能够有多个,一个实现一组服务,一个引擎能够有多个链接器,以下图7: <Realm>---------------------能够用于任何容器类的组件中,关联一个用户认证库,实现认证和受权8: <Realm>--------------------Realm中能够签到Realm9: </Realm>-------------------10: </Realm>--------------------11: <host>----------------------容器类组件,定义虚拟主机的12: <context>-----------------容器类组件,有点相似alias,定义一个应用程序的部署,最内存的容器,一个context表明一个web程序,配置context的主要目的是指定对应webapp的根目录13: </context>----------------14: </host>---------------------15: <host>----------------------能够有多个,一个host就一个虚拟主机,通常只支持基于主机名的虚拟主机16: <value />-----------------嵌套类组件,阀门,拦截请求的,并将其转至对应的webapp以前进行某种操做:如记录日志 access log value(记录日志) remote address filter value(基于ip作访问控制) 能够用于任何容器中17: </host>---------------------18: </engine>-------------------19: </service>------------------20: </server>-------------------
大体图以下apache
上图,三个容器类的组件:engine,host,contextvim
8.修改和增长tomcat监听的端口后端
9.为tomcat提供Sysv服务脚本1: vim /usr/local/tomcat/conf/server.xml2:3: <Connector port="80" protocol="HTTP/1.1"4: connectionTimeout="20000"
5: redirectPort="8443" />
6: <Connector port="8080" protocol="HTTP/1.1"7: connectionTimeout="20000"
8: redirectPort="8443" />
9: redirectPort="8443" ------若是是https就转到8443端口
vim /etc/rc.d/init.d/tomcattomcat
chkconfig --add tomcat
#!/bin/sh
# Tomcat init script for Linux.
#
# chkconfig: 2345 96 14
# description: The Apache Tomcat servlet/JSP container.
# JAVA_OPTS='-Xms64m -Xmx128m' #堆的最小和最大使用空间,在服务器这值一般很大,几十G
JAVA_HOME=/usr/java/lastest
CATALINA_HOME=/usr/local/tomcat
export JAVA_HOME CATALINA_HOME
case $1 in
start)
exec $CATALINA_HOME/bin/catalina.sh start ;;
stop)
exec $CATALINA_HOME/bin/catalina.sh stop;;
restart)
$CATALINA_HOME/bin/catalina.sh stop
sleep 2
exec $CATALINA_HOME/bin/catalina.sh start ;;
*)
echo "Usage: `basename $0` {start|stop|restart}"
exit 1
;;
esac
exec 在当前shell中执行脚本,因此不会在脚本中继续往下运行了
10.Connector链接器的可选参数
之后本身定义的时候可能还要加上证书的路径1: <Connector port="80" address="127.0.0.1" maxThreads="200" connectonTimeout="6000" protocol="HTTP/1.1"2: connectionTimeout="20000"
3: redirectPort="8443" />
4: <Connector port="8443"
5: maxThreads="150" minSpareThreads="25" maxSpareThreads="75"6: enableLookups="false" acceptCount="100" debug="0" scheme="https" secure="true"7: clientAuth="false" sslProtocol="TLS" />8:
1) address:指定链接器监听的地址,默认为全部地址,即0.0.0.0;
2) maxThreads:支持的最大并发链接数,默认为200,很重要的一个参数;
3) port:监听的端口,默认为0;
4) protocol:链接器使用的协议,默认为HTTP/1.1,定义AJP协议时一般为AJP/1.3;
5) redirectPort:若是某链接器支持的协议是HTTP,当接收客户端发来的HTTPS请求时,则转发至此属性定义的端口;
6) connectionTimeout:等待客户端发送请求的超时时间,单位为毫秒,默认为60000,即1分钟;
7) enableLookups:是否经过request.getRemoteHost()进行DNS查询以获取客户端的主机名;默认为true,解析的很是慢,为了提升性能,能够设置为false;
8) acceptCount:设置等待队列的最大长度;一般在tomcat全部处理线程均处于繁忙状态时,新发来的请求将被放置于等待队列中;一旦maxThreads满了,就开始排队
11.engine
<Engine name="Catalina" defaultHost="localhost"> 定义默认虚拟主机的
12.host
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
unpackWARs="true" 自动展开打包文件
autoDeploy="true" tomcat启动时,自动部署
13.自定义虚拟主机
1: <Host name="www.a.com" appBase="/www/webapp"2: unpackWARs="true" autoDeploy="true">3: <Context path="" docBase="/www/webapp" reloadable="true"/>4: <Context path="/ldf" docBase="test" reloadable="true"/>5: <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"6: prefix="a.com_access_log." suffix=".txt"7: pattern="%h %l %u %t "%r" %s %b" />
8: </Host>
Context path="" 访问的uri路径
docBase="/www/webapp" 表示相对于根目录的其余目录,若是就是根目录,就把根目录重写一遍,网页文件的存放位置
docBase="test" 相对于/www/webapp/test,经测试也能够当别名使用(uri使用)
网页文件测试页
1: <%@ page language="java" %>
2: <%@ page import="java.util.*" %>
3: <html>4: <head>5: <title>JSP test page.</title>6: </head>7: <body>8: <% out.println("Hello,world!"); %>
9: </body>10: </html>
14.server status
1: vim /usr/local/tomcat/conf/tomcat-users.xml2: <role rolename="manager-gui"/>
3: <user username="tomcat" password="tomcat" roles="tomcat,manager-gui"/>
15.Host Manager
1: vim /usr/local/tomcat/conf/tomcat-users.xml2: <role rolename="manager-gui"/>
3: <role rolename="admin-gui"/>
4: <user username="tomcat" password="tomcat" roles="tomcat,manager-gui,admin-gui"/>