目录

一、概述

二、下载安装 libfastcommon

三、下载安装FastDFS

四、配置FastDFS跟踪器(Tracker)

五、配置 FastDFS 存储 (Storage)

六、文件上传测试

七、总结


一、概述

前面一篇文章我们对FastDFS进行了详细的介绍,相信小伙伴们对分布式文件存储有了进一步认识。本篇文章我们将在Linux环境下搭建一个FastDFS环境。

二、下载安装 libfastcommon

libfastcommon是从 FastDFS 和 FastDHT 中提取出来的公共 C 函数库,基础环境,安装即可 。

【a】下载libfastcommonV1.0.7.tar.gz压缩包

这个小伙伴们可以百度下载即可。

【b】上传安装包到服务器中

这里创建一个专门存放安装包的文件夹:

[root@weishihuai /]# mkdir fastdfs
[root@weishihuai /]# cd fastdfs/
[root@weishihuai fastdfs]# 

然后使用xftp上传安装包到服务器中,如下图:

【c】安装gcc 依赖环境

因为FastDFS是使用c语言开发,需要先安装gcc环境,否则之后运行类库的 ./make.sh 会报错,如下图:

[root@localhost ~]# yum -y install gcc
[root@localhost ~]# yum -y install gcc-c++

【d】解压

[root@weishihuai fastdfs]# ll
total 72
-rw-r--r--. 1 root root 73148 Nov  9 14:09 libfastcommonV1.0.7.tar.gz
[root@weishihuai fastdfs]# tar -zxvf libfastcommonV1.0.7.tar.gz

解压后,会生成libfastcommon-1.0.7文件夹,里面有make.sh编译脚本。

【e】编译、安装

[root@localhost libfastcommon-1.0.7]# ./make.sh
[root@localhost libfastcommon-1.0.7]# ./make.sh install

【f】libfastcommon.so 安装到了/usr/lib64/libfastcommon.so但是FastDFS主程序设置的lib目录是/usr/local/lib,所以需要创建软链接。

[root@localhost /]# ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so
[root@localhost /]# ln -s /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so
[root@localhost /]# ln -s /usr/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so
[root@localhost /]# ln -s /usr/lib64/libfdfsclient.so /usr/lib/libfdfsclient.so 

三、下载安装FastDFS

【a】下载FastDFS

下载地址:https://sourceforge.net/projects/fastdfs/files/,我们会看到如下图所示界面:

选择FastDFS Server Source Code,如下:

这里我们选择下载最多的应该也是比较稳定的版本:FastDFS Server with PHP Extension Source Code V5.05。

点击之后就能成功下载fastdfs压缩包。

【b】解压

将安装包上传到服务器中:

[root@localhost fastdfs]# tar -zxvf FastDFS_v5.05.tar.gz 

解压缩之后,可以看到生成了FastDFS文件夹,里面有编译相关脚本:

[root@localhost fastdfs]# ll
total 412
drwxr-xr-x. 10 8980 users    258 Dec  2  2014 FastDFS
-rw-r--r--.  1 root root  345400 Nov  9 14:39 FastDFS_v5.05.tar.gz
drwxrwxr-x.  3 root root     102 Nov  9 14:31 libfastcommon-1.0.7
-rw-r--r--.  1 root root   73148 Nov  9 14:30 libfastcommonV1.0.7.tar.gz
[root@localhost fastdfs]# cd FastDFS/
[root@localhost FastDFS]# ll
total 120
drwxr-xr-x. 3 8980 users  4096 Dec  2  2014 client
drwxr-xr-x. 2 8980 users   261 Dec  2  2014 common
drwxr-xr-x. 2 8980 users   146 Dec  2  2014 conf
-rw-r--r--. 1 8980 users 35067 Dec  2  2014 COPYING-3_0.txt
-rw-r--r--. 1 8980 users  2802 Dec  2  2014 fastdfs.spec
-rw-r--r--. 1 8980 users 31386 Dec  2  2014 HISTORY
drwxr-xr-x. 2 8980 users    48 Dec  2  2014 init.d
-rw-r--r--. 1 8980 users  7755 Dec  2  2014 INSTALL
-rwxr-xr-x. 1 8980 users  5813 Dec  2  2014 make.sh
drwxr-xr-x. 2 8980 users  4096 Dec  2  2014 php_client
-rw-r--r--. 1 8980 users  2380 Dec  2  2014 README.md
-rwxr-xr-x. 1 8980 users  1768 Dec  2  2014 restart.sh
-rwxr-xr-x. 1 8980 users  1680 Dec  2  2014 stop.sh
drwxr-xr-x. 4 8980 users  4096 Dec  2  2014 storage
drwxr-xr-x. 2 8980 users  4096 Dec  2  2014 test
drwxr-xr-x. 2 8980 users  4096 Dec  2  2014 tracker
[root@localhost FastDFS]#

