让我们开始:
chmod 777适用于测试,但是绝对不适合现实世界,您不应该习惯这种设置。在授予世界写权限之前,应正确设置所有者/组。
编辑:Tomcat邮件列表中出现了一个类似的问题,Emmanuel Bourg指出 Debian Tomcat由systemd沙盒化
。阅读/usr/share/doc/tomcat9/README.Debian,其中包含以下段落:
Tomcat由systemd沙盒化,并且仅具有对以下目录的写访问权:
- / var / lib / tomcat9 / conf / Catalina(实际上是/ etc / tomcat9 / Catalina)
- / var / lib / tomcat9 / logs(实际上是/ var / log / tomcat9)
- / var / lib / tomcat9 / webapps
- / var / lib / tomcat9 / work(实际上是/ var / cache / tomcat9)
如果需要对其他目录的写访问权限,则必须覆盖服务设置。这是通过在/etc/systemd/system/tomcat9.service.d/中创建一个override.conf文件来完成的,该文件包含:
[Service]ReadWritePaths=/path/to/the/directory/此后必须重新启动该服务:
systemctl daemon-reload systemctl restart tomcat9
编辑结束,继续未解决OP问题的段落,但应保留在:
如果-所有事情都经过测试-Tomcat 应该 具有对该目录的写访问权,但没有该访问权,则错误消息将我指向一个假定:可能是
- Tomcat是作为root运行的吗?
- 该目录是通过NFS挂载的吗?
NFS的默认配置是root在该外部文件系统上没有任何权限(或者是否没有写权限?这是古老的历史内存-查找“ NFS root squash”以获取完整的故事)
如果这符合您所运行的条件,则应 停止以root身份运行Tomcat
,而应以非特权用户身份运行它。然后,您可以将有关目录的权限设置为可由您的tomcat用户写入,并由nginx读取,然后就可以完成。
以root身份运行Tomcat会带来灾难:您不希望Internet上可用的进程以root身份运行。
如果这些条件不满足您的配置:详细说明配置。对于以后可能会发现此问题/答案的其他人,我仍然坚持此说明。



