note:本来之前按照教程弄好了的,但是第二天又不能用java上传文件到了,折腾了很久还没好,这就很难受了,重新再来一次,记下这次笔记。以后很可能还用的上。
服务器操作系统:CentOS 7.6 64位
作用:使用java上传完成客户端图片文件上传至服务器,并且客户端可以直接访问服务器中的图片
Date: 2019/08/16 09:45
一、背景
1.主要问题:
在tomcat集群中上传文件时,文件上传至一台服务器中,另一台中并没有图片,导致无法访问该图片(文件)。
2.一步一步来解决问题
解决:拿一台图片服务器来,专门存储图片文件。
产生子问题。
子问题1:图片服务器是有了,那么怎么实现图片文件上传
解决:安装vsftpd,通过Apache Commons Net包中的FTPClient类写java代码连接服务器进行文件上传。
子问题2:上面文件上传是解决了,但是要怎么实现图片的访问
因为:如果希望在客户端直接访问图片服务器中的图片,由于VSFTPD 是基于 FTP(文件传输协议)协议的,客户端浏览器是需要通过 http(超文本传输协议) 协议访问。怎么才能使客户端直接访问到图片服务器中的图片。
二、vsftpd
1.介绍vsftpd
vsftpd介绍请参考百度百科
注:简单理解:vsftpd(very secure FTP daemon),它可以运行在Linux...操作系统上,是一个免费、开源ftp服务器软件。
2.安装
(注:vsftpd命令代码可以看这篇:也差不多的:juejin.cn/post/684490…)
1.登陆,首先肯定要登陆自己的服务器的,使用Putty、Xshell或者其他的都行,ip地址端口22加上密码或密钥即可。
2.在线安装,输入命令后很快就安装好了
yum -y install vsftpd
vsftpd -v # 查看安装版本,可以用来检查有没有安装过
whereis vsftpd # 查看安装位置
3.添加ftp用户,并给ftp用户添加密码(注:以后访问ftp时就用这个账号)
useradd ftpuser # 创建一个新用户叫ftpuser
passwd ftpuser # 给这个用户一个密码
4.修改selinux:这个不知道有什么用,而且输入了也提示getsebool: SELinux is disabled。貌似不做也可以?
5.vsftpd.conf配置文件
关闭匿名访问(注:总不能随便谁都可以访问吧)
vim /etc/vsftpd/vsftpd.conf # 进入配置文件进行修改
找到这一行允许匿名改成NO

顺便该配置文件最后面加上这两句:顺便去防火墙把这边的端口打开,记得改完需要把防火墙配置重新加载
pasv_min_port=30000
pasv_max_port=30999
firewall-cmd --permanent --zone=public --add-port=30000-30999/tcp // 开启范围端口
firewall-cmd --reload // 配置重新加载
6.启动vsftpd服务(注:安装上服务器的东西我都理解为一个个服务)
systemctl status vsftpd.service # 查看vsftpd服务的状态
systemctl start vsftpd.service # 启动vsftpd服务
7.设置开机启动vsftpd服务
chkconfig vsftpd on # 设置开机启动(注:这句好像不行,用下面这句)
systemctl enable vsftpd.service # 设置开机启动
8.安装完了,开始测试
既然你也安装好了vsftpd的服务,用户也创建了,那么就要去测试下了,来现在访问下面网址:ftp://你的服务器IP,输入刚才创建的用户名ftpuser和密码,这时候访问的文件就是/home/ftpuser下的文件夹。可能会比较慢才能连接上进去。
三、nginx
可以看我的另一篇安装
nginx安装命令-CentOS 6装命令:juejin.cn/post/684490…
同时不要忘记让nginx代理刚刚创建的ftpuser文件夹:
nginx代理ftpuser文件夹:juejin.cn/post/684490…
四、以下是我安装时候遇到的扩展学习(与上面安装无关)
1.vim
我用的是vim编辑器,vim安装代码为:
yum -y install vim* // 安装vim,-y代表遇到需要确认的一律全部yes
使用教程:菜鸟教程使用:www.runoob.com/linux/linux…
2.firewall
1.防火墙firewall相关
#安装firewalld 防火墙
yum install firewalld
#开启服务
systemctl start firewalld.service
#关闭防火墙
systemctl stop firewalld.service
#centos7重启防火墙
systemctl restart firewalld.service
#开机自动启动
systemctl enable firewalld.service
#关闭开机制动启动
systemctl disable firewalld.service
2.使用firewall-cmd 命令
#查看防火墙所有信息
firewall-cmd --list-all
#查询服务的启动状态
firewall-cmd --query-service ftp
firewall-cmd --query-service http
#查看状态
firewall-cmd --state //running 表示运行
#获取所有支持的服务
firewall-cmd --get-service
# 防火墙重启
firewall-cmd --reload
#启用某个服务
firewall-cmd --zone=public --add-service=https //临时
firewall-cmd --permanent --zone=public --add-service=https //永久
# 防火墙中添加FTP服务
firewall-cmd --permanent --zone=public --add-service=ftp
3.端口相关
#端口详情
firewall-cmd --zone=public --add-port=80/tcp --permanent
#说明:
#–zone #作用域
#–add-port=80/tcp #添加端口,格式为:端口/通讯协议
#–permanent 永久生效,没有此参数重启后失效
#多个端口:
firewall-cmd --zone=public --add-port=80-90/tcp --permanent
#centos7查看防火墙开放的端口信息
firewall-cmd --list-ports
#查看开启的端口和服务
firewall-cmd --permanent --zone=public --list-services //服务空格隔开 例如 dhcpv6-client https ss
firewall-cmd --permanent --zone=public --list-ports //端口空格隔开 例如 8080-8081/tcp 8388/tcp 80/tcp
#开启某个端口
firewall-cmd --permanent --zone=public --add-port=8080-8081/tcp //永久
firewall-cmd --zone=public --add-port=8080-8081/tcp //临时
#删除端口
firewall-cmd --permanent --zone=public --remove-port=80/tcp
#重新加载
firewall-cmd --reload
3.CentOS文件夹介绍
扩展学习:CentOS中的文件夹介绍:blog.csdn.net/qd_ltf/arti…