当前位置: 首页 > 产品大全 > Linux CentOS 7 下搭建外网可访问的 FastDFS 结合 Nginx 图片/文件服务器

Linux CentOS 7 下搭建外网可访问的 FastDFS 结合 Nginx 图片/文件服务器

Linux CentOS 7 下搭建外网可访问的 FastDFS 结合 Nginx 图片/文件服务器

本文将详细介绍在 CentOS 7 操作系统上,如何搭建一个基于 FastDFS 分布式文件存储系统,并整合 Nginx 模块以实现高性能、高可用的外网图片及文件服务器。该方案适用于需要存储和快速访问大量静态资源(如图片、文档、视频片段)的 Web 应用或移动应用后端服务。

一、环境准备与基础软件安装

  1. 系统与网络要求
  • 一台或多台运行 CentOS 7 的服务器(最低配置1核2G,生产环境建议更高)。
  • 所有服务器间网络互通,并确保防火墙(firewalld)或安全组规则开放后续所需的端口(如 22122, 23000, 80, 8888 等)。
  • 拥有 root 或 sudo 权限。
  • 建议配置静态 IP 或可解析的主机名。

2. 安装基础依赖
`bash
yum install -y gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zlib-devel openssl-devel wget vim git
`

  1. 下载必要组件
  • FastDFS:核心存储系统。
  • libfastcommon:FastDFS 依赖的公共函数库。
  • fastdfs-nginx-module:使 Nginx 能够直接访问 FastDFS 存储文件的扩展模块。

* Nginx:高性能 Web 服务器,用于提供 HTTP 访问和负载均衡。
`bash
cd /usr/local/src
wget https://github.com/happyfish100/libfastcommon/archive/master.zip -O libfastcommon.zip
wget https://github.com/happyfish100/fastdfs/archive/master.zip -O fastdfs.zip
wget https://github.com/happyfish100/fastdfs-nginx-module/archive/master.zip -O fastdfs-nginx-module.zip
wget http://nginx.org/download/nginx-1.20.1.tar.gz
unzip libfastcommon.zip
unzip fastdfs.zip
unzip fastdfs-nginx-module.zip
tar -zxvf nginx-1.20.1.tar.gz
`

二、安装与配置 FastDFS

1. 安装 libfastcommon
`bash
cd /usr/local/src/libfastcommon-master
./make.sh && ./make.sh install
`

2. 安装 FastDFS
`bash
cd /usr/local/src/fastdfs-master
./make.sh && ./make.sh install
# 安装后,配置文件在 /etc/fdfs/,可执行文件在 /usr/bin/,默认数据存储路径在 /home/yuqing/fastdfs/

`

3. 配置 Tracker Server(跟踪服务器,建议至少一台)
`bash
cd /etc/fdfs
cp tracker.conf.sample tracker.conf
vim tracker.conf
`
主要修改项:
`ini
basepath=/data/fastdfs/tracker # Tracker 数据和日志存放路径
bind
addr=0.0.0.0 # 允许所有 IP 连接,或指定服务器内网 IP
port=22122 # Tracker 服务端口(需开放)
http.serverport=8080 # 可选,Tracker 内置的 HTTP 服务端口
`
创建目录并启动服务:
`bash
mkdir -p /data/fastdfs/tracker
/usr/bin/fdfs
trackerd /etc/fdfs/tracker.conf start
# 设置开机自启

echo "/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf start" >> /etc/rc.local
chmod +x /etc/rc.d/rc.local
`

4. 配置 Storage Server(存储服务器,建议至少两台)
`bash
cd /etc/fdfs
cp storage.conf.sample storage.conf
vim storage.conf
`
主要修改项:
`ini
groupname=group1 # 组名,多台 Storage 可同组
base
path=/data/fastdfs/storage # Storage 数据和日志存放路径
storepath0=/data/fastdfs/storage/files # 实际文件存储路径,可配置多个
tracker
server=:22122 # 指向 Tracker,可配置多个
bindaddr=0.0.0.0 # 或指定服务器内网 IP
port=23000 # Storage 服务端口(需开放)
http.server
port=8888 # Storage 内置 HTTP 服务端口(通常由 Nginx 替代)
`
创建目录并启动服务:
`bash
mkdir -p /data/fastdfs/storage /data/fastdfs/storage/files
/usr/bin/fdfsstoraged /etc/fdfs/storage.conf start
echo "/usr/bin/fdfs
storaged /etc/fdfs/storage.conf start" >> /etc/rc.local
`
在 Tracker 服务器上检查 Storage 是否注册成功:
`bash
/usr/bin/fdfs_monitor /etc/fdfs/client.conf
`

三、安装与配置 Nginx 整合 FastDFS

