1. 安装

在Linux系统中安装Tomcat,详见全新Linux使用入口中的Tomcat安装

2. 访问配置优化

2.1 service.xml配置

一个service.xml文件由 Server->Service->Engine->Host->Context 组成四层结构,从里层向外层分别是:

  • Context: 即 Web 应用程序,一个 Context 即对于一个 Web 应用程序。
  • Host:即虚拟主机,比如 www.dog.com对应一个虚拟主机,api.dog.com 对于另一个虚拟主机。一个 Host 用于定义一个虚拟主机。(所谓的一个虚拟主机可简单理解为一个网站
  • Engine:一组虚拟主机的集合。比如www.dog.comapi.dog.com 可以组成一组虚拟主机集合。
  • Service:一组 Engine 的集合,包括线程池 Executor 和连接器 Connector 的定义。

2.1.1 Service节点配置

  • Connector端口配置

    1
    2
    3
    <Connector port="8080" protocol="HTTP/1.1"
    connectionTimeout="20000"
    redirectPort="8443" />

一般情况下,Linux系统需要手动开放8080端口,但此处可以任意使用一个其他端口,避免常用端口直接访问

  • Engine集合配置

    1
    <Engine name="Catalina" defaultHost="blog.foreversfj.com">

    一个Engine可以有多个虚拟主机组成,defaultHost 用于指定访客在没有相应的虚拟主机时,Tomcat 默认选择的虚拟主机的名称。

    假如有3个域名都 DNS 解析到你的服务器,比如dog.com,www.dog.com,api.dog.com,当前你只配置了虚拟主机 dog.comwww.dog.com,那么当有个访客通过 api.dog.com 访问你的服务器时,Tomcat 就会依据 defaultHost 的设置返回其中一个虚拟主机运行的结果。实际应用中 defaultHost 应该设置为你的主力域名,比如 www.dog.com

  • Host配置

    1
    2
    3
    4
    5
    6
    <Host name="share.foreversfj.com"  appBase="/var/local/webWork/Share"
    unpackWARs="true" autoDeploy="true">
    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="/var/local/webLogs/tomcat/share.foreversfj.com"
    prefix="share.foreversfj.com_access_log" suffix=".txt"
    pattern="%h %l %u %t &quot;%r&quot; %s %b" />
    </Host>

    一个 Host 配置即为一个虚拟主机,Host 配置节点各个属性的作用:

    • name:设置虚拟主机的域名,比如 localhost表示本机名称,实际应用时应该填写具体域名,比如 www.dog.com 或者dog.com,当然如果该虚拟主机是给内部人员访问的,也可以直接填写服务器的 ip 地址,比如 192.168.1.10
    • autoDeploy:是否允许自动部署,默认值是 true,即表示 Tomcat 会自动检测 appBase 目录下面的文件变化从而自动应用到正在运行的 Web 应用程序。
    • unpackWARs:设置是否自动展开 war 压缩包再运行 Web 应用程序,默认值是 true。
    • appBase:设置 Web 应用程序组的路径。一个虚拟主机可以由多个 Web 应用程序构成,所以这里的 appBase 所指向的目录应该是准备用于存放这一组 Web 应用程序的目录,而不是具体某个 Web 应用程序的目录本身(即使该虚拟主机只由一个 Web 应用程序组成)。

    若只配appBase,不配Context 的docBase(appBase和docBase二选一就可以了),则appBase的每个文件夹里都代表一个应用项目,默认访问ROOT命名的应用

  • Value日志配置

    1
    2
    3
    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="/var/local/webLogs/tomcat/blog.foreversfj.com"
    prefix="share.foreversfj.com_access_log" suffix=".txt"
    pattern="%h %l %u %t &quot;%r&quot; %s %b" />

    directory是保存日志的地址,prefix是日志文件的前缀,suffix是后缀,pattern是中缀

    此外,在Host节点中配置Valve节点,是简单配置访客的访问日志的储存位置以及文件名。更为详细的日志配置可见于Tomcat日志优化

2.1.2 多站点配置

有时我们需要在一台服务器上跑多个站点,通过 Tomcat 很容易实现这点,假设我们要搭建www.dog.comwww.cat.com这两个站点。则在编辑 Tomcat 的主配置文件 server.xml中,在默认的 Host 节点下面再加入如下两个新的 Host 节点:

1
2
3
4
<Host name="www.dog.com" appBase="/var/local/tomcat6/dog" autoDeploy="true" unpackWARs="true">
</Host>
<Host name="www.cat.com" appBase="/var/local/tomcat6/cat" autoDeploy="true" unpackWARs="true">
</Host>

在Tomcat中其实还可以优化使用https访问,但是由于可以配合nginx+tomcat来搭建网站环境,所以我使用nginx代理,在nginx中配置https访问。