下载安装包
https://github.com/happyfish100 作者:余庆(YuQing)
安装wget:
下载:
https://github.com/happyfish100/fastdfs-nginx-module/archive/refs/tags/V1.22.tar.gz
解压:
1
| tar -zxvf fastdfs-nginx-module-1.22.tar.gz
|
修改配置
1
| vim /usr/local/fastdfs-nginx-module-1.22/src/config
|
fastdfs的include在/usr/include/fastdfs /usr/include/fastcommon/
ngx_module_incs=”/usr/local/include” —> ngx_module_incs=”/usr/include”
CORE_INCS=”$CORE_INCS /usr/local/include” —> CORE_INCS=”$CORE_INCS /usr/include”
nginx 编译安装
进入nginx源码文件夹
1
| ./configure --prefix=/usr/local/nginx --add-module=/usr/local/fastdfs-nginx-module-1.22/src/
|
显示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| Configuration summary + using system PCRE library + OpenSSL library is not used + using system zlib library
nginx path prefix: "/usr/local/nginx" nginx binary file: "/usr/local/nginx/sbin/nginx" nginx modules path: "/usr/local/nginx/modules" nginx configuration prefix: "/usr/local/nginx/conf" nginx configuration file: "/usr/local/nginx/conf/nginx.conf" nginx pid file: "/usr/local/nginx/logs/nginx.pid" nginx error log file: "/usr/local/nginx/logs/error.log" nginx http access log file: "/usr/local/nginx/logs/access.log" nginx http client request body temporary files: "client_body_temp" nginx http proxy temporary files: "proxy_temp" nginx http fastcgi temporary files: "fastcgi_temp" nginx http uwsgi temporary files: "uwsgi_temp" nginx http scgi temporary files: "scgi_temp"
|
编译安装:
配置fastdfs-nginx-module
FastDFS 通过 Tracker 服务器,将文件放在 Storage 服务器存储,但是同组存储服务器之间需要进入文件复制,有同步延迟的问题。假设 Tracker 服务器将文件上传到了 S1,上传成功后文件 ID已经返回给客户端。
此时 FastDFS 存储集群机制会将这个文件同步到同组存储 S2,在文件还没有复制完成的情况下,客户端如果用这个文件 ID 在 S2 上取文件,就会出现文件无法访问的错误。
而 fastdfs-nginx-module 可以重定向文件连接到源服务器(S1)取文件,避免客户端由于复制延迟导致的文件无法访问错误。
拷贝配置文件
1
| cp /usr/local/fastdfs-nginx-module-1.22/src/mod_fastdfs.conf /etc/fdfs/
|
修改配置文件 mod_fastdfs.conf
1
| vim /etc/fdfs/mod_fastdfs.conf
|
1 2 3
| tracker_server=192.168.158.128:22122 url_have_group_name = true store_path0=/var/data/fastdfs-storage/store
|
拷贝http服务需要的配置(已经有了不用拷贝)
在fastdfs本体库中
1 2
| cp /usr/local/fastdfs/conf/http.conf /etc/fdfs/ cp /usr/local/fastdfs/conf/mime.types /etc/fdfs/
|
创建网络访问存储服务的软连接
在上传文件到FastDFS后,FastDFS会返回group1/M00/00/00/xxxxxxxxxx.xxx。其中group1是卷名,在mod_fastdfs.conf配置文件中已配置了url_have_group_name,以保证URL解析正确。
而其中的M00是FastDFS保存数据时使用的虚拟目录,需要将这个虚拟目录定位到真实数据目录上。
1
| ln -s /var/data/fastdfs-storage/store/data/ /var/data/fastdfs-storage/store/data/M00
|
修改nginx配置文件
1 2
| cd /usr/local/nginx/conf vim nginx.conf
|
添加local:
1 2 3 4
| location ~ /group([0-9])/M00 { add_header Content-Disposition "attachment;filename=$arg_attname"; ngx_fastdfs_module; }
|
启动
这时必须先把fastdfs启动,不然nginx无法正常使用。
1 2 3
| fdfs_trackerd /etc/fdfs/tracker.conf start fdfs_storaged /etc/fdfs/storage.conf start ./nginx
|
测试
使fastdfs client上传文件得到返回地址:
group1/M00/00/00/wKiegGJ1JGCAdd3kAAxZ6KIFrWU.tar.gz
使用浏览器访问http://192.168.158.128/group1/M00/00/00/wKiegGJ1JGCAdd3kAAxZ6KIFrWU.tar.gz