乐趣区

关于tomcat:使用-nginx-作为文件服务器读取-tomcat-创建的文件

应用 Ubuntu 20,tomcat 9, nginx 1.18

背景

业务需要,要应用 Java 程序来上传图片,并且应用 nginx 作为文件服务器读取

步骤

装置 tomcat & nginx

以下两篇文章都有具体介绍,能够参考它们的步骤来装置

How to Install Apache Tomcat Server on Ubuntu 20.04

How To Install Nginx on Ubuntu 20.04

创立寄存上传图片的目录

假如图片寄存于 /a/b/upload/images,创立目录

命令:mkdir /a/b/upload/images,

而后将 images 目录的所有者和所有组改为 tomcat:tomcat

命令:chown -R tomcat:tomcat /a/b/upload/images

nginx 配置反向代理

增加配置文件

nginx 配置的门路:/etc/nginx/conf.d

在 conf.d 中,创立 image-server.conf (这个 image-server.conf 文件名能够按本人我的项目的需要扭转),nginx.conf 就会 include 它,不须要间接批改 nginx.conf

image-server.conf 中,写入

server {
    listen 8081; # 能够按本人理论状况批改监听的端口,记得增加相应的防火墙规定、平安组等
    server_name localhost;
    
    location /images/ {root /a/b/upload;}
}

保留,返回命令行。

而后从新加载 nginx 配置

命令:sudo systemctl reload nginx.service

测试反向代理

/a/b/upload/images 增加一张图片 (假如名字为 lion.png)

而后在浏览器拜访 localhost:8081/images/lion.png 就能看到这张图片了

配置 tomcat catalina UMASK

因为 tomcat 的安全策略,把 tomcat 创立的文件的权限设为 640,这导致不同组的 nginx 没有读取权限

而后我在网上寻找解决方案,批改 UMASK 是支流的计划。具体步骤如下:

批改 UMASK

UMASK 位于 $CATALINA_HOME,一开始我无奈通过 echo $CATALINA_HOME 找到它;
起初我想到切换到根目录,而后用 find -name 'catalina.sh' 来找,后果真的找到了

catalina.sh 位于 /usr/share/tomcat9/bin

关上 catalina.sh,通过浏览它的阐明,我发现不应该间接批改 catalina.sh 的内容,而是应该创立 setenv.sh,再在 setenv.sh 外面增加要设置的参数

于是,在 catalina.sh 同级目录中,创立 setenv.sh

命令:sudo vim setenv.sh,增加内容为

UMASK=0022

再重启 tomcat

命令:`sudo systemctl reload tomcat9.service

测试 tomcat 创立文件

`

此时,tomcat 创立的文件的权限就变成 644

参考资料

Tomcat9 File Permissions Change

Apache Tomcat 9 – Security Considerations

退出移动版