【c】编译、安装

[root@localhost FastDFS]# ./make.sh
[root@localhost FastDFS]# ./make.sh install

【d】FastDFS默认服务脚本路径

/etc/init.d/fdfs_storaged
/etc/init.d/fdfs_trackerd

【e】FastDFS相关配置文件示例

/etc/fdfs/client.conf.sample
/etc/fdfs/storage.conf.sample
/etc/fdfs/tracker.conf.sample

【f】FastDFS默认的脚本安装后放在/usr/bin下面

但是FastDFS 服务脚本设置的 bin 目录是 /usr/local/bin,所以还是需要建立 /usr/bin 到 /usr/local/bin 的软链接。

[root@localhost fdfs]# ln -s /usr/bin/fdfs_trackerd   /usr/local/bin
[root@localhost fdfs]# ln -s /usr/bin/fdfs_storaged   /usr/local/bin
[root@localhost fdfs]# ln -s /usr/bin/stop.sh         /usr/local/bin
[root@localhost fdfs]# ln -s /usr/bin/restart.sh      /usr/local/bin

四、配置FastDFS跟踪器(Tracker)

【a】进入 /etc/fdfs,复 tracker.conf.sample,并重命名为 tracker.conf

[root@localhost fdfs]# ll
total 20
-rw-r--r--. 1 root root 1461 Nov  9 14:42 client.conf.sample
-rw-r--r--. 1 root root 7829 Nov  9 14:42 storage.conf.sample
-rw-r--r--. 1 root root 7102 Nov  9 14:42 tracker.conf.sample
[root@localhost fdfs]# cp tracker.conf.sample  tracker.conf
[root@localhost fdfs]# 

【b】编辑tracker.conf,需要修改如下几个地方

vim tracker.conf
  • disabled=false
  • port=22122
  • base_path=/fastdfs/tracker
  • http.server_port=80

【c】创建Tracker 数据和日志目录地址

[root@localhost fdfs]# mkdir /fastdfs/tracker

【d】防火墙中打开跟踪端口(默认的22122)

[root@localhost fastdfs]# vim /etc/sysconfig/iptables

加入开放22122端口的配置:

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22122 -j ACCEPT

修改完成后,重启防火墙:

service iptables restart

【e】启动Tracker

使用如下命令启动Tracker跟踪器:

[root@localhost /]# /etc/init.d/fdfs_trackerd start
Reloading systemd:                                         [  OK  ]
Starting fdfs_trackerd (via systemctl):                    [  OK  ]
[root@localhost /]# 

启动成功后,会在 /fastdfs/tracker (配置的base_path)下创建 data、logs 两个目录,如下所示:

查看 FastDFS Tracker 是否已成功启动 ,22122端口正在被监听,则说明Tracker服务安装成功。

【f】 设置Tracker开机启动

[root@localhost tracker]# chkconfig fdfs_trackerd on

【g】Tracker server 目录及文件结构

Tracker服务启动成功后,会在base_path下创建data、logs两个目录。目录结构如下:

${base_path}|__data|   |__storage_groups.dat:存储分组信息|   |__storage_servers.dat:存储服务器列表|__logs|   |__trackerd.log: tracker server 日志文件

五、配置 FastDFS 存储 (Storage)

【a】复制 storage.conf.sample,并重命名为 storage.conf

[root@localhost fdfs]# cp storage.conf.sample storage.conf
[root@localhost fdfs]# ll
total 36
-rw-r--r--. 1 root root 1461 Nov  9 14:42 client.conf.sample
-rw-r--r--. 1 root root 7829 Nov  9 15:41 storage.conf
-rw-r--r--. 1 root root 7829 Nov  9 14:42 storage.conf.sample
-rw-r--r--. 1 root root 7234 Nov  9 15:12 tracker.conf
-rw-r--r--. 1 root root 7102 Nov  9 14:42 tracker.conf.sample

【b】编辑storage.conf

主要修改下面几个地方:

  • disabled=false
  • group_name=group1
  • port=23000
  • heart_beat_interval=30
  • base_path=/fastdfs/storage
  • store_path_count=1
  • store_path0=/fastdfs/file
  • subdir_count_per_path=256
  • tracker_server=192.168.179.133:22122
  • sync_start_time=00:00
  • sync_end_time=23:59
  • http.server_port=80

【c】创建Storage基础数据目录,对应base_path目录

