Tomcat与/ usr / share / tomcat6中的CATALINA_HOME和/ var / lib / tomcat6中的CATALINA_BASE一起安装

时间:2010-08-10 07:14:18

标签: tomcat6

我认为这是一个很好的问题。

我发现它也令人困惑。几分钟前我安装了tomcat(过了一会儿),我发现它们是两个不同的“webapps”地方。

在/ usr / share / tomcat6 / webapps / default_root / 在/ var / lib / tomcat6 / webapps / ROOT /

两者的内容相同,但没有一个是符号链接。

当我开始使用tomcat时,它说:

引用:

  

这是默认的Tomcat主页。它可以在本地文件系统上找到:/var/lib/tomcat6/webapps/ROOT/index.html

Tomcat6资深人士可能会高兴地获悉Tomcat的这个系统实例与/ usr / share / tomcat6中的CATALINA_HOME和/ var / lib / tomcat6中的CATALINA_BASE一起安装 因此,基于此信息,保留了/ usr / share / ...文件夹以实现向后兼容,对吧?

但根据您发布的内容,正在从CATALINA_HOME而不是CATALINA_BASE中读取库。

也许他们仍保留默认参考,以防止其他系统在更新后停止工作?

很好的观察!

更新

我在以下网址阅读:/usr/share/tomcat6/bin/catalina.sh:

引用:

# CATALINA_HOME May point at your Catalina "build" directory.
#
# CATALINA_BASE (Optional) Base directory for resolving dynamic portions
# of a Catalina installation. If not present, resolves to
# the same directory that CATALINA_HOME points to.

当我们阅读:/etc/init.d/tomcat6:

(开头)

CATALINA_HOME=/usr/share/$NAME

(然后...)

# Directory for per-instance configuration files and webapps
CATALINA_BASE=/var/lib/$NAME

但是,如果您尝试手动启动TOMCAT(正如我很久以前所做的那样): sudo /usr/share/tomcat6/bin/startup.sh

显示:

引用:

Using CATALINA_BASE: /usr/share/tomcat6
Using CATALINA_HOME: /usr/share/tomcat6
Using CATALINA_TMPDIR: /usr/share/tomcat6/temp
Using JRE_HOME: /usr
touch: cannot touch `/usr/share/tomcat6/logs/catalina.out': No such file or directory
/usr/share/tomcat6/bin/catalina.sh: 357: cannot create /usr/share/tomcat6/logs/catalina.out: Directory nonexistent

那么,为什么CATALINA_BASE设置为与CATALINA_HOME相同?

/ usr / share / tomcat6 / logs /不存在,但存在于/ var / lib / tomcat6 / logs /

从init.d脚本启动Tomcat时,我看到我的日志正在写入/ var / lib / ...所以最好从那里开始。

6 个答案:

答案 0 :(得分:16)

我不是Tomcat的专家,但我遇到了同样的问题,我可以使用以下命令重启服务器: sudo /etc/init.d/tomcat6 restart

答案 1 :(得分:4)

CATALINA_HOME - 告诉“org.apache.catalina.startup.Bootstrap”在哪里查找必需的/ lib / bin和其他 - 这是运行服务器的依赖项。它基本上是您的Tomcat安装主目录。

CATALINA_BASE - 需要扫描某个目录结构(一旦启动)。例如/ conf查找特定于Web应用程序的server.xml和web.xml。只要您拥有该目录结构和内容,CATALINA_BASE就可以是任何目录。

答案 2 :(得分:1)

我见过。

正确而可爱的方法是在您的CATALINA_HOME / bin文件夹中创建一个“setenv.sh”脚本(在您的情况下为“/usr/share/tomcat6/bin/setenv.sh”)。

setenv.sh的内容:

#!/bin/sh
export CATALINA_BASE=/new/catalinabase/path

所以没有必要自己修改catalina.sh。如果bin目录中存在setenv.sh,catalina.sh将自动执行它。

答案 3 :(得分:0)

我无法告诉你为什么在startup.sh(resp.catalina.sh)中CATALINA_HOME和CATALINA_BASE是相同的 - 这真的很奇怪。

当然,您可以通过init.d脚本启动Tomcat。但有时你可能想通过startup.sh/catalina.sh启动它(例如用于调试)。

因此,作为解决方法/黑客,您可以通过在/usr/share/tomcat6/bin/catalina.sh的开头添加以下行来解决问题

export CATALINA_BASE=/var/lib/tomcat6

答案 4 :(得分:-1)

我可以通过执行此命令来完成此操作,

$ service tomcat6 start

重新初始化我的CATALINA_*路径并启动tomcat实例

答案 5 :(得分:-3)

chmod +x startup.sh
chmod +x shutdown.sh
chmod +x catalina.sh
chmod +x setclasspath.sh
chmod +x bootstrap.jar
chmod +x tomcat-jni.jar
希望它能起作用。