zoukankan      html  css  js  c++  java
  • FastDFS在linux下的安装和整合nginx实现上传图片和url访问

    安装

    FastDFS依赖libevent库,需要安装:

    yum -y install libevent
    

    安装libfastcommon

    libfastcommon是FastDFS官方提供的,libfastcommon包含了FastDFS运行所需要的一些基础库

    上传安装包,解压

    tar -xf libfastcommonV1.0.7.tar.gz
    

    进入解压的文件夹编译和安装

     ./make.sh && ./make.sh install
    

    将/usr/lib64目录下的libfastcommon.os拷贝到/usr/lib目录下

    cp libfastcommon.so /usr/lib
    

    FastDFS-Tracker安装

    上传FastDFS_v5.05.tar.gz文件,解压

    tar -xf *.gz
    

    编译&安装

    进入FastDFS/

    ./make.sh && ./make.sh install
    

    执行完成后,会将如下3个文件拷贝到/etc/fdfs目录下,拷贝这个动作它自己会执行。

    client.conf.sample

    storage.conf.sample

    tracker.conf.sample

    进入/etc/fdfs把三个配置文件的.sample后缀都去掉

    配置tracker

    编辑tracker.conf文件

    Base_path是日志和数据存储目录,需要修改为自己的路径,

    这里改成/home/FastDFS,然后在home目录下创建FastDFS目录

    启动tracker

    /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
    

    检查是否启动

    ps -ef | grep  tracker
    

    设置开机启动

    进入

    vi /etc/rc.local
    

    添加启动命令即可

    /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
    

    FastDFS—storage安装

    Storage在同一台安装tracker的机器上不需要进行安装,只需要修改配置即可

    如果没有安装,则必须安装tracker

    配置storage

    到/etc/fdfs目录,编辑storage.conf,修改storage相关配置

    找到base_path=/home/yuqing/FastDFS改为:base_path=/home/FastDFS

    //(fdfs_storage必须存在,没有就创建,可以写多个挂载磁盘)

    找到store_path0=/home/yuqing/FastDFS改为:store_path0=/home/FastDFS/fdfs_storage

    tracker_server=192.168.237.192:22122 ip改为本机ip,同样有多个可以创建多个

    不要忘了在/home/FastDFS下创建fdfs_storage文件夹

    启动storage

    /usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
    

    大概会启动一分钟

    查看是否开启成功

    ps -ef | grep storage
    

    设置开机启动参考上面的tracker

    本地上传文件测试

    首先配置/etc/fdfs/client.conf

    修改client.conf2个参数

    Base_path=/home/FastDFS

    Tracker_server=192.168.174.130:22122//ip为本机ip

    上传一张图片到linux

    再通过命令上传到fastdfs服务器

    上传成功会返回访问地址,说明配置成功,不过暂时还无法访问,需要和nginx整合才能通过浏览器直接访问图片

    /usr/bin/fdfs_test /etc/fdfs/client.conf upload /usr/local/image/zookeeper.jpg 
    

    1. Fastfdfs整合Nginx

    为了通过http请求的方式去访问storage里存储的文件,我们可以通过给Nginx添加fastdfs-nginx-module模块来实现,当然,使用nginx的主要目的是负载均衡及实现高可用。

    安装fastdfs-nginx-module

    进入fastdfs-nginx-module/src,配置config

    把有local的路径的local删除

    配置mod_fastdfs.conf

    需要修改的地方

    tracker_server=192.168.237.192:22122(本机ip)
    base_path=/home/FastDFS
    store_path0=/home/FastDFS/fdfs_storage
    url_have_group_name = true
    

    mod_fastdfs.conf修改后拷贝到/etc/fdfs目录下

    再将usr/lib64目录下的2个文件libfastcommon.so libfdfsclient.so

    拷贝到usr/lib下

    安装nginx

    安装依赖

    yum install -y pcre pcre-devel
    yum install -y zlib zlib-devel
    yum install -y openssl openssl-devel
    

    指定安装路径和安装fastdfs-nginx-module模块

    ./configure --prefix=/usr/local/nginx/
    ./configure --add-module=/usr/local/app/fastDFS/fastdfs-nginx-module/src
    

    然后直接安装

    make && make install
    

    安装完之后,会在local文件夹下面生成一个/usr/local/nginx,这个才是真正的文件路径,那个安装包只是用来安装

    拷贝/usr/local/app/fastDFS/FastDFS/conf下的http.conf和 mime.type到/etc/fdfs

    启动

    /usr/local/nginx/sbin/nginx
    

    关闭

     /usr/local/nginx/sbin/nginx -s stop
    

    浏览器输入localhost会看到nginx的欢迎界面

    在nginx里面配置一个虚拟机

    Location模块里面标识以 /group1/M00开始的,交给 ngx_fastdfs_module模块处理,root
    指定了静态文件根目录

    开启80端口,重启

    再次上传一张照片,访问照片地址

    后台上传代码实现

    向fastDFS只需要三个参数

    1.如下的tracker.conf

    2.文件的字节数组

    3.文件的后缀

    配置文件

    在resource下添加文件tracker.conf

    内容是你的fastDFS的ip,我这里java代码是在另外一台windows下写的,所以属于远程调用

    tracker_server=192.168.237.129:22122
    

    字节数组和后缀

    获取从前端传入的图片

    @ResponseBody
    	@RequestMapping(value="/upload",method=RequestMethod.POST)
    	public String upload1(@RequestParam(value="uploadFile")MultipartFile file,HttpSession session) throws Exception
    	{
    	
    		suffix=file.getBytes();
    		//获取文件名称后缀
    		String filename = file.getOriginalFilename();
    		String suffix = StringUtils.substringAfterLast(filename, ".");
    		
    	
    		
    	}
    	
    

    上传

    			//初始化tracker配置信息   tracker.conf的绝对路径
    			ClientGlobal.init("F:/git/mall-web/src/main/resources/resource/tracker.conf");
    
    			//创建一个tracker客户端
    			TrackerClient tracker = new TrackerClient();
    			
    			//通过tracker客户端获取tracker链接信息
    			TrackerServer trackerServer = tracker.getConnection();
    			
    			//定义一个Storage服务
    			StorageServer storageServer = null;
    
    			//通过trackerserver获取Storage信息,然后创建一个Storage客户端
    			StorageClient storageClient = new StorageClient(trackerServer, storageServer);
    
    			//文件上传   参数1字节数组,参数2文件后缀名
    			String[] fileIds = storageClient.upload_file(buffer,suffix,null);
    			
    			//有了fileIds可以得到文件的全路径比如
    			//http://192.168.174.128/group1/M00/00/00/wKiugFmSvSWAJLFdAAArGuxAxEw905.jpg
    			//这样数据库就只需要存入一个这样的路径就可以了
    			//FastDFS_Domain配置的域名,如果没有配置可以直接写远程ip
    			//得到访问路径
    			String url ="www.mall.com"+fileIds[0]+"/"+fileIds[1];
    			//String[] fileIds = storageClient.upload_file();
    			////System.out.println("组名:" + fileIds[0]);
    			//System.out.println("路径: " + fileIds[1]);
    			
    			
    
  • 相关阅读:
    WM_MOUSEWHEEL消息的处理
    Delphi之TStrings和TStringLists类[转]
    使用mysqladmin命令修改Mysql密码
    AP_发票与预付款核销时预付款带税码
    ORACLE EBS AP发票到付款的数据流
    .关于货币大写的探索
    Oracle SQL 空值排序(Nulls)
    实现主从关系Form中汇总行金额/数量
    巧妙的查看FORM中的 LOV查询语句
    供应商接口的使用
  • 原文地址:https://www.cnblogs.com/AngeLeyes/p/7374327.html
Copyright © 2011-2022 走看看