[root@localhost fdfs]# mkdir /fastdfs/storage
[root@localhost fdfs]# mkdir /fastdfs/file

【d】防火墙中打开存储器端口(默认的 23000)

-A INPUT -m state --state NEW -m tcp -p tcp --dport 23000 -j ACCEPT

修改完成之后,重启防火墙:

service iptables restart

【e】启动 Storage

启动Storage前确保Tracker是启动的。

[root@localhost fdfs]# /etc/init.d/fdfs_storaged start
Starting fdfs_storaged (via systemctl):                    [  OK  ]

启动成功之后,会在 /fastdfs/storage 目录下创建 data、 logs 两个目录,如下图所示:

查看 Storage 是否成功启动,23000 端口正在被监听,就算 Storage 启动成功:

netstat -unltp | grep fdfs

【f】设置storage开机自启动

[root@localhost storage]# chkconfig fdfs_storaged on

【g】查看Storage和Tracker是否在通信

/usr/bin/fdfs_monitor /etc/fdfs/storage.conf

【h】Storage 目录

同 Tracker,Storage 启动成功后,在base_path 下创建了data、logs目录,记录着 Storage Server 的信息。

在 store_path0 目录下,创建了N*N个子目录:

六、文件上传测试

【a】复制Tracker客户端配置文件,并取名"client.conf"

[root@localhost fdfs]# cp client.conf.sample client.conf

【b】修改client.conf

主要修改下面几个地方:

  • base_path=/fastdfs/client
  • tracker_server=192.168.179.133:22122

【c】创建base_path路径

mkdir /fastdfs/c

【d】上传测试

[root@localhost /]#
[root@localhost /]# ll
total 36
lrwxrwxrwx.   1 root root     7 Sep 18  2019 bin -> usr/bin
dr-xr-xr-x.   5 root root  4096 Sep 18  2019 boot
drwxr-xr-x.  20 root root  3260 Nov  9 14:25 dev
drwxr-xr-x.   3 root root    80 Oct 10 15:12 elasticsearch
drwxr-xr-x.   3 root root    80 Oct 10 15:50 es
drwxr-xr-x. 135 root root  8192 Nov  9 14:42 etc
drwxr-xr-x.   8 root root   166 Nov  9 16:05 fastdfs
drwxr-xr-x.   4 root root    27 Oct 10 15:13 home
lrwxrwxrwx.   1 root root     7 Sep 18  2019 lib -> usr/lib
lrwxrwxrwx.   1 root root     9 Sep 18  2019 lib64 -> usr/lib64
drwxr-xr-x.   2 root root     6 Apr 11  2018 media
drwxr-xr-x.   2 root root     6 Apr 11  2018 mnt
drwxr-xr-x.   3 root root    16 Sep 18  2019 opt
dr-xr-xr-x. 211 root root     0 Nov  9 14:25 proc
dr-xr-x---.   5 root root   262 Nov  9 16:04 root
drwxr-xr-x.  38 root root  1220 Nov  9 14:30 run
lrwxrwxrwx.   1 root root     8 Sep 18  2019 sbin -> usr/sbin
drwxr-xr-x.   2 root root     6 Apr 11  2018 srv
dr-xr-xr-x.  13 root root     0 Nov  9 14:25 sys
-rw-r--r--.   1 root root 12637 Nov  9 16:13 timg.png
drwxrwxrwt.  30 root root  4096 Nov  9 16:05 tmp
drwxr-xr-x.  13 root root   155 Sep 18  2019 usr
drwxr-xr-x.  20 root root   282 Sep 18  2019 var
[root@localhost /]# /usr/bin/fdfs_upload_file /etc/fdfs/client.conf timg.png
group1/M00/00/00/wKizhV-o-jiAQ08WAAAxXVoV3i4602.png

可以看到,文件上传成功,返回文件ID号:group1/M00/00/00/wKizhV-o-jiAQ08WAAAxXVoV3i4602.png,返回的文件ID由group、存储目录、两级子目录、fileid、文件后缀名(由客户端指定,主要用于区分文件类型)拼接而成。

  • group1:组名
  • M00:磁盘
  • 00/00:目录
  • wKizhV-o-jiAQ08WAAAxXVoV3i4602.png:文件名称

七、总结

本篇文章主要总结了如何搭建FastDFS环境,包括Tracker和Storage的搭建,并实现了上传文件的测试,但是现在并不能下载文件,因为需要安装Nginx作为服务器以支持Http方式访问文件,下一篇文章将会总结如何安装Nginx实现下载文件。

