在 Linux 系统中安装 FastDFS 是一个相对复杂的过程,因为它由多个组件组成(Tracker 服务器、Storage 服务器、Nginx 模块等)。
以下是基于 CentOS/RHEL 7/8 或 Ubuntu 的完整安装指南,我们将使用源码编译安装,这是最通用且可控的方式。
📌 前置准备
- 系统要求:Linux 服务器(建议 CentOS 7+ 或 Ubuntu 18.04+)。
- 依赖包:FastDFS 依赖
libfastcommon和libevent。 - 权限:需要使用
root用户或具有sudo权限的用户。
第一步:安装依赖库
FastDFS 依赖于 libfastcommon,这是 FastDFS 的底层 C 库。
# 1. 安装编译工具和依赖 yum install -y gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zlib-devel openssl-devel wget # 2. 下载并安装 libfastcommon cd /usr/local/src wget https://github.com/happyfish100/libfastcommon/archive/refs/heads/master.zip unzip master.zip cd libfastcommon-master # 3. 编译安装 ./make.sh ./make.sh install # 注意:libfastcommon 默认安装在 /usr/lib64/libfastcommon.so # 但 FastDFS 可能在 /usr/lib 下查找,需要建立软链接(针对 64 位系统) 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
cd /usr/local/src wget https://github.com/happyfish100/fastdfs/archive/refs/heads/master.zip unzip master.zip cd fastdfs-master
编译安装
./make.sh ./make.sh install
安装完成后,配置文件默认在 /etc/fdfs/ 目录下。
配置 Tracker 服务
# 复制示例配置文件 cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf # 编辑配置文件 vi /etc/fdfs/tracker.conf
关键修改项:
# 修改存储路径(确保目录存在) base_path=/data/fastdfs/tracker # 端口(默认 22122,一般无需修改) port=22122
创建目录并启动 Tracker:
mkdir -p /data/fastdfs/tracker # 启动 Tracker /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf start # 设置开机自启(可选) chkconfig fdfs_trackerd on
配置 Storage 服务
# 复制示例配置文件 cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf # 编辑配置文件 vi /etc/fdfs/storage.conf
关键修改项:
# 修改存储路径 base_path=/data/fastdfs/storage # 修改 store_path0 路径 store_path0=/data/fastdfs/storage/files # 修改 tracker_server 地址(指向 Tracker 服务器 IP) tracker_server=192.168.1.100:22122 # HTTP 端口(默认 8888,用于后续 Nginx 访问) http.server_port=8888
创建目录并启动 Storage:
mkdir -p /data/fastdfs/storage/files # 启动 Storage /usr/bin/fdfs_storaged /etc/fdfs/storage.conf start # 设置开机自启 chkconfig fdfs_storaged on
注意:如果你的服务器既是 Tracker 又是 Storage,需要在同一台机器上配置两个服务。
第三步:配置 Nginx 访问(可选但推荐)
FastDFS 本身不提供 HTTP 访问,需要配合 nginx-fastdfs-module 来实现通过浏览器访问文件。
下载并编译 Nginx 模块
cd /usr/local/src wget https://github.com/happyfish100/fastdfs-nginx-module/archive/refs/heads/master.zip unzip master.zip # 下载 Nginx 源码 wget http://nginx.org/download/nginx-1.20.1.tar.gz tar -zxvf nginx-1.20.1.tar.gz cd nginx-1.20.1
编译 Nginx(添加模块)
# 先安装 Nginx 依赖 yum install -y pcre pcre-devel zlib zlib-devel openssl openssl-devel # 配置编译参数(注意路径替换为你的实际路径) ./configure --prefix=/usr/local/nginx --add-module=/usr/local/src/fastdfs-nginx-module/src # 编译并安装 make make install
配置 Nginx 模块
# 复制模块配置文件 cp /usr/local/src/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/ # 编辑配置文件 vi /etc/fdfs/mod_fastdfs.conf
关键修改项:
# 连接超时时间 connect_timeout=10 # Tracker 服务器地址 tracker_server=192.168.1.100:22122 # Storage 存储路径(必须与 storage.conf 中的 store_path0 一致) store_path0=/data/fastdfs/storage/files # 是否跟随 URL 中的 group 名称 url_have_group_name=true # 文件组数量(通常只有一个组 group1) group_count=1
在 group_count=1 下方添加:
[group1] group_name=group1 storage_server_port=23000 store_path_count=1 store_path0=/data/fastdfs/storage/files
配置 Nginx 主配置文件
vi /usr/local/nginx/conf/nginx.conf
在 http 块中添加:
server {
listen 80;
server_name localhost;
location /group1/M00 {
root /data/fastdfs/storage/files/data;
ngx_fastdfs_module;
}
}
启动 Nginx
/usr/local/nginx/sbin/nginx # 测试配置 /usr/local/nginx/sbin/nginx -t
第四步:测试上传
使用 FastDFS 提供的测试客户端 fdfs_test 进行上传测试。
# 编辑客户端配置 vi /etc/fdfs/client.conf
修改项:
base_path=/data/fastdfs/tracker tracker_server=192.168.1.100:22122
执行上传测试:
# 准备一个测试文件 echo "Hello FastDFS" > /tmp/test.txt # 上传文件 /usr/bin/fdfs_test /etc/fdfs/client.conf upload /tmp/test.txt
成功输出示例:
This is FastDFS client test program v6.06
Copyright (C) 2008, Happy Fish / YuQing
FastDFS may be copied only under the terms of the GNU General
Public License V3, which may be found in the FastDFS source kit.
Please visit the FastDFS Home Page http://www.csource.org/
for more detail.
[2026-10-27 10:00:00] DEBUG - base_path=/data/fastdfs/tracker, connect_timeout=30, network_timeout=60, tracker_server_count=1, anti_steal_token=0, anti_steal_secret_key length=0, use_connection_pool=0, g_connection_pool_max_idle_time=3600s, use_storage_id=0, storage server id count: 0
tracker_query_storage_store_list_without_group:
server 1. group_name=, ip_addr=192.168.1.100, port=23000
group_name=group1, ip_addr=192.168.1.100, port=23000
storage_upload_by_filename
group_name=group1, remote_filename=M00/00/00/wKh3gG8x1Y-ABcDdAAABBBCCCDDD.txt
source ip address: 192.168.1.100
file time
stamp=2026-10-27 10:00:00
file size=13
file crc32=123456789
example file url: http://192.168.1.100/group1/M00/00/00/wKh3gG8x1Y-ABcDdAAABBBCCCDDD.txt
storage_upload_slave_by_filename
group_name=group1, remote_filename=M00/00/00/wKh3gG8x1Y-ABcDdAAABBBCCCDDD_big.txt
source ip address: 192.168.1.100
file timestamp=2026-10-27 10:00:00
file size=13
file crc32=123456789
example file url: http://192.168.1.100/group1/M00/00/00/wKh3gG8x1Y-ABcDdAAABBBCCCDDD_big.txt
访问测试:
在浏览器中访问:http://192.168.1.100/group1/M00/00/00/wKh3gG8x1Y-ABcDdAAABBBCCCDDD.txt
如果能看到 “Hello FastDFS”,说明安装成功!
✅ 常见问题排查
-
防火墙问题:
确保开放以下端口:- Tracker:
22122 - Storage:
23000 - Nginx:
80或8888firewall-cmd --zone=public --add-port=22122/tcp --permanent firewall-cmd --zone=public --add-port=23000/tcp --permanent firewall-cmd --zone=public --add-port=80/tcp --permanent firewall-cmd --reload
- Tracker:
-
SELinux 问题:
如果上传失败,可能是 SELinux 阻止,临时关闭测试:setenforce 0
如果解决,建议永久关闭或配置 SELinux 策略。
-
路径权限:
确保/data/fastdfs/目录对运行 FastDFS 的用户(通常是root或fastdfs)有读写权限。 -
日志查看:
如果出错,查看日志:- Tracker 日志:
/data/fastdfs/tracker/logs/trackerd.log - Storage 日志:
/data/fastdfs/storage/logs/storaged.log
- Tracker 日志:
| 组件 | 默认端口 | 配置文件路径 |
|---|---|---|
| Tracker | 22122 | /etc/fdfs/tracker.conf |
| Storage | 23000 | /etc/fdfs/storage.conf |
| Nginx | 80/8888 | /usr/local/nginx/conf/nginx.conf |
| Client | /etc/fdfs/client.conf |
安装完成后,建议将 FastDFS 服务加入系统服务管理,以便重启服务器后自动启动。
首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/486010.html



