- Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是不少的场合下被广泛使用,是开发和调试JSP 程序的首选。对于一个初学者来讲,能够这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,因此当你运行tomcat 时,它实际上做为一个与Apache 独立的进程单独运行的。
- 诀窍是,当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet。另外,Tomcat和IIS等Web服务器同样,具备处理HTML页面的功能,另外它仍是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。目前Tomcat最新版本为9.0。
server:至关于一个tomcat实例。接收并解析请求信息;完成相关动做后把响应结果返回给计算机。
service:每一个server包含多个service,相互独立,仅共享JVM以及类库。用于把链接器(connector)与引擎(engine)关连起来,且一个service只能有一个engine,可是能够有多个connector。由于engine没法直接接受链接器发来的数据。
connector:负责开启socket并监听客户端请求、返回响应数据。多个connector监听多个端口
engine:负责具体的处理请求,connector仅仅负责监听,收到数据后交给engine运行。
host:在ngine中能够包含多个host,每一个host定义了虚拟主机
context:每一个context能够部署一个web应用。一个host能够存在多个context。若是部署多个应用须要分别对每一个应用装载所依赖的库,这个步骤能够自动能够手动。html
tomcat其实就是一个JAVA程序,因此要运行在JAVA虚拟机中。要运行虚拟机就要先安装JDK。前端
1.经过YUM安装 yum install java-1.8.0-openjdk-devel 2.配置环境变量 vim /etc/profile.d/java.sh export JAVA_HOME=/usr/java/latest # 首先定义JAVA_HOME的环境变量 export PATH=$JAVA_HOME/bin:$PATH # 而后向后追加便可
###2.Tomcat的安装
首先要从Tomcat的官网下载Tomcat,而后上传至服务器解压。 https://tomcat.apache.orgjava
1.将下载的软件包解压 tar xf apache-tomcat-VERSION.tar.gz -C /usr/local/ cd /usr/local 2.建立软链接,或者将解压的tomcat直接更名为tomcat也能达到一样的效果 ln -sv apache-tomcat-VERSION tomcat 3.添加环境变量 vim /etc/profile.d/tomcat.sh export CATALINA_BASE=/usr/local/tomcat export PATH=$CATALINA_BASE/bin:$PATH 4.建立tomcat须要的用户 useradd tomcat 5.将安装包的路径下的全部属组都改成tomcat chown -R root.tomcat /usr/local/tomcat # 设定全部者为root,所属组为tomcat chown -R tomcat /usr/local/tomcat/{logs,temp,work,webapps} # 仅将须要有写权限文件全部者改成tomcat chmod g+r /usr/local/tomcat/conf # 默认没有权限,会致使启动失败 5.切换到tomcat用户最后启动服务便可 su - tomcat catalina.sh start # 启动tomcat。catalina.sh命令须要先添加环境变量
bin: 脚本、以及Tomcat自身所携带的工具包 conf: Tomcat服务的配置文件目录; lib: 库文件,Java类库,jar; logs: 日志文件目录; temp: 临时文件目录; webapps:webapp的默认目录;至关于页面的根目录。部署的应用都应该在IC目录下 work: 工做目录,存放编译后的字节码文件;
建立一个测试页面,将下面的步骤所有作完后,经过浏览器访问http://IP:8080/test 便可访问到测试的页面node
1.建立文件夹,classes、lib、WEB-INF为一个标准应用应该有的目录,这里建立仅仅为了与标准看齐 mkidr -pv /usr/share/tomcat/webapps/test/{classes,lib,WEB-INF} 2.建立一个测试页面用于检验Tomcat服务是否能正常提供服务 vim /usr/local/tomcat/webapps/test/index.jsp # 建立jsp测试页面 <%@ page language="java" %> <%@ page import="java.util.*" %> <html> <head> <title>Test Page</title> /head> <body> <% out.println("hello world"); %> </body> </html 3.重启服务 systemctl restart tomcat 4.部署完成后在webapp目录自动生成一些目录 cd /usr/share/tomcat/work/Catalina # 部署完成后自动生成的test目录下的文件 [root@localhost Catalina]# tree . . └── localhost # 默认主机站点 ├── _ ├── docs ├── examples ├── host-manager ├── manager ├── sample └── test # webpp应用名称。自动生成如下目录 └── org └── apache └── jsp ├── index_jsp.class └── index_jsp.java
前面讲到connecotr负责接收用户请求,而engine负责接处理用户请求。可是connecotr并不能与engine直接通讯。因此service就是负责将connector与engine链接起来的组件nginx
<Service name="Catalina">
connector负责接收客户端发来的请求,常见的链接有三种:http、https、ajp
进入tomcat的请求可分为两类:web
(1) standalone : 请求来自于客户端浏览器;apache
(2) 由其它的web server反代:来自前端的反代服务器,经过反带服务器发来的又有如下几种;vim
<Connector port="8080" # 默认有两个connector一个监听http一个监听ajp protocol="HTTP/1.1" # 若是是http能够无需指明协议。AJP的话Protocol="AJP/1.3" connectionTimeout="20000" # 超时时长,毫秒即20s redirectPort="8443" # 若是请求的为SSL请求就将请求转发至8443端口 address: # 监听的IP地址;默认为本机全部可用地址;不写就监听本地全部IP maxThreads: # 最大并发链接数,默认为200; enableLookups: # 是否启用DNS查询功能;将IP地址解析为域名。关闭提高性能 acceptCount: # 等待队列的最大长度; secure: # =true的表示使用SSL通讯 sslProtocol: # 设定使用哪一个SSL协议,一般在tomcat上不建议使用SSL,速度太慢 />
Engine组件负责处理发来的请求。
Engine是Servlet实例,即servlet引擎,其内部能够一个或多个host组件来定义站点; 一般须要经过defaultHost来定义默认的虚拟主机。
示例浏览器
<Engine name="Catalina" defaultHost="localhost"> name=Catalina # 引擎的名称 defaultHost="localhost" # 默认的响应主机站点。若是找不到合适,或者域名不匹配选择默认host jvmRoute= # Tomcat作集群时的调度标志,相似于HAproxy的会话标识。 # 在基于cookie绑定时会用到 ... <Engine>
Host组件位于engine内部用于接收请求并进行相应处理的主机或虚拟主机tomcat
<Host name="localhost" # 设定为主机名便可 appBase="webapps" # webapps的默认存放路径(相对路径,能够用绝对路径)。至关站点根 unpackWARs="true" # true为自动展开WAR文件 autoDeploy="true"> # 是否开启自动部署功能。 #unpackWARS、autoDeploy定义了WebAPP为WAR格式且在根下时自动部署 </Host>
包含在Host标签里。
若是在一个主机上部署多个app的话,Context就能够用来定义不一样app对应的路径。
<Context path="/PATH" # 网页的RUL docBase="/PATH/TO/SOMEDIR" # 真实路径。 reloadable=""/> # 若是为true说明能够从新装载
Valve存在多种类型:
定义访问日志:org.apache.catalina.valves.AccessLogValve
定义访问控制:org.apache.catalina.valves.RemoteAddrValve
<Valve className="org.apache.catalina.valves.AccessLogValve" # 定义记录日志要访问的类 directory="logs" # 日志文件的目录路径,默认在/var/log/tomcat下 prefix="node1_test_access_" # 日志文件的前缀 suffix=".log" # 日志文件的后缀 pattern="%h %l %u %t "%r" %s %b" /> # 记录日志的格式 pattern="%h %l %u %t "%r" %s %b" />