分布式文件存储FastDFS之环境搭建篇相关推荐

  1. 分布式文件存储FastDFS使用教程(下载安装使用)

    分布式文件存储FastDFS 1.FastDFS 1.1 FastDFS简介 1.1.1 FastDFS体系结构 1.1.2 上传流程 1.2 FastDFS搭建 1.2.1 安装FastDFS镜像 ...

  2. 分布式文件存储FastDFS介绍安装部署及相关Java代码编写

    分布式文件存储FastDFS 一.FastDFS简介 1.1 FastDFS体系结构 FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储.文件同步.文件访问(文件上传 ...

  3. 分布式文件存储FASTDFS

    分布式文件存储FASTDFS 目录 概 述 小结 参考资料和推荐阅读 LD is tigger forever,CG are not brothers forever, throw the pot a ...

  4. 基于SpringBoot下使用分布式文件存储FastDFS

    一.FastDFS简介 1.1 FastDFS体系结构 FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储.文件同步.文件访问(文件上传.文件下载)等,解决了大容量存 ...

  5. 【工具类】分布式文件存储-FastDFS

    FastDFS简介 FastDFS体系结构 FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储.文件同步.文件访问(文件上传.文件下载)等,解决了大容量存储和负载均衡 ...

  6. 分布式文件存储——FastDFS

    FastDFS FastDFS 是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储.文件同步.文件访问(文件上传.文件下载)等,解决了大容量存储和负载均衡的问题. 特别适合以文件为 ...

  7. (转)分布式文件存储FastDFS(二)FastDFS安装

    http://blog.csdn.net/xingjiarong/article/details/50559761 在前面的一篇中,我们分析了FastDFS的架构,知道了FastDFS是由客户端,跟踪 ...

  8. (转)分布式文件存储FastDFS(四)配置fastdfs-apache-module

    http://blog.csdn.net/xingjiarong/article/details/50560605 在前边我们已经配置好了FastDFS的环境,但是此时的FastDFS还不能通过htt ...

  9. (转) 分布式文件存储FastDFS(一)初识FastDFS

    http://blog.csdn.net/xingjiarong/article/details/50559849 一.FastDFS简介 FastDFS是一款开源的.分布式文件系统(Distribu ...

  10. 分布式文件存储—fastDFS

    简单了解: •FastDFS是一个轻量级的开源分布式文件系统 •解决了大容量文件存储和高并发访问的问题,文件存取时实现了负载均衡 •FastDFS实现了软件方式的RAID,可以使用廉价的IDE硬盘进行 ...

最新文章

  1. Kubernetes 中 设置pod不部署在同一台节点上
  2. Python使用numpy中的hstack函数水平堆叠(horizontally stack)数组实战
  3. 项目中用到的BAPI合集
  4. Python的 is 和 == 弄懂了吗?
  5. 检索COM类工厂中CLSID为{000209FF-0000-0000-C000-000000000046}的组件时失败,原因是出现以下错误: 80070005...
  6. CRM User status optimization - heavy calculation logic of status filter
  7. 变量不同作用域的测试
  8. json-tree api_什么是JSON处理(JSON-P API)?
  9. iOS 之 获取View所在控制器
  10. c++头文件包含问题
  11. jquery 验证email
  12. 线上python课程一般多少钱-培训python多少钱 ?
  13. php怎么使用类库,如何使用 Composer 引用类库
  14. 2019年度十大网络小说:玄幻小说独占六部,都市小说一本超神
  15. 视频教程-C# 实战项目——快递单打印软件-C#
  16. 与现代教育技术有关的计算机知识,基于计算机的现代教育技术手段的利用与开发...
  17. 数据模型的概念,数据模型的作用和数据模型的三个要素
  18. 悬崖寻路问题Sarsa和QLearning实现
  19. quartus 13.0 网络盛传的破解方法勘误(网传大多数破解步骤有误)
  20. 熬夜爆肝整理!史上最硬核的Mysql函数大全,还不收藏?

热门文章

  1. 自动驾驶 8-3: 递归最小二乘法Recursive Least Squares
  2. 基于用户画像的商品推荐挑战赛
  3. 213.打家劫舍II
  4. Cannot open D:\Program Files\Anaconda\Scripts\pip3-script.py
  5. EDSR:Enhanced Deep Residual Networks for Single Image Super-Resolution
  6. 关于拉格朗日对偶问题中对偶性的理解 (很有趣)
  7. centos 中如何将python更新到最新的版本
  8. 【2019牛客暑期多校训练营(第七场)E】Find the median【权值线段树】
  9. 【NCD 2019 B】Let me sleep【边双连通分量缩点、树的直径】
  10. 八大排序算法-java实现