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后缀都去掉
1201668-20170816170335131-594759644.jpg

配置tracker

编辑tracker.conf文件

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

这里改成/home/FastDFS,然后在home目录下创建FastDFS目录
1201668-20170816170223615-949030779.jpg

启动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相关配置
1201668-20170816170305990-13210147.jpg

找到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里面配置一个虚拟机

1201668-20170816170431162-1202794326.jpg

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]);
            
            

转载于:https://www.cnblogs.com/AngeLeyes/p/7374327.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值