我最近为 MarkLogic 开发构建了一个 Ubuntu 虚拟机。然后,这台机器被分发给另外 4 名开发人员,以提供一致的开发平台。现在,我正在为开发难题设置另一个部分,它由一些 Java 库和一个 JSP Web 应用程序组成。项目源位于开发人员用户主目录中(每台机器都有完全相同的帐户)。我在目录中添加了一个符号链接,/var/lib/tomcat6/webapps/
指向项目目录中的 Web 应用程序源根目录。
/var/lib/tomcat6/webapps/jspapp -> /home/developer/dev/workspace/svn/Project/webapp/
(实际的 JSP 文件位于 Project/webapp 目录中。)
这在我的虚拟机实例上工作正常。我成功地将设置复制到了另一台虚拟机,并且运行正常。但是,我复制设置的其余虚拟机不起作用。在前两台虚拟机上,我获得了 Web 应用程序的页面。在其他虚拟机上,我得到了 404。
所有虚拟机都是从单个原始虚拟机克隆而来的。除了 1 个配置值(本地计算机的 IP 地址)之外,所有 Web 应用程序项目源都相同。我以相同的方式在每个虚拟机上创建了符号链接,并验证了文件和目录的权限/模式是否相同。我比较了 tomcat 安装目录,发现它们之间没有配置差异。我看到的唯一文件差异似乎是 Catalina 的缓存数据。就所有意图和目的而言,设置都是相同的。但显然有些东西不一样。
有人对我如何解决此问题有什么建议吗?我对 Linux 世界还很陌生,对 tomcat 也不太熟悉。
更新- 我将链接目录的内容复制到同名的真实目录中(删除链接后),但仍然不起作用。不过,我能/var/lib/tomcat6/webapps/ROOT/index.html
看到我放入相关目录中的副本。它的行为几乎就像 JSP 文件被忽略了一样。
答案1
快速检查清单:
检查
allowLinking="true"
你的 Tomcat 配置是否已设置:https://stackoverflow.com/questions/315093/configure-symlinks-for-single-directory-in-tomcat/315145#315145检查进程的用户
tomcat
是否具有执行权限每一个目录的父文件夹/home/developer/dev/workspace/svn/Project/webapp/
(即/home
,,,,,/home/developer
... )/home/developer/dev
/home/developer/dev/workspace