FastDFS入门,从零搭建一个图片服务器

最近开发的项目中需要使用到 FastDFS,因此抽时间进行了学习,进行了总结

FastDFS

分布式文件系统

FastDFS是淘宝的余庆所开发的,是一款开源的轻量级分布式文件系统,采用纯C实现,目前提供了C,JAVA和PHP的API,主要用它来对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。同类的分布式文件系统有谷歌的GFS,HDFS,TFS等。

FastDFS服务端有两个角色:跟踪器(tracker)和存储节点(storage)。

跟踪器主要做调度工作,在访问上起负载均衡的作用。

存储节点主要的工作:存储、同步和提供存取接口。

整体来说:FastDFS主要有以下两个特点:

  1. 高可靠性:无单点故障;
  2. 高吞吐量:只要Group足够多,数据流量是足够分散的。
搭建图片服务器
  1. 安装依赖的环境

    FastDFS是C语言开发,安装FastDFS需要先从官网下载源码,然后进行编译,但编译依赖 gcc 环境,如果没有 gcc 环境,需要安装

    • linux虚拟机安装 :https://blog.csdn.net/qq_38257022/article/details/108208233
    • 解决linux系统连接不到网络 :https://jingyan.baidu.com/article/363872ec796dfc6e4ba16f09.html
    • xshell安装及使用 :https://www.jianshu.com/p/4716cc35750f
    • 注意:配置网络时,网段一点要相同!!! 最后一定不相同!!

语言环境安装,一般使用 yum 命令,因为该命令依赖安装的很完整

//安装 gcc 环境
yum -y install gcc-c++
  • FastDFS 依赖 libevent 库,需要安装:
yum -y install libevent
  • 用root用户登录,在 /usr/local 目录下 新建 文件夹 fastdfs,并把相应压缩包传入
  FastDFS_v5.05.tar.gz    (FastDFS安装包)

  libfastcommonV1.0.7.tar.gz  (FastDFS依赖程序)

  nginx-1.8.0.tar.gz  (nginx安装包,用于做文件请求http代理服务器)

  fastdfs-nginx-module_v1.16.tar.gz (nginx和fastdfs的桥梁插件模块)

3) 安装libfastcommon

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

cd /usr/local/fastdfs/
tar -zxf libfastcommonV1.0.7.tar.gz 
cd libfastcommon-1.0.7/
./make.sh
./make.sh install

需要将 /usr/lib64 下的库文件拷贝至 /usr/lib 下

cd /usr/lib64
cp libfastcommon.so /usr/lib/

4)安装FastDFS_v5.05 (tracker+storage)

注意,此处我们将两个东西配置在一台服务器,真实环境考虑高可用,应该是部署在多台服务器

rm -rf libfastcommonV1.0.7.tar.gz       //可将解压过的压缩包删掉
tar -zxf FastDFS_v5.05.tar.gz
cd FastDFS
./make.sh                               
./make.sh install                      //安装

安装成功后将安装目录 conf 下的文件拷贝到 /etc/fdfs/ 下。(nginx)

cd /usr/local/fastdfs/FastDFS
cd conf/
cp * /etc/fdfs/

a. 安装 traker 服务。修改/etc/fdfs/tracker.conf文件

cd /usr/local/fastdfs/FastDFS/tracker/              //不一定放在该目录
vim /etc/fdfs/tracker.conf

在 tracker.conf 配置文件中 ,修改 base_path=/usr/local/fastdfs/FastDFS/tracker

/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf       //启动tracker
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart       //重启使用命令

配置开机自启动
将以上命令加入到该配置文件中
vi /etc/rc.d/rc.local
注意:配置完毕之后要将ip设置为静态 IP

b. 安装 Storage(存储) 服务

  1. 如果是在不同的服务器安装,则前面的两步需要重新执行
  2. 配置 storage 服务。 修改/etc/fdfs/storage.conf文件
cd /usr/local/fastdfs/FastDFS/storage    //安装目录,不一定必须是这个
vim /etc/fdfs/storage.conf
将 base_path 和 store_path0 路径修改为 /usr/local/fastdfs/FastDFS/storage
将tracker_server地址修改为 本机地址,端口号不变

