Tomcat配置

注册服务

windows

1
service.bat install tomcat7

tomcat7为配置成的服务名,可自定义

内存优化

内存配置-绿色版(catalina.bat)

在开始添加

1
set JAVA_OPTS=-Xms256m -Xmx512m -Xss256K -XX:PermSize=64m -XX:MaxPermSize=128m

Linux下

startup.sh

1
export JAVA_OPTS="-Xmx2048m -Xms2048m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m  -Djava.awt.headless=true -Duser.timezone=Asia/Shanghai -Dfile.encoding=GBK  -Dsun.jnu.encoding=GBK -Duser.language=zh -Duser.country=CN"

内存配置-安装版

在java选项卡的Java Options中添加

1
2
3
-XX:PermSize=64M
-XX:MaxPermSize=128M
-XX:ReservedCodeCacheSize=24M

Host配置

tomcat的webapps目录下有两个项目为aaabbb
D:/webapps目录下有一个项目ccc

默认配置

1
2
3
<Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="%h %l %u %t &quot;%r&quot; %s %b" />
</Host>

配置1

1
2
3
<Host name="www.aaa.com"  appBase="webapps" unpackWARs="true" autoDeploy="true">
<Context path="" docBase="aaa" debug="0"/>
</Host>

配置2

1
2
3
<Host name="www.bbb.com"  appBase="webapps" unpackWARs="true" autoDeploy="true">
<Context path="" docBase="D:/Program Files (x86)/apache-tomcat-7.0.55/webapps/bbb" debug="0"/>
</Host>

配置3

1
2
3
4
<Host name="www.ccc.com"  appBase="D:/webapps" unpackWARs="true" autoDeploy="true">
<Alias>www.ddd.com</Alias>
<Context path="" docBase="ccc" debug="0"/>
</Host>

测试结果

  • 默认配置

    加了日志 kingbase8-8.6.0.jar

    可以通过http://localhost:8080/aaa访问aaa项目
    可以通过http://localhost:8080/bbb访问bbb项目
    可以通过http://localhost:8080/ccc访问ccc项目

  • 配置1

    添加了域名
    添加了Context配置

    只能通过http://www.aaa.com:8080访问aaa项目

  • 配置2

    docBase用了绝对路径

    只能通过http://www.bbb.com:8080访问bbb项目

  • 配置3

    appBase用了绝对路径
    使用了别名Alias

    可以通过http://www.ccc.com:8080访问ccc项目
    可以通过http://www.ddd.com:8080访问ccc项目

总结

appBase与docBase没有什么必然的关系
如果docBase用相对路径,则是相对appBase来看的
别名只能为域名,不能为www.aaa.com/aa这样的
个人建议:如果一个tomcat带多个项目的话,并且有的是测试的有的已绑定域名,最好把绑定域名的和测试的分到两个appBase中

只用一个项目可以

1
2
3
4
5
6
<Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true">
<Context path="" docBase="abi" debug="0"/>
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t &quot;%r&quot; %s %b" />
</Host>

推荐设置

应该把如上项目分别再放到a和b文件夹中

1
2
3
4
5
6
<Host name="www.aaa.com"  appBase="data/webapps/a" unpackWARs="true" autoDeploy="true">
<Context path="" docBase="aaa" debug="0"/>
</Host>
<Host name="www.bbb.com" appBase="data/webapps/b" unpackWARs="true" autoDeploy="true">
<Context path="" docBase="bbb" debug="0"/>
</Host>

如下配置会导致项目名为aaa和bbb项目各重复发布两次

1
2
3
4
5
6
<Host name="www.aaa.com"  appBase="data/webapps" unpackWARs="true" autoDeploy="true">
<Context path="" docBase="aaa" debug="0"/>
</Host>
<Host name="www.bbb.com" appBase="data/webapps" unpackWARs="true" autoDeploy="true">
<Context path="" docBase="bbb" debug="0"/>
</Host>