分布式文件存储FastDFS之环境搭建篇
目录
一、概述
二、下载安装 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之环境搭建篇相关推荐
- 分布式文件存储FastDFS使用教程(下载安装使用)
分布式文件存储FastDFS 1.FastDFS 1.1 FastDFS简介 1.1.1 FastDFS体系结构 1.1.2 上传流程 1.2 FastDFS搭建 1.2.1 安装FastDFS镜像 ...
- 分布式文件存储FastDFS介绍安装部署及相关Java代码编写
分布式文件存储FastDFS 一.FastDFS简介 1.1 FastDFS体系结构 FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储.文件同步.文件访问(文件上传 ...
- 分布式文件存储FASTDFS
分布式文件存储FASTDFS 目录 概 述 小结 参考资料和推荐阅读 LD is tigger forever,CG are not brothers forever, throw the pot a ...
- 基于SpringBoot下使用分布式文件存储FastDFS
一.FastDFS简介 1.1 FastDFS体系结构 FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储.文件同步.文件访问(文件上传.文件下载)等,解决了大容量存 ...
- 【工具类】分布式文件存储-FastDFS
FastDFS简介 FastDFS体系结构 FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储.文件同步.文件访问(文件上传.文件下载)等,解决了大容量存储和负载均衡 ...
- 分布式文件存储——FastDFS
FastDFS FastDFS 是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储.文件同步.文件访问(文件上传.文件下载)等,解决了大容量存储和负载均衡的问题. 特别适合以文件为 ...
- (转)分布式文件存储FastDFS(二)FastDFS安装
http://blog.csdn.net/xingjiarong/article/details/50559761 在前面的一篇中,我们分析了FastDFS的架构,知道了FastDFS是由客户端,跟踪 ...
- (转)分布式文件存储FastDFS(四)配置fastdfs-apache-module
http://blog.csdn.net/xingjiarong/article/details/50560605 在前边我们已经配置好了FastDFS的环境,但是此时的FastDFS还不能通过htt ...
- (转) 分布式文件存储FastDFS(一)初识FastDFS
http://blog.csdn.net/xingjiarong/article/details/50559849 一.FastDFS简介 FastDFS是一款开源的.分布式文件系统(Distribu ...
- 分布式文件存储—fastDFS
简单了解: •FastDFS是一个轻量级的开源分布式文件系统 •解决了大容量文件存储和高并发访问的问题,文件存取时实现了负载均衡 •FastDFS实现了软件方式的RAID,可以使用廉价的IDE硬盘进行 ...
最新文章
- Kubernetes 中 设置pod不部署在同一台节点上
- Python使用numpy中的hstack函数水平堆叠(horizontally stack)数组实战
- 项目中用到的BAPI合集
- Python的 is 和 == 弄懂了吗?
- 检索COM类工厂中CLSID为{000209FF-0000-0000-C000-000000000046}的组件时失败,原因是出现以下错误: 80070005...
- CRM User status optimization - heavy calculation logic of status filter
- 变量不同作用域的测试
- json-tree api_什么是JSON处理(JSON-P API)?
- iOS 之 获取View所在控制器
- c++头文件包含问题
- jquery 验证email
- 线上python课程一般多少钱-培训python多少钱 ?
- php怎么使用类库,如何使用 Composer 引用类库
- 2019年度十大网络小说:玄幻小说独占六部,都市小说一本超神
- 视频教程-C# 实战项目——快递单打印软件-C#
- 与现代教育技术有关的计算机知识,基于计算机的现代教育技术手段的利用与开发...
- 数据模型的概念,数据模型的作用和数据模型的三个要素
- 悬崖寻路问题Sarsa和QLearning实现
- quartus 13.0 网络盛传的破解方法勘误(网传大多数破解步骤有误)
- 熬夜爆肝整理!史上最硬核的Mysql函数大全,还不收藏?
热门文章
- 自动驾驶 8-3: 递归最小二乘法Recursive Least Squares
- 基于用户画像的商品推荐挑战赛
- 213.打家劫舍II
- Cannot open D:\Program Files\Anaconda\Scripts\pip3-script.py
- EDSR:Enhanced Deep Residual Networks for Single Image Super-Resolution
- 关于拉格朗日对偶问题中对偶性的理解 (很有趣)
- centos 中如何将python更新到最新的版本
- 【2019牛客暑期多校训练营(第七场)E】Find the median【权值线段树】
- 【NCD 2019 B】Let me sleep【边双连通分量缩点、树的直径】
- 八大排序算法-java实现