我认为这是一个很好的问题。
我发现它也令人困惑。几分钟前我安装了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 / ...所以最好从那里开始。
答案 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
希望它能起作用。