淘淘购物网Ⅳ-(vsftpd)图片服务器模块
图片服务器分析
传统项目中的图片管理
传统项目中,可以在web项目中添加一个文件夹,来存放上传的图片。例如在工程的根目录WebRoot下创建一个images文件夹。把图片存放在此文件夹中就可以直接使用在工程中引用。
优点:引用方便,便于管理
缺点:①如果是分布式环境图片引用会出现问题。
②图片的下载会给服务器增加额外的压力
传统图片管理方式在分布式环境中的问题
分布式环境的图片管理
搭建图片服务器
1、 判断是否安装了vsftpd #rpm -qa | grep vsftpd
2、 #yum install vsftpd -y
3、 查看端口是否占用 #netstat -nltp|grep 21
开放21端口:#firewall-cmd --zone=public --add-port=21/tcp –permanent
4、 开启被动模式
firewall-cmd --zone=public --add-port=30000:30999 –permanent
默认是开启的,但是要指定一个端口范围,打开vsftpd.conf文件,在后面加上
pasv_min_port=30000
pasv_max_port=30999
表示端口范围为30000~30999,这个可以随意改。改完重启一下vsftpd
5、 配置FTP权限
了解 VSFTPD 配置
vsftpd 的配置目录为 /etc/vsftpd,包含下列的配置文件:
vsftpd.conf 为主要配置文件
ftpusers 配置禁止访问 FTP 服务器的用户列表
user_list 配置用户访问控制
6、 阻止匿名访问和切换根目录
编辑 /etc/vsftpd/vsftpd.conf,找到下面两处配置
并修改:
禁用匿名用户 anonymous_enable=NO
禁止切换根目录 chroot_local_user=YES
7、 重启FTP服务systemctl restart vsftpd
8、 开启ftp功能
[root@localhost ~]# getsebool -a | grep ftp
ftp_home_dir --> off
ftpd_anon_write --> off
ftpd_connect_all_unreserved --> off
ftpd_connect_db --> off
ftpd_full_access --> off
ftpd_use_cifs --> off
ftpd_use_fusefs --> off
ftpd_use_nfs --> off
ftpd_use_passive_mode --> off
httpd_can_connect_ftp --> off
httpd_enable_ftp_server --> off
sftpd_anon_write --> off
sftpd_enable_homedirs --> off
sftpd_full_access --> off
sftpd_write_ssh_home --> off
tftp_anon_write --> off
tftp_home_dir --> off
[root@localhost ~]# setsebool -P ftp_home_dir on
[root@localhost ~]# setsebool -P ftpd_full_access=on
9、 访问:ftp://xxx.xxx.xx.xxx即可
10、 限制该用户仅能通过 FTP 访问
限制用户 ftpuser 只能通过 FTP 访问服务器,而不能直接登录服务器:
usermod -s /sbin/nologin ftpuser
1、 为用户分配主目录
为用户 ftpuser 创建主目录
并约定:
/data/ftp 为主目录, 该目录不可上传文件
/data/ftp/pub 文件只能上传到该目录下
mkdir -p /data/ftp/pub
创建登录欢迎文件
echo "Welcome to use FTP service." > /data/ftp/welcome.txt 设置访问权限
chmod a-w /data/ftp && chmod 777 -R /data/ftp/pub
设置为用户的主目录:
usermod -d /data/ftp ftpuser
设置开机启动vsftpd服务
chkconfig vsftpd on
systemctl enable vsftpd.service
2、 访问 FTP 服务
FTP 服务已安装并配置完成,下面我们来使用该 FTP 服务 访问 FTP 服务
根据您个人的工作环境,选择一种方式来访问已经搭建的 FTP 服务 通过
Windows 资源管理器访问
Windows 用户可以复制下面的链接
到资源管理器的地址栏访问:
ftp://ftpuser:ftppassword@xxx.xxx.xxx.xxx
3、 通过 FTP 客户端工具访问
FTP 客户端工具众多,下面推荐两个常用的:
WinSCP - Windows 下的 FTP 和 SFTP 连接客户端
FileZilla - 跨平台的 FTP 客户端,支持 Windows 和 Mac
下载和安装 FTP 客户端后,使用下面的凭据进行连接即可:
主机: xxx.xxx.xxx.xxx
用户: ftpuser 密码: ftpuser
如果能够正常连接,那么大功告成,您可以开始使用属于您自己的 FTP 服务器了! 接下来,请上传任意一张图片到您的 FTP 服务器上的pub目录下,
然后,就可以在 /data/ftp/pub 中看到了。 注意: 请不要直接上传文件到根目录下,您应该选择上传到 pub 目录下
使用http服务
使用filezilla.exe客户端
使用java程序(FTPClient)
ftp可以需要依赖commons-net-3.3.jar包。
@Test
public void testFtpClient() throws Exception {
//创建一个FtpClient对象
FTPClient ftpClient = new FTPClient();
//创建ftp连接。默认是21端口
ftpClient.connect("192.168.20.16", 21);
//登录ftp服务器,使用用户名和密码
ftpClient.login("ftpuser", "ftpuser");
//上传文件。
//读取本地文件
FileInputStream inputStream = new FileInputStream(new File("E:/ngxz.jpg"));
//设置上传的路径
ftpClient.changeWorkingDirectory("/home/ftpuser/www/images");
//修改上传文件的格式
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
//第一个参数:服务器端文档名
//第二个参数:上传文档的inputStream
ftpClient.storeFile("ngxz.jpg", inputStream);
//关闭连接
ftpClient.logout();
}
原文:https://www.cnblogs.com/lishangnotes/p/12143072.html