配置FastDFS的Nginx访问,一下就通了(三)

一、环境信息

  • Linux:CentOS / Rocky / RHEL 系列

  • Nginx:1.24.0

  • FastDFS:5.05

  • fastdfs-nginx-module:1.16

  • fastcommon:1.0.38

fastdfs-nginx-module下载地址,下载后切换代码历史版本至最开始1.16代码位置:

https://github.com/happyfish100/fastdfs-nginx-module

然后修改config配置如下:

目录 /usr/local/src/fastdfs-nginx-module/src

ngx_addon_name=ngx_http_fastdfs_module ​ HTTP_MODULES="$HTTP_MODULES ngx_http_fastdfs_module" ​ NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_http_fastdfs_module.c" ​ CORE_INCS="$CORE_INCS /usr/local/include" ​ CORE_LIBS="$CORE_LIBS -lfastcommon -lfdfsclient" ​ CFLAGS="$CFLAGS -D_FILE_OFFSET_BITS=64 -DFDFS_OUTPUT_CHUNK_SIZE='256*1024' -DFDFS_MOD_CONF_FILENAME='\"/etc/fdfs/mod_fastdfs.conf\"'"

源码目录:

/usr/local/src

安装目录:

/usr/local/nginx /etc/fdfs

二、编译安装 Nginx + FastDFS 模块

进入 nginx 源码目录:

cd /usr/local/src/nginx-1.24.0

编译配置:

./configure \ --prefix=/usr/local/nginx \ --add-module=/usr/local/src/fastdfs-nginx-module/src

编译安装:

make make install

验证:

/usr/local/nginx/sbin/nginx -V

输出包含:

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

说明模块编译成功。


三、Nginx 配置

编辑:

/usr/local/nginx/conf/nginx.conf

server 配置:

server { listen 80; server_name localhost; location / { root html; index index.html index.htm; } location ~/group([0-9])/M00 { ngx_fastdfs_module; } }

四、配置 mod_fastdfs.conf

复制模板:

cp /usr/local/src/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/

修改:

/etc/fdfs/mod_fastdfs.conf

关键参数:

tracker 地址

tracker_server=192.168.2.237:22122

storage 路径

store_path0=/data/fastdfs/storage

URL 是否包含 group

url_have_group_name = true

group 数量

group_count = 1

添加 group 配置:

[group1] group_name=group1 storage_server_port=23000 store_path_count=1 store_path0=/data/fastdfs/storage

五、配置 http.conf 和 mime.types

FastDFS nginx 模块需要这两个文件。

查找:

find /usr/local/src -name http.conf

复制:

cp /usr/local/src/fastdfs-5.05/conf/http.conf /etc/fdfs/ cp /usr/local/src/fastdfs-5.05/conf/mime.types /etc/fdfs/

确认:

ls /etc/fdfs

结果:

client.conf http.conf mime.types mod_fastdfs.conf

六、创建 storage 软链接(非常关键)

FastDFS nginx 模块访问文件依赖M00目录。

创建:

ln -s /data/fastdfs/storage/data /data/fastdfs/storage/data/M00

目录结构:

/data/fastdfs/storage/data/M00

七、启动 Nginx

启动:

/usr/local/nginx/sbin/nginx

检查:

ps -ef | grep nginx

八、上传测试文件

创建测试文件:

echo "fastdfs test" > test.txt

上传:

/usr/bin/fdfs_upload_file /etc/fdfs/client.conf test.txt

返回:

group1/M00/00/00/wKgC7Wmz0KeAA-gQAAAADUid9Xg917.txt

九、浏览器访问测试

访问:

http://192.168.2.237/group1/M00/00/00/wKgC7Wmz0KeAA-gQAAAADUid9Xg917.txt

成功返回:

fastdfs test

说明FastDFS + Nginx 成功部署


十、你遇到的主要问题总结

问题1

编译 nginx 报错

fatal error: common_define.h: No such file or directory

原因

FastDFS 头文件引用方式:

#include "common_define.h"

gcc 默认不会进入:

/usr/include/fastcommon

解决

复制头文件:

cp /usr/include/fastdfs/*.h /usr/include/ cp /usr/include/fastcommon/*.h /usr/include/

问题2

编译报错

fatal error: fdfs_define.h: No such file or directory

原因

FastDFS 头文件路径不在 gcc 默认路径。

解决

复制头文件:

cp /usr/include/fastdfs/*.h /usr/include/

问题3

浏览器访问 FastDFS 文件失败

原因:

/etc/fdfs/mod_fastdfs.conf 为空

nginx 模块无法读取配置。

解决

复制配置:

cp /usr/local/src/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/

并正确配置 tracker 和 storage。


问题4

nginx 访问文件 404

原因:

缺少 storage 软链接。

解决

ln -s /data/fastdfs/storage/data /data/fastdfs/storage/data/M00

问题5

nginx 启动后访问失败

原因:

缺少:

http.conf mime.types

解决

复制:

cp fastdfs/conf/http.conf /etc/fdfs/ cp fastdfs/conf/mime.types /etc/fdfs/

十一、最终目录结构

/usr/local/nginx /etc/fdfs /data/fastdfs

FastDFS 文件:

/data/fastdfs/storage/data/M00/00/00/xxx

访问地址:

http://服务器IP/group1/M00/00/00/xxx

十二、最终架构

浏览器 │ │ HTTP ▼ Nginx │ │ ngx_fastdfs_module ▼ FastDFS Storage │ ▼ 文件数据