default root uri

例如我需要访问 http://localhost/ 的时候,希望它会去 /webapps/exampls/


更改root app的方法

  • 首先当然是看看ps,弄清楚到底是采用哪个$catalina.home

  • 在gentoo的tomcat7中,需要的设置/etc/tomcat-7/Catalina/localhost/ROOT.xml,根据的是这个

$ sudo cat /etc/tomcat-7/Catalina/localhost/ROOT.xml
<?xml version="1.0" encoding="UTF-8"?>
<Context docBase="${catalina.home}/webapps/examples" />

那么,curl localhost/ 的时候,就是读取 ”${catalina.home}/webapps/examples”


install

  • 查看tomcat目录的RUNNING.txt。
  • install jre ,其实可以直接下载JRE,解压即可,不必设置环境。
  • install Apache Tomcat, 解压即可。
  • 设置${CATALINA_HOME}/bin/setenv.sh设置 JRE_HOME , CATALINA_HOME
$ cat /usr/local/tomcat1/bin/setenv.sh 
#!/bin/bash - 
JRE_HOME=/opt/jre1.7.0_21
CATALINA_HOME=/opt/apache-tomcat-7.0.56

Multiple Tomcat Instances

在gentoo的 /usr/share/tomcat-7/gentoo/tomcat-instance-manager.bash 中,可以直接创建instances,根据这个方法和刚刚的RUNNING.txt,可以得到方法如下:

  • 拷贝相应的文件夹到$CATALINA_BASE处, conf,temp,logs,webapps,work,bin
  • 修改 ${CATALINA_BASE}/bin/setenv.sh ,在这里除了JRE_HOME, CATALINA_HOME,还需要CATALINA_BASE
  • 修改 ${CATALINA_BASE}/conf/server.xml , 主要是修改有关端口的设置,一般包括server, http connector, AJP 等。
  • 最好设置一下 ${CATALINA_BASE}/webapps/ROOT 到相应的app即可
$ cat /usr/local/tomcat1/bin/setenv.sh 

#!/bin/bash - 
JRE_HOME=/opt/jre1.7.0_21
CATALINA_BASE=/usr/local/tomcat2
CATALINA_HOME=/opt/apache-tomcat-7.0.56
$ sudo diff -u  /usr/local/tomcat2/conf/server.xml /opt/apache-tomcat-7.0.56/conf/server.xml 
--- /usr/local/tomcat2/conf/server.xml  2014-11-04 15:15:23.670352145 +0800
+++ /opt/apache-tomcat-7.0.56/conf/server.xml   2014-09-26 17:15:38.000000000 +0800
@@ -19,7 +19,7 @@
      define subcomponents such as "Valves" at this level.
      Documentation at /docs/config/server.html
  -->
-<Server port="8006" shutdown="SHUTDOWN">
+<Server port="8005" shutdown="SHUTDOWN">
   <!-- Security listener. Documentation at /docs/config/listeners.html
   <Listener className="org.apache.catalina.security.SecurityListener" />
   -->
@@ -67,7 +67,7 @@
          APR (HTTP/AJP) Connector: /docs/apr.html
          Define a non-SSL HTTP/1.1 Connector on port 8080
     -->
-    <Connector port="8082" protocol="HTTP/1.1"
+    <Connector port="8080" protocol="HTTP/1.1"
                connectionTimeout="20000"
                redirectPort="8443" />
     <!-- A "Connector" using the shared thread pool-->
@@ -89,7 +89,7 @@
     -->
 
     <!-- Define an AJP 1.3 Connector on port 8009 -->
-    <Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />
+    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
 
 
     <!-- An Engine represents the entry point (within Catalina) that processesRE_HOME=/opt/jre1.7.0_21

虚拟主机(多域名绑定到同一IP)

          # name 域名  appBase 虚拟主机主程序目录  
        www.456.com                 # 其他域名
                 # war文件路径或其他程序路径
                
                # 日志设置
    

appBase和docBase对应的话,可以不需在url上填入模块名称。如果没设置好,则需要填入模块名称本例“/test/”。


tomcat log rotate

如下,通过修改server.xml里面的org.apache.catalina.valves.AccessLogValve, 添加fileDateFormat即可。

$ cat logformat.txt
<Valve
    className="org.apache.catalina.valves.AccessLogValve"
    directory="${catalina.base}/logs"
    prefix="access_log"
    fileDateFormat="yyyy-MM-dd.HH"
    suffix=".log"
    pattern="%t %H cookie:%{SESSIONID}c request:%{SESSIONID}r  %m %U %s %q %r"

/>

$ diff ~/tomcat-7711/conf/server.xml*
139c139
<              directory="logs"  prefix="access." fileDateFormat="yyyy-MM-dd.HH" suffix=".log"
---
>              directory="logs"  prefix="access." suffix=".log"

How to disable remote shutdown in Tomcat

  • change the port number from default to different one (not recommended)
  • change the shutdown command (partially recommended)
  • change port number to -1 (recommended)

** $CATALINA_HOME/conf/server.xml **

<Server port="8005" shutdown="SHUTDOWN">

to

<Server port="-1" shutdown="SHUTDOWN">

修改accesslog的pattern

  • 需要使用tomcat7
%{yyyy-MM-dd'T'HH:mm:ss,SSSZ}t
  • 例子一
pattern="%h %l %u %t &quot;%r&quot; %s %b %{yyyy-MM-dd'T'HH:mm:ss,SSSZ}t"
::1 - - [15/Dec/2015:14:25:12 +0800] "GET /index.jsp HTTP/1.1" 200 11217 2015-12-15T14:25:12,297+0800
  • 例子2
pattern="%t remote_ip=%a local_ip=%A request_method=%m request_proto=%H host=%{Host}i url=%U query=%q- local_port=%p response=%s bytes_send=%b process_time=%D agent='%{User-Agent}i'"
[15/Dec/2015:14:08:40 +0800] remote_ip=127.0.0.1 local_ip=127.0.0.1 request_method=POST request_proto=HTTP/1.1 host=127.0.0.1:8580 url=/testMode/testService query=- local_port=8580 response=200 bytes_send=134 process_time=69 agent='Apache-HttpClient/4.1.1 (java 1.5)'

Tomcat catalina.out is too big

conf/logging.properties

java.util.logging.ConsoleHandler.level = WARNING
java.util.logging.ConsoleHandler.limit = 1024000

test keystone

echo y | keytool -genkeypair -dname "cn=testing, ou=ITDept, o=CKS, c=CN" -alias business -keypass kpi135 -keystore ./example.jks -storepass kpi135 -validity 20000