简介
Tomcat是一个轻量级的web应用服务器,用于处理动态页面(JAVA)程序。Tomcat内建支持HTTP服务,可以独立作为一个web服务器接收用户请求并处理、响应(处理静HTML静态内容性能不如Apache)。同样Tomcat也可以仅作为应用程序服务器,通过反向代理处理JSP程序并返回结果。Tomcat核心组件:
Catalina: Servlet Container,提供运行Servlet代码(html标签嵌套在程序代码中)的环境
Coyote: HTTP Connector,接收HTTP请求,通过Service组件将请求转为Engine能识别的请求,并将运行结果相应给用户。它们三者关系为一个Service组件仅包含一个Engine,可能有多个Connector
Jasper: JSP(Java Server Page) Engine,将程序代码翻译成Servlet格式的代码
安装Tomcat
Tomcat及其组件主要由Java语言开发,因此Tomcat并非作为独立进程运行。其依赖于Java虚拟机,运行在Java虚拟机之上(Tomcat运行后一个进程(Java进程)称之为一个Tomcat Instance,默认监听在TCP的8080端口)。所以安装Tomcat应该至少安装JRE(Java Runtime Envirunment),要实现调试等功能,则应该安装JDK(Java Development Kit)。
## 安装
# rpm -ivh /tmp/jdk-7u72-linux-x64.rpm
# tar -xzf /tmp/apache-tomcat-7.0.96.tar.gz -C /usr/local
# ln -sv /usr/local/apache-tomcat-7.0.96 /usr/local/tomcat
## 手动导出环境变量
# cd /etc/profile.d
# vim java.sh
/*
export JAVA_HOME=/usr/java/latest
export PATH=$JAVA_HOME/bin:$PATH
*/
# chmod u+x /etc/profile.d/java.sh
# vim tomcat.sh
/*
export CATALINA_HOME=/usr/local/tomcat
export PATH=$CATALINA_HOME/bin:$PATH
*/
# chmod u+x tomcat.sh
## 启动tomcat
# catalina.sh start # 确保TCP 8080端口未有进程监听
Tomcat配置文件: /usr/local/tomcat/conf/
server.xml:主配置文件
context.xml:各webapp的默认配置文件,每个webapp自己的context.xml位于相应安装目录下,用于定义会话管理器等
web.xml:各webapp默认部署相关配置
tomcat-users.cml:用户认证的账户配置文件
catalina.policy:启动时使用-security选项时的需要的安全策略配置文件
catalina.properties:定义java属性的文件,用于性能调整等
logging.properties:日志相关配置文件
基础配置
主配置文件结构
<Server> 服务器组件,一个JVM仅能包含一个服务器组件,即一个Tomcat实例
<Service> 服务组件,通常一个server包含一个service,服务组件包含一个engine和一个或多个connector
<Connector .../> 连接器组件
...
<Engine ...> 引擎,根据接收的HTTP请求首部信息辨别,发送给相应host或context,以及回复客户端
<Host ...> 类似于Apache的虚拟主机,一个engine至少包含一个host
<Context /> 上下文组件,用于定义webapp的根目录等信息
<Alias>HOSTNAME</Alias> 虚拟主机别名
...
</Host>
...
</Engine>
</Service>
...
</Server>
Tomcat工具的认证配置
## 1、Manager App认证:
# vim tomcat-users.xml
/* 添加认证用户
<role rolename="manager-gui"/>
<user username="UserNamet" password="Password" roles="manager-gui"/>
*/
手动重启tomcat后配置生效
## 2、Host Manager认证
# vim tomcat-users.xml
/* 添加认证用户
<role rolename="admin-gui"/>
<user username="USERNAME" password="PASSWORD" roles="admin-gui"/>
注:可与1中用户角色合并,参数roles="manager-gui,admin-gui"
*/
手动重启tomcat后配置生效
注:访问控制配置
<Valve className="org.apache.catalina.valves.AccessLogValve"
allow="172\.27\.0\.0/16"/>
连接器配置选项
例:HTTP和SSL连接器配置(从server.xml中复制)
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" />
参数说明:
port="" 监听端口
protocal=“” 使用协议,默认HTTP/1.1,定义AJP连接器时默认协议AJP/1.3
connectionTimeout="" 客户端连接超时时间,默认60000ms
redirectPort="" 当该端口收到HTTPS请求时,自动将请求转发至此处定义的端口
address="" 监听地址,默认所有
maxThreads=“” 最大并发连接数,默认200
enableLookups=“” 是否反解客户端主机名,默认为true
acceptCount=“” 等待队列长度
scheme="" 请求类型
secure="" 使用安全加密
clientAuth="" 是否认证客户端,应该未false
sslProtocol="" SSL协议
示例
## 1、编辑server.xml 添加虚拟主机
<Host name="shopxx.test.com" appBase="webapps" autoDeploy="false">
<Context path="" docBase="shopxx" reloadable="true"/>
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="web_access_log." suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
注:<Context />类似于apache中的路径映射,path=""表示<Host />中的路径,
docBase=“shopxx”表示映射path中的路径到 /webapps/shopxx
## 2、部署应用程序
# cd /usr/local/tomcat/webapps
# unzip /tmp/shopxx-a5-Beta.zip
# ln -sv ./shopxx-v3.0-Beta/shopxx-3.0Beta shopxx
## 3、提供数据库服务
# service mysqld start
# mysql -uroot -p
mysql> GRANT ALL ON shopxx.* TO shopuser@'localhost' IDENTIFIED BY 'shoppasswd';
mysql> FLUSH PRIVILEGES;
## 4、浏览器完成安装
http://shopxx.test.com:8080/shopxx/install/
由于在配置文件中做了路径映射,所以输入如下内容也可:
http://shopxx.test.com:8080/install