1. 编译安装带 fastdfs-nginx-module 的 Nginx
`bash
cd /usr/local/src/nginx-1.20.1
./configure --prefix=/usr/local/nginx \

--add-module=/usr/local/src/fastdfs-nginx-module-master/src \

--with-httpsslmodule \

--with-httpstubstatus_module
make && make install
`

2. 配置 fastdfs-nginx-module
`bash
cp /usr/local/src/fastdfs-nginx-module-master/src/modfastdfs.conf /etc/fdfs/
vim /etc/fdfs/mod
fastdfs.conf
`
主要修改项:
`ini
trackerserver=:22122
url
havegroupname=true # URL 中是否包含组名
storepath0=/data/fastdfs/storage/files # 与 storage.conf 中的一致
group
name=group1 # 组名
`

3. 配置 Nginx 以支持文件访问
在 Storage 服务器上,编辑 Nginx 配置文件:
`bash
vim /usr/local/nginx/conf/nginx.conf
`
http { 块内添加一个 server 配置:
`nginx
server {
listen 80; # 或指定其他端口,需确保外网可访问
servername yourdomain.com或服务器公网IP; # 你的域名或公网IP

location ~ /group[0-9]/ { # 匹配 FastDFS 文件路径
ngxfastdfsmodule; # 调用 fastdfs-nginx-module
}

可选:配置一个简单的状态页或健康检查

location /status {
stubstatus on;
access
log off;
allow 127.0.0.1;
deny all;
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
`

4. 启动 Nginx 服务
`bash
/usr/local/nginx/sbin/nginx
# 设置开机自启(可创建 systemd 服务文件)

echo "/usr/local/nginx/sbin/nginx" >> /etc/rc.local
`

四、测试与使用

1. 客户端测试上传
在任意一台服务器上配置客户端并测试:
`bash
cd /etc/fdfs
cp client.conf.sample client.conf
vim client.conf
# 修改 basepath 和 trackerserver

测试上传:
bash echo "This is a test file." > test.txt /usr/bin/fdfsuploadfile /etc/fdfs/client.conf test.txt # 返回类似:group1/M00/00/00/wKgKZF9rT2aANzRsAAAADvC6VUc.txt `

2. 通过外网 HTTP 访问文件
使用上一步返回的文件 ID,构造 URL 通过浏览器或 curl 访问:
`
http://your_domain.com或服务器公网IP/group1/M00/00/00/wKgKZF9rT2aANzRsAAAADvC6VUc.txt
`
如果配置了域名,应确保域名 DNS 解析到 Storage 服务器的公网 IP,并且服务器防火墙/安全组开放了 80 端口。

五、进阶配置与优化建议

  1. 高可用与负载均衡
  • Tracker 集群:部署多个 Tracker,并在 storage.confclient.conf 中配置所有 tracker_server
  • Storage 集群与分组:部署多个 Storage 服务器到同一组(group)实现冗余,或配置不同组(如 group1, group2)进行容量扩展。
  • Nginx 负载均衡:在 Storage 服务器前再部署一层 Nginx 作为负载均衡器,将请求分发到多个 Storage 的 Nginx 服务上。
  1. 安全性
  • 使用防火墙限制除必要端口(80, 22122, 23000)外的所有访问。
  • 考虑为 Nginx 配置 SSL/TLS(HTTPS)以加密传输。
  • 可以在 Nginx 层面配置访问令牌、Referer 防盗链等。
  1. 性能与存储
  • store_path0 指向高性能存储介质(如 SSD)。
  • 调整 Linux 内核参数(如文件描述符数量、网络参数)。
  • 根据访问模式,合理配置 Nginx 缓存。

六、应用软件服务集成

在您的应用程序(如 Java Spring Boot、Python Django、PHP 等)中集成 FastDFS 客户端:

  1. 引入客户端 SDK:根据编程语言选择官方或社区维护的 FastDFS 客户端库。
  2. 配置客户端:在应用配置文件中指定 Tracker 服务器地址列表。
  3. 文件操作
  • 上传:调用客户端 API 上传文件,获得文件 ID(如 group1/M00/00/00/xxx.jpg)。
  • 存储:将文件 ID 存入您的业务数据库。
  • 访问/下载:通过拼接 http://你的Nginx域名或IP/ + 文件ID 生成完整的可访问 URL,前端直接使用此 URL 展示图片或提供下载链接。
  • 删除:通过客户端 API 根据文件 ID 删除文件(注意权限控制)。

通过以上步骤,您就成功搭建了一个外网可访问、具备基本高可用能力的 FastDFS + Nginx 图片/文件服务器,并可以将其集成到您的应用软件服务中,高效管理海量静态资源。


如若转载,请注明出处:http://www.xuanpinxiang.com/product/69.html

更新时间:2026-04-12 17:55:33