应用 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