开始搭建 FastDFS 环境。我们搭建单机版。
操作系统:CentOS7 X64,不懂的可以查看我的博客:https://blog.csdn.net/BiandanLoveyou/article/details/81113406
固定自己 CentOS 的 IP 地址,查看博客:https://blog.csdn.net/BiandanLoveyou/article/details/116384534
步骤1:下载安装 libfastcommon
1、确保 CentOS 安装 GCC
[root@localhost ~]# yum -y install gcc-c++
2、安装 libevent。FastDFS 依赖 libevent库,需要安装。
[root@localhost ~]# yum -y install libevent
3、安装 libfastcommon。libfastcommon 是FastDFS官方提供的,libfastcommon 包含了 FastDFS 运行所需要的一些基础库。
查看 FastDFS 版本:https://github.com/happyfish100/libfastcommon/releases
我们选择 1.0.39 的版本(不要选择太高版本,出问题很难排查!),并安装到目录:/usr/local/src/ 下。
[root@localhost ~]# cd /usr/local/src/
[root@localhost src]# wget -O libfastcommon-1.0.39.tar.gz https://codeload.github.com/happyfish100/libfastcommon/tar.gz/V1.0.39
如果报错:-bash: wget: 未找到命令 则先执行 yum -y install wget 安装 wget 命令。
4、解压
[root@localhost src]# tar -zxvf libfastcommon-1.0.39.tar.gz
5、进入 libfastcommon-1.0.39 目录:
[root@localhost src]# cd libfastcommon-1.0.39
6、安装
[root@localhost libfastcommon-1.0.39]# ./make.sh
执行完之后,继续执行下面语句:
[root@localhost libfastcommon-1.0.39]# ./make.sh install
步骤2:安装 FastDFS
查看 FastDFS 版本:https://github.com/happyfish100/fastdfs/releases
我们选择 V5.11 版本(不要选择太高版本,出问题很难排查!)。
切换到下载目录:
[root@localhost libfastcommon-1.0.39]# cd /usr/local/src/
下载
[root@localhost src]# wget -O fastdfs-5.11.tar.gz https://codeload.github.com/happyfish100/fastdfs/tar.gz/V5.11
解压:
[root@localhost src]# tar -zxvf fastdfs-5.11.tar.gz
进入到 FastDFS 目录:
[root@localhost src]# cd fastdfs-5.11
安装:
[root@localhost fastdfs-5.11]# ./make.sh
发现报错,错误信息如下:
[root@localhost fastdfs-5.11]# ./make.sh
./make.sh:行120: perl: 未找到命令
./make.sh:行121: perl: 未找到命令
./make.sh:行122: perl: 未找到命令
./make.sh:行123: perl: 未找到命令
./make.sh:行124: perl: 未找到命令
cc -c -o tracker_service.o tracker_service.c -I../common -I/usr/local/include
tracker_service.c: 在函数‘tracker_service_init’中:
tracker_service.c:139:18: 错误:‘O_NOATIME’未声明(在此函数内第一次使用)
O_NONBLOCK | O_NOATIME)) != 0)
^
tracker_service.c:139:18: 附注:每个未声明的标识符在其出现的函数内只报告一次
make: *** [tracker_service.o] 错误 1
./make.sh:行129: perl: 未找到命令
./make.sh:行130: perl: 未找到命令
./make.sh:行131: perl: 未找到命令
./make.sh:行132: perl: 未找到命令
./make.sh:行133: perl: 未找到命令
cc -c -o storage_service.o storage_service.c -I. -Itrunk_mgr -I../common -I../tracker -I../client -Ifdht_client -I/usr/include/fastcommon
storage_service.c: 在函数‘storage_service_init’中:
storage_service.c:1665:18: 错误:‘O_NOATIME’未声明(在此函数内第一次使用)
O_NONBLOCK | O_NOATIME)) != 0)
^
storage_service.c:1665:18: 附注:每个未声明的标识符在其出现的函数内只报告一次
make: *** [storage_service.o] 错误 1
原因:未找到对应的命令,在通过查找安装相应的命令即可。
解决:执行下面的语句:
yum -y install zlib zlib-devel pcre pcre-devel gcc gcc-c++ openssl openssl-devel libevent libevent-devel perl unzip net-tools wget
然后继续执行 ./make.sh
执行完之后,继续执行下面的语句:
[root@localhost fastdfs-5.11]# ./make.sh install
默认安装方式安装后的相应文件与目录:
服务脚本:
/etc/init.d/fdfs_storaged
/etc/init.d/fdfs_trackerd
查看:[root@localhost fastdfs-5.11]# ls init.d/
配置文件(这三个是开发者给的样例配置文件)
/etc/fdfs/client.conf.sample
/etc/fdfs/storage.conf.sample
/etc/fdfs/tracker.conf.sample
命令工具在 /usr/bin/ 目录下
[root@localhost ~]# ls /usr/bin/
步骤3:配置 FastDFS 跟踪器(Tracker)
1、进入 /etc/fdfs,复制 FastDFS 跟踪器样例配置文件 tracker.conf.sample,并重命名为 tracker.conf
[root@localhost fastdfs-5.11]# cd /etc/fdfs/
[root@localhost fdfs]# cp tracker.conf.sample tracker.conf
2、编辑 tracker.conf ,修改 base_path,Tracker 数据和日志目录地址(根目录必须存在,子目录会自动创建)。其它的默认即可。
[root@localhost fdfs]# vi tracker.conf
修改红色部分。其它配置可不改。建议修改端口号,默认是 8080,防止冲突,改为:9080
# 配置文件是否不生效,false 为生效
disabled=false# 提供服务的端口
port=22122# Tracker 数据和日志目录地址(根目录必须存在,子目录会自动创建)
base_path=/fastdfs/tracker# HTTP 服务端口 默认8080 ,建议修改 防止冲突
http.server_port=9080
3、创建tracker基础数据目录,即 base_path 对应的目录
[root@localhost fdfs]# mkdir -p /fastdfs/tracker
4、防火墙中打开跟踪端口(默认的22122)(开发阶段,建议关闭防火墙。上正式环境要开启防火墙!)
# vi /etc/sysconfig/iptables
添加如下端口行:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22122 -j ACCEPT
重启防火墙:
# service iptables restart
不懂防火墙命令?查看博客:https://blog.csdn.net/BiandanLoveyou/article/details/116399225
5、启动 Tracker。下面3条命令任意一条都可以启动,我们选择第三条吧:systemctl start fdfs_trackerd
[root@localhost fdfs]# /etc/init.d/fdfs_trackerd start
[root@localhost fdfs]# service fdfs_trackerd start
[root@localhost fdfs]# systemctl start fdfs_trackerd
初次成功启动,会在 /fdfsdfs/tracker/ (配置的base_path)下创建 data、logs 两个目录。
可以使用命令查看:
[root@localhost fdfs]# ls /fastdfs/tracker/
结果:
6、查看 FastDFS Tracker 是否已成功启动
[root@localhost fdfs]# systemctl status fdfs_trackerd
结果:
7、设置 Tracker 开机启动
[root@localhost fdfs]# chkconfig fdfs_trackerd on
8、关闭 Tracker 命令
[root@localhost fdfs]# systemctl stop fdfs_trackerd
Tracker服务启动成功后,会在base_path下创建data、logs两个目录。目录结构如下:
${base_path}
|__data
| |__storage_groups.dat:存储分组信息
| |__storage_servers.dat:存储服务器列表
|__logs
| |__trackerd.log: tracker server 日志文件
步骤4:配置 FastDFS 存储 (Storage)
1、进入 /etc/fdfs 目录,复制 FastDFS 存储器样例配置文件 storage.conf.sample,并重命名为 storage.conf
[root@localhost fdfs]# cd /etc/fdfs/
[root@localhost fdfs]# cp storage.conf.sample storage.conf
2、编辑 storage.conf,红色的部分需要修改,其它可以不改。
[root@localhost fdfs]# vi storage.conf
# 配置文件是否不生效,false 为生效
disabled=false# 指定此 storage server 所在 组(卷)
group_name=group1# storage server 服务端口
port=23000# 心跳间隔时间,单位为秒 (这里是指主动向 tracker server 发送心跳)
heart_beat_interval=30# Storage 数据和日志目录地址(根目录必须存在,子目录会自动生成) (注 :这里不是上传的文件存放的地址,之前版本是的,在某个版本后更改了)
base_path=/fastdfs/storage/base# 存放文件时 storage server 支持多个路径。这里配置存放文件的基路径数目,通常只配一个目录。
store_path_count=1
# 逐一配置 store_path_count 个路径,索引号基于 0。
# 如果不配置 store_path0,那它就和 base_path 对应的路径一样。
store_path0=/fastdfs/storage# FastDFS 存储文件时,采用了两级目录。这里配置存放文件的目录个数。
# 如果本参数只为 N(如: 256),那么 storage server 在初次运行时,会在 store_path 下自动创建 N * N 个存放文件的子目录。
subdir_count_per_path=256# tracker_server 的列表 ,会主动连接 tracker_server
# 有多个 tracker server 时,每个 tracker server 写一行。IP地址请根据实际情况修改
tracker_server=192.168.0.105:22122# 允许系统同步的时间段 (默认是全天) 。一般用于避免高峰同步产生一些问题而设定。
sync_start_time=00:00
sync_end_time=23:59
# 访问端口 默认8888 ,我们改成 9888
http.server_port=9888
3、创建Storage基础数据目录,对应base_path目录
[root@localhost fdfs]# mkdir -p /fastdfs/storage/base
下面是配置的store_path0路径,有多个要创建多个
[root@localhost fdfs]# mkdir -p /fastdfs/storage
4、防火墙中打开存储器端口(默认的 23000) (开发环境建议关闭防火墙,上线了要开启)
[root@localhost fdfs]# vim /etc/sysconfig/iptables
添加如下端口行:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 23000 -j ACCEPT重启防火墙:
[root@localhost fdfs]# service iptables restart
5、启动 Storage。启动 Storage 前确保 Tracker 是启动的。初次启动成功,会在 /fastdfs/storage/base (base_path) 目录下创建 data、 logs 两个目录。
下面2条启动命令都可以启动,建议用第 2 条。systemctl start fdfs_storaged
[root@localhost fdfs]# /etc/init.d/fdfs_storaged start
[root@localhost fdfs]# systemctl start fdfs_storaged
查看 Storage 是否成功启动:
[root@localhost fdfs]# netstat -unltp|grep fdfs
23000 端口正在被监听,说明 Storage 启动成功,效果图:
6、关闭Storage。2条命令都可以关闭。
[root@localhost fdfs]# systemctl stop fdfs_storaged
[root@localhost fdfs]# /etc/init.d/fdfs_storaged stop
7、设置 Storage 开机启动
[root@localhost fdfs]# chkconfig fdfs_storaged on
8、查看Storage和Tracker是否在通信
/usr/bin/fdfs_monitor /etc/fdfs/storage.conf
结果图:
9、storage 在 store_path0=/fastdfs/storage 的 data 目录下创建了 N*N 个子目录。
[root@localhost fdfs]# ls /fastdfs/storage/data/
效果图:
步骤5:上传测试
1、修改 Tracker 服务器中的客户端配置文件
[root@localhost fdfs]# cd /etc/fdfs/
[root@localhost fdfs]# cp client.conf.sample client.conf
2、修改 client.conf 配置
[root@localhost fdfs]# vi client.conf
# Client 的数据和日志目录
base_path=/fastdfs/client
# Tracker端口,IP地址请根据实际情况修改
tracker_server=192.168.0.105:22122
然后创建配置的 base_path=/fastdfs/client 这个目录(这一步不能少,否则报错 ERROR - file: ../client/client_func.c, line: 257, "/fastdfs/client" can't be accessed, error info: No such file or directory):
[root@localhost fdfs]# mkdir -p /fastdfs/client
3、上传测试
我们先创建一个测试文本:
[root@localhost ~]# cd /etc/fdfs/
[root@localhost fdfs]# vi 2021-6-8.txt
输入自己想要的内容:
然后执行下面的语句:
[root@localhost fdfs]# /usr/bin/fdfs_upload_file /etc/fdfs/client.conf /etc/fdfs/2021-6-8.txt
效果图:
返回的文件ID由 group(group1)、存储目录(M00)、两级子目录(00/00)、fileid(wKgAaWC-V_iAOJ6FAAAAUGRQkJI740)、文件后缀名(txt)(由客户端指定,主要用于区分文件类型)拼接而成。
OK,Linux 环境下就搭建好了 FastDFS。