CentOS7搭建FastDFS V5.11分布式文件系统-第三篇
1.测试
前面两篇博文已对FastDFS的安装和配置,做了比较详细的讲解。FastDFS的基础模块都搭好了,现在开始测试下载。
1.1 配置客户端
同样的,需要修改客户端的配置文件:
/etc/fdfs/client.conf
base_path=/opt/fastdfs_tracker #tracker服务器文件路径
tracker_server=172.20.132.57: #tracker服务器IP地址和端口号
http.tracker_server_port= # tracker 服务器的 http端口号,必须和tracker的设置对应起来
修改完成的文件为:
connect_timeout=
network_timeout=
base_path=/opt/fastdfs_tracker
tracker_server=172.20.132.57:
log_level=info
use_connection_pool = false
connection_pool_max_idle_time =
load_fdfs_parameters_from_tracker=false
use_storage_id = false
storage_ids_filename = storage_ids.conf
http.tracker_server_port=
1.2 模拟上传
确定图片位置后,我们输入上传图片命令:
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf /root/1.jpg #这后面放的是图片的位置
成功后会返回图片的路径:
[root@sybmfw12-lnsy fastdfs-5.11]# /usr/bin/fdfs_upload_file /etc/fdfs/client.conf /root/.png
group1/M00///rBSEOVoC2QCAJVdoAAFeVJMpopw987.png
组名:group1
磁盘:M00
目录:00/00
文件名称:rBSEOVoC2QCAJVdoAAFeVJMpopw987.png
我们上传的图片会被上传到我们创建的storage_data目录下,让我们去看看:
[root@sybmfw12-lnsy ~]# cd /opt/fastdfs_storage_data/data/
[root@sybmfw12-lnsy data]# ls
0C 1C 2C 3C 4C 5C 6C 7C 8C 9C A0 A4 A8 AC B0 B4 B8 BC C0 C4 C8 CC D0 D4 D8 DC E0 E4 E8 EC F0 F4 F8 FC
0D 1D 2D 3D 4D 5D 6D 7D 8D 9D A1 A5 A9 AD B1 B5 B9 BD C1 C5 C9 CD D1 D5 D9 DD E1 E5 E9 ED F1 F5 F9 FD
0A 0E 1A 1E 2A 2E 3A 3E 4A 4E 5A 5E 6A 6E 7A 7E 8A 8E 9A 9E A2 A6 AA AE B2 B6 BA BE C2 C6 CA CE D2 D6 DA DE E2 E6 EA EE F2 F6 FA FE
0B 0F 1B 1F 2B 2F 3B 3F 4B 4F 5B 5F 6B 6F 7B 7F 8B 8F 9B 9F A3 A7 AB AF B3 B7 BB BF C3 C7 CB CF D3 D7 DB DF E3 E7 EB EF F3 F7 FB FF
[root@sybmfw12-lnsy data]# ls 00/
00 04 08 0C 10 14 18 1C 20 24 28 2C 30 34 38 3C 40 44 48 4C 50 54 58 5C 60 64 68 6C 70 74 78 7C 80 84 88 8C 90 94 98 9C A0 A4 A8 AC B0 B4 B8 BC C0 C4 C8 CC D0 D4 D8 DC E0 E4 E8 EC F0 F4 F8 FC
01 05 09 0D 11 15 19 1D 21 25 29 2D 31 35 39 3D 41 45 49 4D 51 55 59 5D 61 65 69 6D 71 75 79 7D 81 85 89 8D 91 95 99 9D A1 A5 A9 AD B1 B5 B9 BD C1 C5 C9 CD D1 D5 D9 DD E1 E5 E9 ED F1 F5 F9 FD
02 06 0A 0E 12 16 1A 1E 22 26 2A 2E 32 36 3A 3E 42 46 4A 4E 52 56 5A 5E 62 66 6A 6E 72 76 7A 7E 82 86 8A 8E 92 96 9A 9E A2 A6 AA AE B2 B6 BA BE C2 C6 CA CE D2 D6 DA DE E2 E6 EA EE F2 F6 FA FE
03 07 0B 0F 13 17 1B 1F 23 27 2B 2F 33 37 3B 3F 43 47 4B 4F 53 57 5B 5F 63 67 6B 6F 73 77 7B 7F 83 87 8B 8F 93 97 9B 9F A3 A7 AB AF B3 B7 BB BF C3 C7 CB CF D3 D7 DB DF E3 E7 EB EF F3 F7 FB FF
[root@sybmfw12-lnsy data]# ls 00/00/
rBSEOVoC2QCAJVdoAAFeVJMpopw987.png
果然通过刚刚返回的路径,我们成功找到了图片。
我们仔细看一下,实际文件存储路径下有创建好的多级目录。data下有256个1级目录,每级目录下又有256个2级子目录,总共65536个文件,新写的文件会以hash的方式被路由到其中某个子目录下,然后将文件数据直接作为一个本地文件存储到该目录中。
如果要访问刚上传的图片,我们得需要结合nginx来实现
1.4 HTTP请求不能访问文件的原因
我们在使用FastDFS部署一个分布式文件系统的时候,通过FastDFS的客户端API来进行文件的上传、下载、删除等操作。同时通过FastDFS的HTTP服务器来提供HTTP服务。但是FastDFS的HTTP服务较为简单,无法提供负载均衡等高性能的服务,所以FastDFS的开发者——淘宝的架构师余庆同学,为我们提供了Nginx上使用的FastDFS模块(也可以叫FastDFS的Nginx模块)。
FastDFS通过Tracker服务器,将文件放在Storage服务器存储,但是同组之间的服务器需要复制文件,有延迟的问题.假设Tracker服务器将文件上传到了172.20.132.57,文件ID已经返回客户端,这时,后台会将这个文件复制到172.20.132.57,如果复制没有完成,客户端就用这个ID在172.20.132.57取文件,肯定会出现错误。这个fastdfs-nginx-module可以重定向连接到源服务器取文件,避免客户端由于复制延迟的问题,出现错误。
正是这样,FastDFS需要结合nginx,所以取消原来对HTTP的直接支持。
2. FastDFS的nginx模块安装
在安装nginx之前要安装nginx所需的依赖lib:
yum -y install pcre pcre-devel
yum -y install zlib zlib-devel
yum -y install openssl openssl-devel
2.2 安装nginx并添加fastdfs-nginx-module
解压nginx,和fastdfs-nginx-module:
tar -zxvf nginx-1.10..tar.gz
unzip fastdfs-nginx-module-master.zip
解压后进入nginx目录编译安装nginx,并添加fastdfs-nginx-module:
./configure --prefix=/usr/local/nginx --add-module=/root/fastdfs-nginx-module-master/src #解压后fastdfs-nginx-module所在的位置
如果配置不报错的话,就开始编译:
make
make install
如果报错的话,很可能是版本的原因,在我的第二篇博文中提供了我测试成功不报错的版本下载。
nginx的默认目录是/usr/local/nginx,安装成功后查看:
[root@sybmfw12-lnsy ~]# ll /usr/local/nginx/
drwx------. nobody root 11月 : client_body_temp
drwxr-xr-x. root root 11月 : conf
drwx------. nobody root 11月 : fastcgi_temp
drwxr-xr-x. root root 11月 : html
drwxr-xr-x. root root 11月 : logs
drwx------. nobody root 11月 : proxy_temp
drwxr-xr-x. root root 11月 : sbin
drwx------. nobody root 11月 : scgi_temp
drwx------. nobody root 11月 : uwsgi_temp
2.3 配置storage nginx
修改nginx.conf:
修改监听端口 listen 9999, 新增location
server {
listen ;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
location ~/group1/M00 {
root /opt/fastdfs_storage/data;
ngx_fastdfs_module;
}
location = /50x.html {
root html;
}
}
然后进入FastDFS安装时的解压过的目录,将http.conf和mime.types拷贝到/etc/fdfs目录下:
[root@sybmfw12-lnsy conf]# cp http.conf mime.types /etc/fdfs/
[root@sybmfw12-lnsy conf]# cp mime.types /etc/fdfs/
另外还需要把fastdfs-nginx-module安装目录中src目录下的mod_fastdfs.conf也拷贝到/etc/fdfs目录下:
[root@sybmfw12-lnsy src]# cp mod_fastdfs.conf /etc/fdfs/
对刚刚拷贝的mod_fastdfs.conf文件进行修改:
/etc/fdfs/mod_fastdfs.conf
base_path=/opt/fastdfs_storage #保存日志目录
tracker_server=172.20.132.57: #tracker服务器的IP地址以及端口号
storage_server_port= #storage服务器的端口号
url_have_group_name = true #文件 url 中是否有 group 名
store_path0=/opt/fastdfs_storage_data #存储路径
group_count = #设置组的个数
在文件的最后,设置group
[group1]
group_name=group1
storage_server_port=
store_path_count=
store_path0=/opt/fastdfs_storage_data
创建M00至storage存储目录的符号连接:
ln -s /opt/fastdfs_storage_data/data/ /opt/fastdfs_storage_data/data/M00
启动nginx:
/usr/local/nginx/sbin/nginx
ngx_http_fastdfs_set pid=8142
[root@sybmfw12-lnsy src]# curl localhost:
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
body {
width: 35em;
margin: auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p> <p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p> <p><em>Thank you for using nginx.</em></p>
</body>
</html>
恭喜你,storage的nginx已配置成功。接下来,我们还要继续配置tracker的nginx。
2.4 配置tracker nginx
在nginx.cfg里在添加一个虚拟主机
upstream fdfs_group1 {
server 127.0.0.1:;
}
server {
listen ;
server_name localhost;
location /group1/M00 {
proxy_pass http://fdfs_group1;
}
error_page /50x.html;
location = /50x.html {
root html;
}
}
重启nginx
/usr/local/nginx/sbin/nginx -s reload
ngx_http_fastdfs_set pid=
[root@sybmfw12-lnsy ~]# curl localhost
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
body {
width: 35em;
margin: auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p> <p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p> <p><em>Thank you for using nginx.</em></p>
</body>
</html>
2.6 HTTP测试
可以成功访问。
现在我们再去访问一下,原来我们上传过的文件:
172.20.132.57/group1/M00/00/00/rBSEOVoCsSWAZG_WAAFeVJMpopw658.png

这个时候已经能成功访问。感谢你能坚持到现在,FastDFS已部署完成。
贴上完整nginx配置
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout ;
keepalive_timeout ;
#gzip on;
server {
listen ;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
location ~/group1/M00 {
root /opt/data/fastdfs_storage/data;
ngx_fastdfs_module;
}
location = /50x.html {
root html;
}
}
upstream fdfs_group1 {
server 127.0.0.1:;
}
server {
listen ;
server_name localhost;
location /group1/M00 {
proxy_pass http://fdfs_group1;
}
error_page /50x.html;
location = /50x.html {
root html;
}
}
}
CentOS7搭建FastDFS V5.11分布式文件系统-第三篇的更多相关文章
- CentOS7搭建FastDFS V5.11分布式文件系统(三)
1.测试 前面两篇博文已对FastDFS的安装和配置,做了比较详细的讲解.FastDFS的基础模块都搭好了,现在开始测试下载. 1.1 配置客户端 同样的,需要修改客户端的配置文件: /etc/fdf ...
- CentOS7搭建FastDFS V5.11分布式文件系统-第一篇
1.绪论 最近要用到fastDFS,所以自己研究了一下,在搭建FastDFS的过程中遇到过很多的问题,为了能帮忙到以后搭建FastDFS的同学,少走弯路,与大家分享一下.FastDFS的作者淘宝资深架 ...
- CentOS7搭建FastDFS V5.11分布式文件系统(一)
1.绪论 最近要用到fastDFS,所以自己研究了一下,在搭建FastDFS的过程中遇到过很多的问题,为了能帮忙到以后搭建FastDFS的同学,少走弯路,与大家分享一下.FastDFS的作者淘宝资深架 ...
- CentOS7搭建FastDFS V5.11分布式文件系统及Java整合详细过程
1.1 FastDFS的应用场景 FastDFS是为互联网应用量身定做的一套分布式文件存储系统,非常适合用来存储用户图片.视频.文档等文件.对于互联网应用,和其他分布式文件系统相比,优势非常明显.其中 ...
- CentOS7搭建FastDFS V5.11分布式文件系统-第二篇
1.CentOS7 FastDFS搭建 前面已下载好了要用到的工具集,下面就可以开始安装了: 如果安装过程中出现问题,可以下载我提供的,当前测试可以通过的工具包: 点这里点这里 1.1 安装libfa ...
- CentOS7搭建FastDFS V5.11分布式文件系统(二)
1.CentOS7 FastDFS搭建 前面已下载好了要用到的工具集,下面就可以开始安装了: 如果安装过程中出现问题,可以下载我提供的,当前测试可以通过的工具包: 点这里点这里 1.1 安装libfa ...
- Linux 下 FastDFS v5.08 分布式文件系统的安装
一.系统安装目录 源代码包目录 /data/wwwroot libevent安装目录 /usr/local/libevent FastDFS安装目录 /data/fastdfs nginx安装目录 / ...
- FastDFS图片服务器(分布式文件系统)学习。
参考:https://blog.csdn.net/hiqingtian/article/details/79413471 https://blog.csdn.net/sinat_40399893/ar ...
- CentOS7搭建FastDFS+Nginx
1. FastDFS 介绍 FastDFS是一个开源的分布式文件系统,她对文件进行管理,功能包括:文件存储.文件同步.文件访问(文件上传.文件下载)等,解决了大容量存储和负载均衡的问题.特别适合以文件 ...
随机推荐
- 启动 nexus, major.minor 51.0 版本不支持
a).Nexus的2.6版本及其以后版本 使用的Java的jdk7. b).Nexus的2.0-2.5版本 使用Java的jdk6的update30版本及其以后的jdk6版本 使用Java的jdk7的 ...
- [精彩] 关于DB2的内存分配
这两天在看DB2的内存管理的内容,看的很是模糊,有以下问题不明白,请教 是不是数据库管理器的共享内存就是DB2能够使用的最大内容呢,然后数据库全局内存从管理器内存那里获得分配的内存,然后应用程序全局内 ...
- 简明PR教程
注意:本文供培训使用且仅为第一版 作者也不打算继续更新 本篇文章最早是在为内部培训时所编写的文章 有些疏漏且没有进行校正等工作 我尽力用最简单通俗的语言给大家介绍PR的使用方法 简明PR教程 1.编辑 ...
- 2018.10.19 NOIP训练 变化的序列(线性dp)
传送门 f[i][j]f[i][j]f[i][j]表示后iii个对答案贡献有jjj个a的方案数. 可以发现最后a,ba,ba,b的总个数一定是n∗(n−1)/2n*(n-1)/2n∗(n−1)/2 因 ...
- 2018.09.14 洛谷P3931 SAC E#1 - 一道难题 Tree(树形dp)
传送门 简单dp题. f[i]表示以i为根的子树被割掉的最小值. 那么有: f[i]=min(∑vf[v],dist(i,fa))" role="presentation" ...
- linux CentOS 7 安装 RabbitMQ Erlang 21.0
1. 安装erlang 安装依赖环境 yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel unixO ...
- java.lang.ExceptionInInitializerError Caused by: org.hibernate.InvalidMappingException: Unable to read XML
此错误是说无法读取你的xml文档,于是我们就该去更改xml文档,因为我是自动生成的,所以我找了一份之前手写的,发现是dtd错了,把之前的dtd拷贝过来之后程序就测试通过了
- int最大值+1为什么是-2147483648最小值-1为什么是2147483647
今天一个新手学编程就问到这个问题,很多人第一次学编程肯定会遇到这个问题,大部分都知道是溢出之类的,用源码和补码就很容易说明 int i = -2147483648 ;这是不允许的 VS里报的错 err ...
- PriorityQueue源码分析
PriorityQueue其实是一个优先队列,和先进先出(FIFO)的队列的区别在于,优先队列每次出队的元素都是优先级最高的元素.那么怎么确定哪一个元素的优先级最高呢,jdk中使用堆这么一 ...
- 页面中的删除确认(ajax)、输入框中确认信息是否可用(ajax)的jquery代码
1.页面中的删除确认(ajax) <%@ page language="java" contentType="text/html; charset=UTF-8&qu ...