FastDFS + Nginx
https://www.cnblogs.com/chiangchou/p/fastdfs.html#_label0_1
一、安装服务器
配置环境
[vim /etc/hosts]10.10.10.103 file.thinxz.cn[防火墙]vim /etc/sysconfig/iptables-A INPUT -m state --state NEW -m tcp -p tcp --dport 22122 -j ACCEPT # 打开跟踪端口[默认22122]-A INPUT -m state --state NEW -m tcp -p tcp --dport 23000 -j ACCEPT # 打开存储器端口[默认23000]service iptables restart # 重启防火墙
下载安装 [libfastcommon]
[libfastcommon // FastDFS 和 FastDHT 中提取出来的公共 C 函数库,基础环境]
: wget https://github.com/happyfish100/libfastcommon/archive/V1.0.7.tar.gz
[解压]
: tar -zxvf V1.0.7.tar.gz && cd libfastcommon-1.0.7
[编译安装]
:./make.sh && ./make.sh install
[ERROR]
[root@localhost libfastcommon-1.0.7]# ./make.sh
./make.sh:行14: gcc: 未找到命令
./make.sh:行15: ./a.out: 没有那个文件或目录
cc -Wall -D_FILE_OFFSET_BITS=64 -g -DDEBUG_FLAG -DOS_LINUX -DIOEVENT_USE_EPOLL -c -fPIC -o hash.lo hash.c
make: cc:命令未找到
make: *** [hash.lo] 错误
解决 :安装 GCC 编译器 - yum install gcc
// libfastcommon.so 安装到了/usr/lib64/libfastcommon.so,但是FastDFS主程序设置的lib目录是/usr/local/lib
# ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so
# ln -s /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so
# ln -s /usr/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so
# ln -s /usr/lib64/libfdfsclient.so /usr/lib/libfdfsclient.so
下载安装 FastDFS
[FastDFS]
:wget https://github.com/happyfish100/fastdfs/archive/V5.05.tar.gz
[解压]
:tar -zxvf V5.05.tar.gz && cd fastdfs-5.05
[编译安装]
:./make.sh && ./make.sh install
// FastDFS 服务脚本设置的 bin 目录是 /usr/local/bin, 但实际命令安装在 /usr/bin/
解决一 修改FastDFS 服务脚本中相应的命令路径
fdfs_storaged 和 fdfs_tracker 两个脚本中的 /usr/local/bin 修改成 /usr/bin
解决二 建立 /usr/bin 到 /usr/local/bin 的软链接
# ln -s /usr/bin/fdfs_trackerd /usr/local/bin
# ln -s /usr/bin/fdfs_storaged /usr/local/bin
# ln -s /usr/bin/stop.sh /usr/local/bin
# ln -s /usr/bin/restart.sh /usr/local/bin
检验安装
[安装后环境]
服务脚本 - /etc/init.d/fdfs_storaged | fdfs_tracker
配置文件 - /etc/fdfs/client.conf.sample | storage.conf.sample | tracker.conf.sample
命令工具 - /usr/bin/
[命令工具]
fdfs_appender_test
fdfs_appender_test1
fdfs_append_file
fdfs_crc32
fdfs_delete_file
fdfs_download_file
fdfs_file_info
fdfs_monitor
fdfs_storaged
fdfs_test
fdfs_test1
fdfs_trackerd
fdfs_upload_appender
fdfs_upload_file
stop.sh
restart.sh
二、配置FastDFS跟踪器(Tracker)
[/etc/fdfs]
:复制 FastDFS 跟踪器样例配置文件 tracker.conf.sample,并重命名为 tracker.conf
:修改
: mkdir -p /opt/data/fastdfs/tracker
:cd /etc/fdfs && cp tracker.conf.sample tracker.conf && vim tracker.conf
# Tracker 数据和日志目录地址(根目录必须存在,子目录会自动创建)
base_path=/opt/data/fastdfs/tracker
# HTTP 服务端口
http.server_port=80
[启动]
:/etc/init.d/fdfs_trackerd start
:netstat -unltp|grep fdfs # FastDFS Tracker 是否已成功启动 ,22122端口正在被监听
// Tracker服务启动成功后,会在base_path下创建data、logs两个目录.
${base_path}
|__data
| |__storage_groups.dat:存储分组信息
| |__storage_servers.dat:存储服务器列表
|__logs
|__trackerd.log: tracker server 日志文件
三、配置 FastDFS 存储 (Storage)
[/etc/fdfs]
:复制 FastDFS 存储器样例配置文件 storage.conf.sample,并重命名为 storage.conf
:修改
:mkdir -p /opt/data/fastdfs/storage && mkdir -p /opt/data/fastdfs/file
:cd /etc/fdfs && cp storage.conf.sample storage.conf && vim storage.conf
# Storage 数据和日志目录地址(根目录必须存在,子目录会自动生成)
base_path=/opt/data/fastdfs/storage
# 逐一配置 store_path_count 个路径,索引号基于 0。
# 如果不配置 store_path0,那它就和 base_path 对应的路径一样。
store_path0=/opt/data/fastdfs/file
# tracker_server 的列表 , 会主动连接 tracker_server
# 有多个 tracker server 时, 每个 tracker server 写一行
tracker_server=file.thinxz.cn:22122
tracker_server=thinxz.cn:22122
# 访问端口
http.server_port=80
[启动]
:/etc/init.d/fdfs_storaged start
:netstat -unltp|grep fdfs
[检测]
:/usr/bin/fdfs_monitor /etc/fdfs/storage.conf # Storage和Tracker是否在通信
server_count=1, server_index=0
tracker server is 10.10.10.103:22122
group count: 1
Group 1:
group name = group1
disk total space = 39196 MB
disk free space = 37123 MB
trunk free space = 0 MB
storage server count = 1
active server count = 1
storage server port = 23000
storage HTTP port = 80
store path count = 1
subdir count per path = 256
current write server index = 0
current trunk file id = 0
Storage 1:
id = 10.10.10.103
ip_addr = 10.10.10.103 (file.thinxz.cn) ACTIVE
http domain =
version = 5.05
join time = 2019-07-12 10:22:51
up time = 2019-07-12 10:23:46
total storage = 39196 MB
free storage = 37123 MB
[Storage 目录]
:Storage base_path 下创建了data、logs目录,记录着 Storage Server 的信息
// file/store_path0 目录下,创建了N*N个子目录
四、测试上传功能
[/etc/fdfs]
:Tracker 服务器中的客户端配置
:mkdir -p /opt/data/fastdfs/client
:cd /etc/fdfs && cp client.conf.sample client.conf && vim client.conf
# Client 的数据和日志目录
base_path=/opt/data/fastdfs/client
# Tracker端口
tracker_server=file.thinxz.cn:22122
[测试上传]
:/usr/bin/fdfs_upload_file /etc/fdfs/client.conf namei.jpeg # 上传 namei.jpeg 图片
// 上传成功后返回文件ID号:group1/M00/00/00/wKgz6lnduTeAMdrcAAEoRmXZPp870.jpeg
[root@localhost opt]# /usr/bin/fdfs_upload_file /etc/fdfs/client.conf V1.0.7.tar.gz
group1/M00/00/00/CgoKZ10n8kmAaB06AAEdvO0ZHFk.tar.gz
// 返回的文件ID由group、存储目录、两级子目录、fileid、文件后缀名[由客户端指定, 主要用于区分文件类型]
![FastDFS - 搭建分布式文件系统 [CentOS7] - 图1](/uploads/projects/i-t@big-data/6c327b9d8e9b01e19e712fbd2530c185.png)
![FastDFS - 搭建分布式文件系统 [CentOS7] - 图2](/uploads/projects/i-t@big-data/24bcad9bfd4e06c880710f424a54d519.png)
![FastDFS - 搭建分布式文件系统 [CentOS7] - 图3](/uploads/projects/i-t@big-data/f74735a00485e4834eedcd76096343f4.png)
