传智播客Java学院传智.入云龙淘淘商城第三天1第二天内容回顾1、展示商品列表。a)分页插件的使用PageHelper。b)easyUIDataGrid的使用方法2、商品类目选择a)easyUI异步tree控件的使用。3、图片上传a)为什么要有图片服务器b)FastDFSc)http服务器。Nginx。4、Nginxa)http服务器、虚拟主机、反向代理及负载均衡。b)虚拟主机i.基于端口ii.基于域名2课程计划1、nginx反向代理和负载均衡2、FastDFS的使用3、实现图片上传功能传智播客Java学院传智.入云龙3Nginx的反向代理3.1什么是反向代理正向代理Pc机互联网代理服务器Pc机Pc机传智播客Java学院传智.入云龙反向代理:反向代理服务器是引用在服务端。决定哪台服务器提供服务。3.2反向代理的模拟3.2.1反向代理应该有一个nginx服务器有多个应用服务器(可以是tomcat)可以使用一台虚拟机,安装一个nginx,多个tomcat,来模拟。Nginx的配置文件:upstreamtomcats{server192.168.25.148:8080;server192.168.25.148:8081;}server{listen80;server_nametomcat.taotao.com;#charsetkoi8-r;#access_loglogs/host.access.logmain;location/{proxy_pass机淘宝首页服务器淘宝首页服务器淘宝首页服务器反向代理服务器}}3.2.2负载均衡只需要在upstream的server后面添加一个weight即可代表权重。权重越高,分配请求的数量就越多。默认权重是14图片服务器的搭建4.1什么是FastDFSFastDFS是用c语言编写的一款开源的分布式文件系统。FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。传智播客Java学院传智.入云龙4.2文件上传流程传智播客Java学院传智.入云龙4.3文件下载流程4.4上传文件的文件名客户端上传文件后存储服务器将文件ID返回给客户端,此文件ID用于以后访问该文件的索引信息。文件索引信息包括:组名,虚拟磁盘路径,数据两级目录,文件名。组名:文件上传后所在的storage组名称,在文件上传成功后有storage服务器返回,需要客户端自行保存。虚拟磁盘路径:storage配置的虚拟路径,与磁盘选项store_path*对应。如果配置了store_path0则是M00,如果配置了store_path1则是M01,以此类推。数据两级目录:storage服务器在每个虚拟磁盘路径下创建的两级目录,用于存储数据文件。文件名:与文件上传时不同。是由存储服务器根据特定信息生成,文件名包含:源存储服务器IP地址、文件创建时间戳、文件大小、随机数和文件拓展名等信息。传智播客Java学院传智.入云龙4.5FastDFS搭建可以使用一台虚拟机来模拟,只有一个Tracker、一个Storage服务。配置nginx访问图片。4.5.1搭建步骤第一步:把fastDFS都上传到linux系统。第二步:安装FastDFS之前,先安装libevent工具包。yum-yinstalllibevent第三步:安装libfastcommonV1.0.7工具包。1、解压缩2、./make.sh3、./make.shinstall4、把/usr/lib64/libfastcommon.so文件向/usr/lib/下复制一份第四步:安装Tracker服务。1、解压缩2、./make.sh3、./make.shinstall安装后在/usr/bin/目录下有以fdfs开头的文件都是编译出来的。配置文件都放到/etc/fdfs文件夹4、把/root/FastDFS/conf目录下的所有的配置文件都复制到/etc/fdfs下。5、配置tracker服务。修改/root/FastDFS/conf/tracker.conf文件。传智播客Java学院传智.入云龙6、启动tracker。/usr/bin/fdfs_trackerd/etc/fdfs/tracker.conf重启使用命令:/usr/bin/fdfs_trackerd/etc/fdfs/tracker.confrestart第五步:安装storage服务。1、如果是在不同的服务器安装,第四步的1~4需要重新执行。2、配置storage服务。修改/root/FastDFS/conf/storage.conf文件3、启动storage服务。/usr/bin/fdfs_storaged/etc/fdfs/storage.confrestart第六步:测试服务。1、修改配置文件/etc/fdfs/client.conf传智播客Java学院传智.入云龙2、测试/usr/bin/fdfs_test/etc/fdfs/client.confuploadanti-steal.jpg第七步:搭建nginx提供http服务。可以使用官方提供的nginx插件。要使用nginx插件需要重新编译。fastdfs-nginx-module_v1.16.tar.gz1、解压插件压缩包2、修改/root/fastdfs-nginx-module/src/config文件,把其中的local去掉。3、对nginx重新config./configure\--prefix=/usr/local/nginx\--pid-path=/var/run/nginx/nginx.pid\--lock-path=/var/lock/nginx.lock\--error-log-path=/var/log/nginx/error.log\--http-log-path=/var/log/nginx/access.log\--with-http_gzip_static_module\--http-client-body-temp-path=/var/temp/nginx/client\--http-proxy-temp-path=/var/temp/nginx/proxy\--http-fastcgi-temp-path=/var/temp/nginx/fastcgi\--http-uwsgi-temp-path=/var/temp/nginx/uwsgi\--http-scgi-temp-path=/var/temp/nginx/scgi\--add-module=/root/fastdfs-nginx-module/src4、make5、makeinstall6、把/root/fastdfs-nginx-module/src/mod_fastdfs.conf文件复制到/etc/fdfs目录下。编辑:传智播客Java学院传智.入云龙7、nginx的配置在nginx的配置文件中添加一个Server:server{listen80;server_name192.168.101.3;location/group1/M00/{#root/home/FastDFS/fdfs_storage/data;ngx_fastdfs_module;}}8、将libfdfsclient.so拷贝至/usr/lib下cp/usr/lib64/libfdfsclient.so/usr/lib/9、启动nginx4.6图片服务的使用官方提供一个jar包使用方法:1、把FastDFS提供的jar包添加到工程中2、初始化全局配置。加载一个配置文件。3、创建一个TrackerClient对象。4、创建一个TrackerServer对象。5、声明一个StorageServer对象,null。6、获得StorageClient对象。7、直接调用StorageClient对象方法上传文件即可。@TestpublicvoidtestUpload()throwsException{//1、把FastDFS提供的jar包添加到工程中//2、初始化全局配置。加载一个配置文件。传智播客Java学院传智.入云龙ClientGlobal.init(D:\\workspaces-itcast\\JaveEE18\\taotao-manager\\taotao-manager-web\\src\\main\\resources\\properties\\client.conf);//3、创建一个TrackerClient对象。TrackerClienttrackerClient=newTrackerClient();//4、创建一个TrackerServer对象。TrackerServertrackerServer=trackerClient.getConnection();//5、声明一个StorageServer对象,null。StorageServerstorageServer=null;//6、获得StorageClient对象。StorageClientstorageClient=newStorageClient(trackerServer,storageServer);//7、直接调用StorageClient对象方法上传文件即可。String[]strings=storageClient.upload_file(D:\\Documents\\Pictures\\images\\2f2eb938943d.jpg,jpg,null);for(Stringstring:strings){System.out.println(string);}}Client.conftracker_server=192.168.25.133:221224.7使用工具类上传图片@TestpublicvoidtestFastDfsClient()throwsException{FastDFSClientclient=newFastDFSClient(D:\\workspaces-itcast\\JaveEE18\\taotao-manager\\taotao-manager-web\\src\\main\\resources\\properties\\client.conf);StringuploadFile=client.uploadFile(D:\\Documents\\Pictures\\images\\200811281555127886.jpg,jpg);System.out.println(uploadFile);}传智播客Java学院传智.入云龙5图片上传功能5.1功能分析5.1.1请求的参数:传智播客Java学院传智.入云龙5.1.2请求的url:/pic/upload参考文档:添加jar包:Commons-io、fileupload,两个jar包。5.1.4在springmvc.xml中配置多媒体解析器beanid=multipartResolverclass=org.springframework.web.multipart.commons.CommonsMultipartResolver!--设定默认编码--propertyname=defaultEncodingvalue=UTF-8/property!--设定文件上传的最大值5MB,5*1024*1024--propertyname=maxUploadSizevalue=5242880/property/bea