Nginx 整合 FastDFS 实现文件服务器
一、前言
本篇衔接《FastDFS 环境搭建》内容进行讲解,上篇文章我们实现了图片上传的功能,但是无法通过 http 进行访问,本篇将解决该问题。
建议读者先浏览《FastDFS 环境搭建》再继续浏览本篇文章。
二、安装
2.1 下载 fastdfs-nginx-module
Nginx 整合 FastDFS 需要依赖 fastdfs-nginx-module 模块,我们需要将其下载下来。
git clone https://github.com/happyfish100/fastdfs-nginx-module.git
查看下载文件:
[root@fastdfs ~]# pwd
/root
[root@fastdfs ~]# ll
total 1048
drwxr-xr-x. 11 root root 270 Oct 16 22:19 fastdfs
drwxr-xr-x. 4 root root 59 Oct 17 02:56 fastdfs-nginx-module
drwxr-xr-x. 6 root root 147 Oct 16 22:22 libfastcommon
-rw-r--r--. 1 root root 49608 Oct 17 01:51 test.jpg
2.2 安装 nginx/fastdfs-nginx-module
笔者通过 yum 方式安装 nginx,具体操作可以访问 《Nginx 快速入门》。
现在出现一个尴尬的问题:nginx 安装第三方模块需要通过 configure 命令,因此我们还得下载 nginx 源码对第三方模块进行编译安装。
由于笔者已经提前安装 nginx ,键入命令:
[root@fastdfs ~]# nginx -V
nginx version: nginx/1.14.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC)
built with OpenSSL 1.0.2k-fips 26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie'
可以看到 nginx 的版本以及安装好的 nginx 模块,我们需要下载 nginx/1.14.0 的源码:
wget http://nginx.org/download/nginx-1.14.0.tar.gz
tar -zxvf nginx-1.14.0.tar.gz
cd nginx-1.14.0
进入到 nginx-1.14.0 目录后,我们就看到 configure 命令了。
通过源码编译 nginx 模块需要安装依赖包(如果之前通过源码方式安装 nginx 可以忽略该步骤):
yum install pcre
yum install pcre-devel
yum install zlib
yum install zlib-devel
yum install openssl
yum install openssl-devel
安装完成后,我们现在需要拼接执行命令。
即 ./configure 已安装的模块 --add-module=/root/fastdfs-nginx-module/src,最终的结果如下:
./configure --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie' --add-module=/root/fastdfs-nginx-module/src
执行上边的命令,编译好之后再执行 make 即可。注意,不需要 make install
最后替换 nginx 命令:
cp /usr/sbin/nginx /usr/sbin/nginx.bak
cp ./objs/nginx /usr/sbin/
三、配置
3.1 修改 fastdfs-nginx-module 配置文件
复制 mod_fastdfs 配置文件:
cp /root/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
修改 vim /etc/fdfs/mod_fastdfs.conf:
base_path=/data/fastdfs/tmp
tracker_server=192.168.10.110:22122
group_name=light
url_have_group_name = true
store_path0=/data/fastdfs/storage
注意:请确保 /etc/fdfs 有如下 .conf 文件:
[root@fastdfs fdfs]# pwd
/etc/fdfs
[root@fastdfs fdfs]# ll
total 84
-rw-r--r--. 1 root root 1462 Oct 17 01:50 client.conf
-rw-r--r--. 1 root root 1461 Oct 16 22:26 client.conf.sample
-rw-r--r--. 1 root root 955 Oct 17 04:34 http.conf
-rw-r--r--. 1 root root 31172 Oct 17 04:35 mime.types
-rw-r--r--. 1 root root 3744 Oct 17 04:22 mod_fastdfs.conf
-rw-r--r--. 1 root root 7976 Oct 17 01:57 storage.conf
-rw-r--r--. 1 root root 7978 Oct 16 22:26 storage.conf.sample
-rw-r--r--. 1 root root 105 Oct 16 22:26 storage_ids.conf.sample
-rw-r--r--. 1 root root 7442 Oct 16 23:34 tracker.conf
-rw-r--r--. 1 root root 7441 Oct 16 22:26 tracker.conf.sample
缺少配置文件,可能会造成后边启动 nginx 失败,如果根据笔者介绍的步骤,应该不会出现缺漏文件的情况。
3.2 修改 nginx 配置文件
vim /etc/nginx/conf.d/default.conf ,新增 location 配置:
server {
server_name 192.168.10.110;
location /light/M00 {
root /data/fastdfs/storage/data;
ngx_fastdfs_module;
}
...
}
保存文件,重启 nginx :
nginx -s reload
四、测试
打开浏览器访问 http://192.168.10.110/light/M00/00/00/wKgKblvG1hmAafZBAADByGKuVUM369.jpg (上篇文章中笔者上传图片后 fdfs 返回的 url 地址),显示效果:

