在Ubuntu上使用Tomcat 7的文件夹问题

tig*_*k89 4 ubuntu tomcat

我在Ubuntu 14.04上安装了Tomcat 7.主要问题是两个不同的文件夹有时是多余的:

的/ usr /共享/ tomcat7

drwxrwxrwx 2 root root 4096 dic 15  2013 backup
drwxrwxrwx 2 root root 4096 set  3 13:28 bin
lrwxrwxrwx 1 root root   21 nov 17  2013 conf -> /var/lib/tomcat7/conf
-rwxrwxrwx 1 root root   39 feb 21  2014 defaults.md5sum
-rwxrwxrwx 1 root root 2030 feb 21  2014 defaults.template
drwxrwxrwx 2 root root 4096 set  3 13:28 lib
lrwxrwxrwx 1 root root   16 nov 17  2013 log -> /var/log/tomcat7
-rwxrwxrwx 1 root root   53 feb 21  2014 logrotate.md5sum
-rwxrwxrwx 1 root root  118 feb 21  2014 logrotate.template
drwxrwxrwx 2 root root 4096 dic  2 13:00 logs
drwxrwxrwx 3 root root 4096 dic  6 17:33 webapps
drwxrwxrwx 3 root root 4096 dic 15  2013 work
drwxrwxrwx 5 root root 4096 dic  2 13:16 wtpwebapps
Run Code Online (Sandbox Code Playgroud)

在/ var/lib中/ tomcat7

drwxr-xr-x 3 tomcat7 tomcat7 4096 nov 16  2013 common
lrwxrwxrwx 1 root    root      12 mag 24  2013 conf -> /etc/tomcat7
lrwxrwxrwx 1 root    root      17 mag 24  2013 logs -> ../../log/tomcat7
drwxr-xr-x 3 tomcat7 tomcat7 4096 nov 16  2013 server
drwxr-xr-x 3 tomcat7 tomcat7 4096 nov 16  2013 shared
drwxrwxr-x 4 tomcat7 tomcat7 4096 dic  6 23:51 webapps
lrwxrwxrwx 1 root    root      19 mag 24  2013 work -> ../../cache/tomcat7
Run Code Online (Sandbox Code Playgroud)

当我安装的软件包,例如tomcat7-docs,tomcat7-examples并且tomcat7-admins,他们会自动下部署/usr/share/tomcat7/webapps.此外,当选择"使用Tomcat安装"选项时,Eclipse会自动部署文件/usr/share/tomcat7/wtpwebapps.

但是,如果我必须部署一个我的网络应用程序,我会把它放在/var/lib/tomcat7/webapps; 我不知道这是对的,也许是的,但为什么呢?另外,当我查看启动Web应用程序时生成的日志文件时,tomcat会抱怨一些不存在的文件夹; 实际上,它们只存在于/var/lib/tomcat7而非存在之下/usr/share/tomcat7.

Dec 06, 2014 11:50:23 PM org.apache.catalina.startup.ClassLoaderFactory validateFile
WARNING: Problem with directory [/usr/share/tomcat7/common/classes], exists: [false], isDirectory: [false], canRead: [false]
Dec 06, 2014 11:50:23 PM org.apache.catalina.startup.ClassLoaderFactory validateFile
WARNING: Problem with directory [/usr/share/tomcat7/common], exists: [false], isDirectory: [false], canRead: [false]
Dec 06, 2014 11:50:23 PM org.apache.catalina.startup.ClassLoaderFactory validateFile
WARNING: Problem with directory [/usr/share/tomcat7/server/classes], exists: [false], isDirectory: [false], canRead: [false]
Dec 06, 2014 11:50:23 PM org.apache.catalina.startup.ClassLoaderFactory validateFile
WARNING: Problem with directory [/usr/share/tomcat7/server], exists: [false], isDirectory: [false], canRead: [false]
Dec 06, 2014 11:50:23 PM org.apache.catalina.startup.ClassLoaderFactory validateFile
WARNING: Problem with directory [/usr/share/tomcat7/shared/classes], exists: [false], isDirectory: [false], canRead: [false]
Dec 06, 2014 11:50:23 PM org.apache.catalina.startup.ClassLoaderFactory validateFile
WARNING: Problem with directory [/usr/share/tomcat7/shared], exists: [false], isDirectory: [false], canRead: [false]
Run Code Online (Sandbox Code Playgroud)

那么,我要改变所有的作品呢?这个文件夹结构是否可以解决?

小智 5

tomcat使用这两个目录来允许使用单个安装目录配置多个tomcat实例,但每个目录都有自己的部署目录,日志,配置等.

Tomcat使用以下环境变量(或系统属性)来指定2个目录位置:

CATALINA_HOME(catalina.home),tomcat安装目录和
CATALINA_BASE(catalina.base),tomcat实例的基目录

一些tomcat安装对catalina.base和catalina.home使用相同的目录,如果CATALINA_BASE没有设置,这是默认行为.

鉴于Ubuntu 14.04 tomcat7配置:

catalina.home =/usr/share/tomcat7
catalina.base =/var/lib/tomcat7

您应该将应用程序部署到/var/lib/tomcat7/webapps.应用程序应该部署的唯一时间$CATALINA_HOME/webappscatalina.base=catalina.home. 在我的Ubuntu 14.04上安装tomcat7 甚至没有创建/ usr/share/tocmat7/webapps.

我找到你的帖子的原因是我最近安装了tomcat7并遇到了与你有相同的"目录问题"警告:

警告:目录[/ usr/share/tomcat7/common/classes]存在问题:[false],isDirectory:[false],canRead:[false]

该警告是结果common.loader,server.loader以及shared.loader在entires $CATALINA_BASE/conf/catalina.properties. ,因为他们应该是共同的,服务器和共享目录正在$CATALINA_BASE.

我通过改变每个*.loader= entry使用catalina.base而不是catalina.home那些目录(6个地方)来消除警告.


Tri*_*tan 5

我认为有一个更好的答案.

如上所述:https://bugs.launchpad.net/ubuntu/+source/tomcat7/+bug/1308284 和这里:https://bugs.launchpad.net/ubuntu/+source/tomcat7/+bug/1232258,这是解决此问题的最佳方法(适用于更多场景,尤其是在使用tomcat7-user软件包时):

cd /usr/share/tomcat7
sudo ln -s /var/lib/tomcat7/common/ common
sudo ln -s /var/lib/tomcat7/server/ server
sudo ln -s /var/lib/tomcat7/shared/ shared
Run Code Online (Sandbox Code Playgroud)

也许没有必要:

sudo ln -s /var/lib/tomcat7/conf/ conf
sudo ln -s /var/lib/tomcat7/logs/ logs
sudo mkdir /usr/share/tomcat7/temp
Run Code Online (Sandbox Code Playgroud)