我使用 tomcat9 软件包全新安装了 Debian buster。
我想在其上部署GeoWebCache应用程序(最新1.15版本),它需要一个具有读写访问权限的目录来存储配置文件、生成的缓存等...
我创建目录/opt/gwc_cachedir 并为其设置 777 权限:
# chmod -R 777/opt/gwc_cachedir
并将我的配置文件(geowebcache.xml)放入同样具有 777 权限的目录中。
启动tomcat实例时,日志显示/opt/gwc_cachedir目录不可写:
错误 [storage.DefaultStorageFinder] - 发现 Java 环境变量 GEOWEBCACHE_CACHE_DIR 设置为/opt/gwc_cachedir/,该变量不可写
这似乎是由调用 canWrite 函数引起的,该函数返回 false :
我不明白为什么它返回 false,因为/opt/gwc_cachedir 有 777 权限。
已解决
问题出在systemd服务定义上,我需要允许tomcat读取和写入目录
将此行添加到 /lib/systemd/system/tomcat9.service
即可完成工作:
ReadWritePaths=/opt/gwc_cachedir
最佳答案
看起来用于运行 tomcat9 进程的用户或组不允许写入您的缓存目录。
检查/etc/systemd/system/tomcat.service
以查看tomcat进程将以哪个组和用户身份运行。
很可能是
User=tomcat
Group=tomcat
...在这种情况下,只需将缓存目录的所有者更改为 tomcat
:
sudo chown -R tomcat:/opt/gwc_cachedir/
或者 Java 的安全管理器停止访问...解决方案仍在等待中...
关于java - 如何在 debian buster 中允许对 java/tomcat 目录进行写访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57707255/