我想知道是否有可能以某种方式改变Tomcat work/Catalina/localhost/
目录的路径?
假设我有两个用户:tomcat_install_user
和tomcat_run_user
。
我想将所有tomcat安装和配置文件存储在tomcat_install_user上,并仅将tomcat_run_user
用于运行Tomcat进程。我希望tomcat_run_user
只拥有其他用户文件的读权限。
但是Tomcat需要在$CATALINA_BASE
中创建工作目录。我不想将整个$CATALINA_BASE
移动到tomcat_run_user
,只移动work
目录。它甚至可能吗?如何将Tomcat指向此目录?
答案 0 :(得分:5)
Tomcat的standard Host implementation支持workDir
配置文件中<Host>
元素中的server.xml
属性。
此主机的应用程序要使用的临时目录的路径名。每个应用程序都有自己的子目录,具有临时读写使用。配置上下文workDir将覆盖Host workDir配置的使用。如Servlet规范中所述,该目录将通过名为javax.servlet.context.tempdir的servlet上下文属性(类型为java.io.File)对Web应用程序中的servlet可见。如果未指定,将提供$ CATALINA_BASE / work下面的合适目录。
您可以将其设置为您选择的目录,例如
<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true"
workDir="/home/tomcat_run_user/other_work_dir">
....
</Host>
另请注意,standard Context implementation还提供了属性workDir
,该属性会覆盖<Host>
元素中的设置,但仅适用于指定一个的应用程序。