解决:vsftpd+nginx解决方案
在传统上传方式中,在项目的跟目录下创建upload目录,将图片上传到tomcat服务器中。但是在分布式环境下,是有多个Tomcat存在的,当把图片直接上传到Tomcat服务器时,容易出现图片丢失的问题。
由于项目最终是要部署到Linux环境,所以直接将图片上传到Linux服务器。
问题:那如何将图片上传到Linux呢?
答:使用vsftpd组件,实现文件传输。
问题1:vsftpd是什么?
答:ftp(File Transfer Protocol)文件传输协议。(实现不同操作系统之间文件的传输)
vsftpd是一个基于ftp协议的文件传输服务器软件。
问题2:vsftpd作用是什么?
答:传输文件的文件服务器。(跨平台、跨操作系统)
问题3:如何使用?
答:服务端:在linux安装vsftpd软件,开启服务。
客户端:通过FtpClient客户端建立和服务器的连接,向服务器发送请求。
实现步骤
第一部分:在Linux上部署vsftpd服务
- 第一步:安装vsftpd软件
- 第二步:关闭匿名访问
- 第三步:添加一个FTP用户
- 第四步:设置防火墙 vsftpd服务默认端口号为21,修改防火墙,开放此端口,重启防火墙。
- 第五步:修改selinux(Linux安全内核系统)
(1)先查看selinux,默认是禁用了ftp访问的。
(2)修改selinux,开放ftp访问权限
- 第六步:启动vsftpd服务
第二部分:SpringMVC实现上传
思路
(1)使用Springmvc上传组件,从页面表单接收图片
(2)使用vsftpd组件,将图片上传到Linux服务器。
(a)、服务端:在Linux上安装ftp服务端vsftpd软件,并开启服务。
(b)、客户端:在java代码中使用FtpClient客户端建立与服务器的连接
(3)返回值:返回图片上传之后的访问路径。
为什么?
因为保存图片到数据库的时候,保存的就是图片的访问路径。