//启动storage.conf服务
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf     //若失败,仔细检查 tracker 和 storaged 的配置文件

//上传指定文件到服务器
/usr/bin/fdfs_test /etc/fdfs/client.conf upload /root/hi.html

上传的文件不能直接访问: http://192.168.209.1/group1/M00/00/00/wKjRAWCZGm2AHT0fAAAADP8d-tA94_big.html

需要设置防火墙,将80端口添加访问

vim /etc/sysconfig/iptables
  1. 配置客户端

  2. 安装 nginx 以及 nginx 插件

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

安装 nginx和nginx插件,两者结合
可以使用官方提供的nginx插件。要使用 nginx 插件需要重新编译。
fastdfs-nginx-module_v1.16.tar.gz

安装 nginx 插件,并关联 fastDFS

1.解压插件压缩包
 tar -zxf fastdfs-nginx-module_v1.16.tar.gz
 
2. 修改fastdfs-nginx-module/src/config 文件,把其中 local 去掉

3.把 fastdfs-nginx-module/src/mod_fastdfs.conf文件复制到/etc/fafs目录下。并编辑该文件
 cp mod_fastdfs.conf /etc/fdfs/
 修改
 vim /etc/fdfs/mod_fastdfs.conf
 更改 tracker_server 为自己的地址
 url_have_group_name = true
 store_path0=/usr/local/fastdfs/FastDFS/storage      // 可以自定义

安装 nginx,并关联插件

4. 解压并进入 nginx
cd /usr/local/fastdfs/
// 解压
tar -zxf nginx-1.8.1.tar.gz 

5. 编译安装
//先回到 nginx-1.8.1 目录
//再执行
./configure --add-module=/usr/local/fastdfs/fastdfs-nginx-module/src
//编译
make
//安装
make install

cd /usr/local/nginx/

//配置
vim nginx.conf

// 在 server 中添加
        #access_log  logs/host.access.log  main;
        location /group1/M00 {
         ngx_fastdfs_module;
        }

// 在 /nginx/sbin/ 中启动 nginx
./nginx
// 查看 nginx 是否启动
ps -aux | grep nginx
// 当发现有  master process 和 worker process 线程时  说明可以工作了

完成以上步骤,则打开之前的地址:

http://192.168.209.1/group1/M00/00/00/wKjRAWCZGm2AHT0fAAAADP8d-tA94_big.html

就可以正常访问了!

SpringBoot 整合 FastDFS
  1. 添加依赖

    <dependency>
    	<groupId>com.github.tobato</groupId>
        <artifactId>fastdfs-client</artifactId>
        <Version>1.26.1-RELEASE</Version>
    </dependency>
    
  2. 导入配置

    @Import(FdfsClientConfig.class)
    
  3. 配置application.yml

    fdfs:
      so-timeout: 1500                          # 读的超时时间
      connect-timeout: 600                      # 连接的超时时间
      pool:
        jmx-enabled: false                      # 内部池
      thumb-image:                              # 缩略图(非必须)
        width: 100
        height: 100
      tracker-list: 192.168.209.1:22122
    
  4. 使用客户端操作类

    @RunWith(SpringRunner.class)
    @SpringBootTest
    public class FastdfsApplicationTests {
    
        @Autowired
        private DefaultFastFileStorageClient fastFileStorageClient;
    
        @Test
        public void fileUpload() throws FileNotFoundException {
            File file = new File("g://image2.png");
            String fileName = file.getName();
            String extName = fileName.substring(fileName.lastIndexOf(".") + 1);
            FileInputStream inputStream = new FileInputStream(file);
            StorePath storePath = fastFileStorageClient.uploadFile(inputStream, file.length(), extName, null);
            System.out.println(storePath.getGroup());
            System.out.println(storePath.getPath());
            System.out.println(storePath.getFullPath());
        }
    }
    
    
    // 执行以后在idea控制台的输出
    group1
    M00/00/00/wKjRAWCZUfqAbDCiAAAnkAfXguA484.png
    group1/M00/00/00/wKjRAWCZUfqAbDCiAAAnkAfXguA484.png
           
    // 在浏览器中访问
    http://192.168.209.1/group1/M00/00/00/wKjRAWCZUfqAbDCiAAAnkAfXguA484.png
    

搞定!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值