一般一个小型系统的图片,保存在应用服务器的项目目录下便可,可是对于一个中型规模的系统,就须要使用独立的图片服务器,单独分离图片的访问。目的是一方面缓解应用服务器的访问压力,另外一方面,一旦服务器作了集群配置,那么图片资源的同步和共享就是问题。nginx
1. 分担web服务器的访问压力,对于图片的访问压力转移到图片服务器中。c++
2. 图片服务器可以专门针对图片访问进行优化。【有专门的换存方案,提升响应速度。】web
3. 提升扩展性,图片文件的量急剧增加【社交网站,门户网站,电商网站等。】apache
4. 解决集群架构中,图片文件数据不一致的问题。服务器
1. 安装gcc架构
yum -y install gcc gcc-c++maven
2. 安装openssltcp
yum -y install zlib zlib-devel openssl openssl--devel pcre pcre-devel工具
3. 安装Nginx测试
① 解压
tar zxvf nginx-x.x.x.tar.gz
② 执行configure文件
./configure
③ 编译
make
④ 编译安装
make install
4. 使用
a) 启动
执行 /usr/local/nginx/sbin/nginx 命令,默认端口号是80
./nginx -c /usr/work/nginx/conf/nginx.conf
b) 中止
./nginx -s stop
c) 从新加载配置并生效
./nginx -s reload
5. 配置Nginx服务器中默认的服务器位置:
修改nginx.conf配置文件。
1. 安装vsftpd服务
yum -y install vsftpd
2. 添加一个访问ftp的用户
useradd baizhi --- 添加用户百知ftp
passwd baizhi --- 修改密码
3. 防火墙放行21端口,ftp的默认访问端口
--添加开放端口
/sbin/iptables -I INPUT -p tcp --dport 21 -j ACCEPT
/etc/init.d/iptables save --保存配置
service iptables restart --重启防火墙服务
4. 设置ftp访问
1. 启动ftp
/etc/init.d/vsftpd start
2. 关闭ftp
/etc/init.d/vsftpd stop
3. 关闭匿名访问
编vsftp的配置文件:/etc/vsftpd/vsftpd.conf
1. 使用主动模式,不要使用被动模式链接。
2. 设置FTP开机启动
chkconfig vsftpd on
1. 将Nginx的location目录,与FTP的用户关联起来
1. 将ftp用户目录的读权限开放755权限
chmod -R 755 /home/baizhi
测试经过Nginx服务器访问服务器端资源
1. FTPClinet简介
a) 是apache提供的commons-net包中的一个API,做用是使用FTP协议远程操做服务器端文件资源。
2. FTPClient的资源maven坐标
API介绍
//1. 准备本地文件输入流 FileInputStream in = new FileInputStream(new File("D:/text1.xls")); //2. 建立FTP客户端工具对象。 FTPClient ftp = new FTPClient(); //3. ftp客户端链接远程FTP服务器,url表明FTP服务器的ip地址,port表明ftp端口号,默认是21。 ftp.connect("192.168.137.137", 21); //4. 登录FTP服务器,username和password分别是FTP服务器(CentOS系统)的用户名和密码。 ftp.login("baizhi", "admins"); //5. 得到当前客户端对于FTP服务器的状态吗 int replyCode = ftp.getReplyCode(); //6. 判断当前的状态吗是否可使用FTP服务器。[官方文档上要求写上] if (!FTPReply.isPositiveCompletion(replyCode)) { ftp.disconnect(); System.out.println("FTP服务器不可用异常"); } //7. 设置缓冲大小为1k ftp.setBufferSize(1024); //8. 设置文件类型为二进制文件 ftp.setFileType(FTP.BINARY_FILE_TYPE); //9. 切换当前操做的目录 ftp.changeWorkingDirectory("www/baizhi/images/"); //10. 将in输入流中的文件保存在FTP服务器的切换后的目录中,而且文件名为filename。 ftp.storeFile("text.xls", in);// //11. 关闭输入流 in.close(); //12. 退出登录 ftp.logout(); //13. 断开ftp客户端链接。 if (ftp.isConnected()) { ftp.disconnect(); }
|
2. 整合SpringMVC
a) 须要将SpringMVC接受文件的MultipartFile对象,转化成输入流。
multipartFile.getInputStream();而后使用ftp.storeFile(文件名,上传文件的输入流)便可完成上传。