gpt4 book ai didi

ubuntu - 如何允许 Tomcat WAR 应用写入文件夹

转载 作者:行者123 更新时间:2023-11-28 21:49:00 25 4
gpt4 key购买 nike

我希望部署为 war ROOT.war 的 webapp 具有对 /var/www/html/static/images 的写入权限,以便它可以将上传和转换后的图像写入该文件夹,以便 nginx 可以静态地提供它。目前它不起作用并触发 java.nio.file.FileSystemException 异常以及 Filesystem is read-only 消息。

但文件系统不是只读的,而且状况良好。该文件夹已经chmodded 777

额外信息:tomcat 安装程序在具有托管磁盘的 Ubuntu 18.04 Azure VM 上运行。该文件夹位于 Ext4 格式的驱动器上

最佳答案

让我们开始:chmod 777 非常适合测试,但绝对不适合现实世界,您不应该习惯这个设置。而是在授予世界写入权限之前正确设置所有者/组。

编辑:Tomcat 邮件列表上刚刚出现了一个类似的问题,Emmanuel Bourg 指出 Debian Tomcat 被 systemd 沙盒化了。读你的/usr/share/doc/tomcat9/README.Debian其中包含这一段:

Tomcat is sandboxed by systemd and only has write access to thefollowing directories:

  • /var/lib/tomcat9/conf/Catalina (actually /etc/tomcat9/Catalina)
  • /var/lib/tomcat9/logs (actually /var/log/tomcat9)
  • /var/lib/tomcat9/webapps
  • /var/lib/tomcat9/work (actually /var/cache/tomcat9)

If write access to other directories is required the service settingshave to be overridden. This is done by creating an override.conf filein /etc/systemd/system/tomcat9.service.d/ containing:

[Service]

ReadWritePaths=/path/to/the/directory/

服务必须在之后重新启动:

  systemctl daemon-reload
systemctl restart tomcat9

编辑 2022:请注意,这些是 2019 年的路径 - 验证更高版本的文件位置。从评论到这个答案(感谢 V HNg Sek Long) 这里有一些更新:

In current Ubuntu file is here: sudo vi /etc/systemd/system/multi-user.target.wants/tomcat9.service – V H Feb 26, 2022 at 19:55

Mine (Ubuntu 20) is installed here /lib/systemd/system/tomcat9.service smh everybody use a different path. – Ng Sek Long Mar 28, 2022 at 8:36

编辑结束,继续没有解决OP问题的段落,但应该留在:

如果 - 所有的事情都经过测试 - Tomcat 应该 对该目录有写入权限,但没有,错误消息指向我一个假设:可能是那个

  • Tomcat 是否以 root 身份运行?
  • 目录是通过NFS挂载的吗?

NFS 的默认配置是 root 对该外部文件系统没有任何权限(或者它没有写权限?这是古老的历史内存 - 查找“NFS root squash”以获得完整的故事)

如果这种情况与您正在运行的相匹配,您应该停止以根用户身份运行 Tomcat,而是以非特权用户身份运行它。然后,您可以将相关目录的权限设置为您的 tomcat 用户可写,nginx 可读,您就完成了。

以 root 身份运行 Tomcat 会导致灾难:您不希望从 Internet 上获得的进程以 root 身份运行。

如果这些条件不符合您的配置:详细说明配置。对于以后可能会找到此问题/答案的其他人,我仍然支持此描述。

关于ubuntu - 如何允许 Tomcat WAR 应用写入文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56827735/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com