图片正常访问,大功告成。
如果访问不通,检查是否是防火墙问题,或者查看 nginx 日志。
Nginx 整合 FastDFS 实现文件服务器的更多相关文章
- Spring Boot 整合 FastDFS 客户端
原文地址:Spring Boot 整合 FastDFS 客户端 博客地址:http://www.extlight.com 一.前言 前两篇介绍整体上介绍了通过 Nginx 和 FastDFS 的整合来 ...
- 百度富文本编辑器整合fastdfs文件服务器上传
技术:springboot+maven+ueditor 概述 百度富文本整合fastdfs文件服务器上传 详细 代码下载:http://www.demodashi.com/demo/15008.h ...
- FastDFS单节点安装 & FastDFS+Nginx整合
安装环境 FastDFS_v5.05.tar.gz(http://sourceforge.net/projects/fastdfs/files/) fastdfs-nginx-module ...
- FastDFS和apache/nginx整合
因为FastDFS默认自带的http服务器性能不好, 所以一般建议用外置的apache或者nginx 来解决http下载,以应付大并发的情况 注意nginx扩展模块只支持GET和HEAD模式获取文件, ...
- 【转载】【JAVA秒会技术之图片上传】基于Nginx及FastDFS,完成图片的上传及展示
基于Nginx及FastDFS,完成商品图片的上传及展示 一.传统图片存储及展示方式 存在问题: 1)大并发量上传访问图片时,需要对web应用做负载均衡,但是会存在图片共享问题 2)web应用服务器的 ...
- 使用nginx访问FastDFS
文中所有~~~均为同一个自定义文件夹名字,一般使用项目名称 2.1.为什么需要用Nginx访问? FastDFS通过Tracker服务器,将文件放在Storage服务器存储,但是同组存储服务器之间需要 ...
- Nginx和FastDfs完整配置过程
借鉴(https://blog.csdn.net/qq_34301871/article/details/80060235) 1.unknown directive "ngx_fastdfs ...
- 使用nginx访问FastDFS fastdfs nginx
文中所有~~~均为同一个自定义文件夹名字,一般使用项目名称 2.1.为什么需要用Nginx访问? FastDFS通过Tracker服务器,将文件放在Storage服务器存储,但是同组存储服务器之间需要 ...
- nginx整合tomcat集群并做session共享----测试案例
最近出于好奇心,研究了一下tomcat集群配置,并整合nginx,实现负载均衡,session共享,写篇记录,防止遗忘.---------菜鸡的自我修炼. 说明:博主采用一个web项目同时部署到两台t ...
随机推荐
- spring--mvc添加用户及用户头像上传
spring--mvc添加用户及用户头像上传 添加用户步骤: 1.用ajax获取省份信息 2.添加用户 代码:register.jsp <meta http-equiv="Conten ...
- 使用HTTPS与SSL来保证安全性
原文链接:https://developer.android.com/training/articles/security-ssl.html SSL,安全套接层(TSL),是一个常见的用来加密客户端和 ...
- MySQL Server类型之MySQL客户端工具的下载、安装和使用(博主推荐)
本博文的主要内容有 .MySQL Server 5.5系列的下载 .MySQL Server 5.5系列的安装 .MySQL Server 5.5系列的使用 .MySQL Server 5.5系列的卸 ...
- gitlba的搭建与使用
实验环境继续使用git的实验环境,详情请点击连接https://www.cnblogs.com/cash-su/p/10131632.html 首先给服务器做一个本机的映射 [root@git1 ~] ...
- bzoj1617
题解: dp f[i]表示运i头奶牛需要的时间 f[i]=f[i-j]+a[i]+2*m 然后ans=f[n]-m(最后一次不用跑回来) 代码: #include<bits/stdc++.h&g ...
- 51nod1269Devu and Flowers
题解: 如果没有限制每一种花有多少,那么就是简单的排列组合问题. 那么我们强制让一些花一定都要选. 暴力搜索,然后组合数(逆元) 采用容斥原理来计算最后的答案 代码: #include<bits ...
- myeclipse设置jvm参数的三种方式
方法一: 打开eclipse,选择Window--Preferences...在对话框左边的树上双击Java,再双击Installed JREs,在右边选择前面有对勾的JRE,再单击右边的“Edit” ...
- Java——String类
body, table{font-family: 微软雅黑; font-size: 10pt} table{border-collapse: collapse; border: solid gray; ...
- EXCEL FAQ
1.win7双击打开EXCEL07时显示停止工作,但是在打开方式中可以打开,怎么破? 加载项的问题,在选项-信任中心-信任中心设置-加载项-禁用所有应用程序加载项即可,但是这样会丧失一些功能,也可以把 ...
- 用MyEclipse JPA创建项目(四)
MyEclipse 3.15 Style——在线购买低至75折!火爆开抢>> [MyEclipse最新版下载] 本教程介绍了MyEclipse中的一些基于PA的功能. 阅读本教程时,了解J ...