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 ...
随机推荐
- 无法打开物理文件“xxxx.mdf”。操作系统错误 5:“5(拒绝访问)”
- DB2 的事务日志
1. DB2事务日志:DB2的日志分主日志和次日志,主日志是在数据库第一次被连接和激活时创建的,而次日志是当写满所有的主日志后,才动态分配次日志,主日志和次日志受设置个数的制约,当配置的所有主 ...
- java并发编程:线程安全管理类--原子操作类--AtomicReferenceFieldUpdater<T,V>
1.类 AtomicReferenceFieldUpdater<T,V> public abstract class AtomicReferenceFieldUpdater<T,V& ...
- 51nod1513
题解: 更据题意,在树上深度为没一个数的都放在一起,要用的时候二分出来,看结果 用c++的数据结构 代码: #include<bits/stdc++.h> using namespace ...
- 玩转X-CTR100 l STM32F4 l DS18B20单总线温度传感器
我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器 扩展DS1 ...
- jQuery一句话实现全选
一句话实现全选 function selectAll(checkbox){ $('input[type=checkbox]').prop('checked', $(checkbox).prop('ch ...
- jQuery单选组美化特效
需求:根据数据动态生成单选组 代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8" ...
- Python: PS 图像调整--明度调整
本文用 Python 实现 PS 图像调整中的明度调整: 我们知道,一般的非线性RGB亮度调整只是在原有R.G.B值基础上增加和减少一定量来实现的,而PS的明度调整原理还得从前面那个公式上去找.我们将 ...
- C语言基础:分支语句和常见运算符 分类: iOS学习 c语言基础 2015-06-10 21:44 13人阅读 评论(0) 收藏
if(判断条件){ 执行语句; }else if(判断条件){ 执行语句; } switch (整型表达式){ case 值1: 执行语句; break; case 值2: 执行语句; break; ...
- Windows Phone 8, 添加Map控件
摘要: 1. 添加Map控件到程序. 2. 在Map控件中显示您当前的位置. 内容: 首先在WMAppManifest.xml中的Capabilities选项卡中勾选如下两项:ID_CAP_MAP, ...