一、 FTP 服务器


   FTP 是 File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。
用于 Internet 上的控制文件的双向传输。同时,它也是一个应用程序(Application)。
基于不同的操作系统有不同的 FTP 应用程序,而所有这些应用程序都遵守同一种协议以传
输文件。
  在 FTP 的使用当中,用户经常遇到两个概念:"下载"(Download)和"上传"(Upload)。
"下载"文件就是从远程主机拷贝文件至自己的计算机上;"上传"文件就是将文件从自己的计
算机中拷贝至远程主机上。用 Internet 语言来说,用户可通过客户机程序向(从)远程主机
上传(下载)文件。

 

VSFTPD

二、 VSFTPD简介

  vsftpd 是“very secure FTP daemon”的缩写,安全性是它的一个最大的特点。vsftpd 

是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux、BSD、Solaris、HP-UNIX 等系统上面,

是一个完全免费的、开放源代码的 ftp 服务器软件,支持很多其他的FTP 服务器所不支持的特征。

  VSFTPD

 

三、 项目中图片服务器
1 单体架构中的图片管理
在传统的单体架构项目中,可以在 web 项目中添加一个文件夹,来存放上传的图片。
例如在工程的根目录 WebRoot 下创建一个 images 文件夹用于保存已上传的图片。
优点:使用方便,便于管理
缺点:
1、如果是分布式环境中图片引用会出现问题。
2、图片的下载会给服务器增加额外的压力

 

2 单体架构图片存储架构图

VSFTPD

 

3 传统图片管理方式在分布式环境中的问题:

VSFTPD

 

4 分布式环境的图片管理

VSFTPD

 

四、 安装 VSFTP


1 安装 vsftpd 组件


yum -y install vsftpd
安装完后,有/etc/vsftpd/vsftpd.conf 文件,是 vsftp 的配置文件。


2 添加一个 Linux 用户


此用户就是用来登录 ftp 服务器用的。
useradd ftpuser
这样一个用户建完,可以用这个登录。登录后默认的路径为 /home/ftpuser.


3 给用户添加密码。


passwd ftpuser
输入两次密码后修改密码。


4 防火墙开启 21 端口


因为 ftp 默认的端口为 21,而 centos 默认是没有开启的,所以要修改 iptables 文件
vim /etc/sysconfig/iptables
在行上面有 22 -j ACCEPT 下面另起一行输入跟那行差不多的,只是把 22 换成 21,然后:
wq 保存。
还要运行下,重启 iptables
service iptables restart

 

5 修改 selinux


外网是可以访问上去了,可是发现没法返回目录(使用 ftp 的主动模式,被动模式还是无法
访问),也上传不了,因为 selinux 作怪了。
修改 selinux:
执行以下命令查看状态:
[root@bogon ~]# getsebool -a | grep ftp
allow_ftpd_anon_write --> off
allow_ftpd_full_access --> off
allow_ftpd_use_cifs --> off
allow_ftpd_use_nfs --> off
ftp_home_dir --> off
ftpd_connect_db --> off
ftpd_use_passive_mode --> off
httpd_enable_ftp_server --> off
tftp_anon_write --> off
[root@bogon ~]#
执行上面命令,再返回的结果看到两行都是 off,代表,没有开启外网的访问
[root@bogon ~]# setsebool -P allow_ftpd_full_access on
[root@bogon ~]# setsebool -P ftp_home_dir on

 

6 关闭匿名访问


修改/etc/vsftpd/vsftpd.conf 文件:

VSFTPD

重启 ftp 服务:
service vsftpd restart

 

7 设置开机启动 vsftpd ftp 服务

 

五、 图片上传


1 使用 FileZilla 上传图片


chkconfig vsftpd on

VSFTPD

 

2 使用 FTP 协议访问图片服务器


2.1FTP 协议的 URL 格式


ftp://username:userpassword@IP/路径/图片名称
在 VSFTPD 的插件中。不允许这样访问。必须要有登录环节。

VSFTPD

VSFTPD

 

3 FTPClient 工具


3.1FTPClient 介绍


FTPClient 是 Apache 提供的一个开源的基于 JAVA 语言的 FTP 客户端工具。
FTPClient 位于 Apache 的 commons-net 项目中

 

3.2FTPClient 的使用


3.2.1创建项目

VSFTPD

3.2.2编写测试代码

VSFTPD
public class Test {
public static void main(String[] args) throws
Exception {
Test t = new Test();
t.FTPClientTest();
}
//FTPClient 的使用
public void FTPClientTest()throws Exception{
//创建 FTPClient 对象
FTPClient ftp = new FTPClient();
//链接 端口使用的 21
ftp.connect("192.168.70.144",21);
//给定用户名与密码,链接时完成登录
ftp.login("ftpuser", "ftpuser");
//操作上传文件
InputStream is = new
FileInputStream("d:/1.jpg");
//指定上传文件的保存目录
ftp.changeWorkingDirectory("/home/ftpuser/sui
bian");
//开启字节流传输
ftp.setFileType(FTPClient.BINARY_FILE_TYPE);
//文件上传
ftp.storeFile("aa.jpg", is);
//退出登录
ftp.logout();
}
}
View Code

相关文章:

  • 2021-04-20
  • 2021-07-18
  • 2021-05-27
  • 2022-03-09
  • 2022-02-13
  • 2021-11-03
  • 2021-10-30
  • 2021-12-30
猜你喜欢
  • 2021-08-31
  • 2022-01-20
相关资源
相似解决方案