CentOS7搭建FastDFS V5.11分布式文件系统及Java整合详细过程

  • 绪论
  • 应用场景
  • 详细介绍
  • 上传文件交互过程
  • 下载文件交互过程
  • FastDFS搭建工具下载
  • 下载工具
  • 安装 libfastcommon
  • 安装 FastDFS
  • 安装 tracker
    • 创建 tracker 工作目录
    • 配置 tracker
    • 启动 tracker
  • 安装 storage
    • 为storage配置工作目录
    • 修改 storage 配置文件
    • 启动 storage
    • 校验整合
  • 配置客户端
  • 模拟上传
  • HTTP 访问文件
  • HTTP请求不能访问文件的原因
  • 安装 nginx 准备
  • 安装nginx并添加fastdfs-nginx-module
  • 配置 storage nginx
  • 配置 tracker nginx
  • 防火墙端口设置
  • java客户端

绪论

最近要用到 fastDFS ,所以自己研究了一下,在搭建FastDFS 的过程中遇到过很多问题,为了能帮助到以后搭建 FastDFS 的同学,少走弯路,与大家分享一下。FastDFS的作者淘宝资深架构 余庆,这个优秀的轻量级的分布式文件系统的开源没多久,立马就火了。由于篇幅较大,本博文共四篇,第一篇主要介绍 FastDFS,下载相关软件包,为搭建做好准备。第二篇会降到在CentOS 下搭建 FastDFS 的详细过程。第三篇,会讲到整合nginx详细内容。第四篇主要讲 FastDFS 怎么用 fastdfs-client-java 连接,并结合实例。

应用场景

FastDFS 是为互联网应用量身定制的一套分布式文件存储系统,非常适合用来存储用户图片、视频、文档等文件。对于互联网应用,和其他分布式文件徐彤相比,优势明显。其中有好几家是做网盘的公司。其中存储量最大的一家,集群中存储 group 数有400个,存储服务器超过 800 台,存储容量达到 6PB,文件超过1亿,Group 持续增长中。

以下是使用 FastDFS 的用户列表
UC (http://www.uc.cn/,存储容量超过10TB)
支付宝(http://www.alipay.com/)
京东商城(http://www.360buy.com/)
淘淘搜(http://www.taotaosou.com/)
飞信(http://feixin.1008.cn/)
赶集网(http://www.ganji.com/)
淘米网(http://www.61.com/)
迅雷(http://www.xunlei.com/)
蚂蜂窝(http://www.mafengwo.cn/)
丫丫网(http://www.iyaya.com/)
虹网(http://3g.ahong.com)
5173(http://www.5173.com/)
华夏原创网(http://www.yuanchuang.com/)
华师京城教育云平台(http://www.hsjdy.com.cn/)
视友网(http://www.cuctv.com/)
搜道网(http://www.sodao.com/)
58同城(http://www.58.com/)
商务联盟网(http://www.biz72.com/)
中青网(http://www.youth.cn/)
缤丽网 (http://www.binliy.com/)
飞视云视频(http://www.freeovp.com/)
梦芭莎(http://www.moonbasa.com/)
活动帮(http://www.eventsboom.com)
51CTO(http://www.51cto.com/)

详细介绍

FastDFS 是一个开源的分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。

FastDFS 服务端有两个角色:跟踪器(tracker)和存储节点(storage)。跟踪器主要做调度工作。在访问上起负载均衡的作用。

存储节点存储文件,完成文件管理的所有功能:存储、同步和提供存取接口,FastDFS同时对文件的 meta data 进行管理。所谓文件 meta data 就是文件的相关属性,以键值对(key value pair)方式表示,如:width = 1024,其中的key 为 width,value 为 1024,。 文件 meta data 是文件属性列表,可以包含多个键值对。

FastDFS 系统结构如下图:

跟踪器和存储节点都可以由一台或多台服务器构成。跟踪器和存储节点中的服务器均可以随时增加或下线而不会影响线上服务。其中跟踪器中的所有服务器时对等的,可以根据服务器的压力情况随时增加或减少。

为了支持大容量,存储节点(服务器)采用了分卷(或分组)的组织方式。存储系统有一个或多个卷组成,卷与卷之间的文件是相互独立的,所有卷的文件容量累加就是整个存储系统中的文件容量。一个卷可以由一台或多台存储服务器组成,一个卷下的存储文件服务器中的文件都是相通的,卷中的多台服务器起到了荣誉备份和负载均衡的作用。

在卷中增加服务器时,同步已有的文件由系统自动完成,同步完成之后,系统自动将新增服务器切换到线上提供服务。

当存储空间不足或即将耗尽时,可以动态添加卷,只需要增加一台或多台服务器,并将它们配置为一个新的卷,这样就扩大了存储系统的容量。

FastDFS 中的文件标识分为两个部分:卷名和文件名,两者缺一不可。

上传文件交互过程

  1. client 询问 tracker 上传到 storage ,不需要附加参数;
  2. tracker 返回一台可用的storage;
  3. client 直接和 storage 通讯完成文件上传;

下载文件交互过程

  1. client 询问 tracker 下载文件的storage ,参数为文件标识(卷名和文件名)
  2. tracker 返回一台可用的storage
  3. client 直接和 storage 通讯完成文件 下载。

FastDFS搭建工具下载

作者的 github 地址:https://github.com/happyfish100

这次搭建的所有工具,都可以在上面下载到,我搭建的是目前最新版本 Version 5.11。作者还有一个 5.10 的发行版本,你如果没有下载最近的,到时候整合 nginx 的时候可能会遇到:

local/fastdfs-nginx-module/src/common.c:1245: 错误:‘FDFSHTTPParams’没有名为‘support_multi_range’的成员
make[1]: *** [objs/addon/src/ngx_http_fastdfs_module.o] 错误 1
make[1]: Leaving directory `/usr/local/nginx-1.10.1'

遇到这个错误的原因是,在fastdfs-nginx-module 中的 HISTORY 中你可以看到:

整合的时候,fastdfs-nginx-module 中的 support_multi_range 在Version 5.10 中找不到。

Version 5.11对应的fastdfs-nginx-module的Version 1.20
Version 5.10对应的fastdfs-nginx-module的Version 1.19
之所以在安装前写了这么一段话,是因为这个很重要,版本不对应会给接下来的安装带来各种问题。

下载工具


把源码下载下来 4 个zip 包,在去下个 nginx :

安装 libfastcommon

由于我的CentOS 7 是最小化安装,我里面 没有安装 zip 解压

先安装:

yum -y install unzip zip

安装成功后解压 libfastcommon-master.zip

unzip libfastcommon-master.zip

进入我们刚刚解压的目录

[root@localhost ftp]# cd libfastcommon-master
[root@localhost libfastcommon-master]# ll
total 32
drwxr-xr-x 2 root root  117 Apr  5 18:07 doc
-rw-r--r-- 1 root root 8005 Apr  5 18:07 HISTORY
-rw-r--r-- 1 root root  566 Apr  5 18:07 INSTALL
-rw-r--r-- 1 root root 1606 Apr  5 18:07 libfastcommon.spec
-rwxr-xr-x 1 root root 3099 Apr  5 18:07 make.sh
drwxr-xr-x 2 root root  191 Apr  5 18:07 php-fastcommon
-rw-r--r-- 1 root root 2763 Apr  5 18:07 README
drwxr-xr-x 3 root root 4096 Jun  8 21:51 src

当我们 ./make.sh 的时候会提示,gcc 命令没有找到

用 yum 安装 gcc:

yum命令相当好用,是 RedHat 和 CentOS 从指定服务器下载RPM 包并自动安装,我个人比较喜欢。

yum -y install gcc-c++

这个时候分别执行 ./make.sh 和 ./make.sh install ,正常情况时可以成功的。

libfastcommon 默认会被安装到 /usr/lib64/libfastcommon.so 但是 FastDFS 的主程序却在 /usr/local/lib 目录下,这个时候我们就要建立一个软连接了,实际上也相当与windows 上的快捷方式。

ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so
ln -s /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so
ln -s /usr/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so
ln -s /usr/lib64/libfdfsclient.so /usr/lib/libfdfsclient.so

安装 FastDFS

解压 FastDFS 安装包

unzip fastdfs-5.11.zip

解压后看到:

[root@localhost ftp]# ls
593d8f1eN5b3b8133.jpg            libfastcommon-master
fastdfs-5.11                     libfastcommon-master.zip
fastdfs-5.11.zip                 nginx-1.12.0.tar.gz
fastdfs-client-java-master.zip   record.txt
fastdfs-nginx-module-master.zip  zookeeper-3.4.6.tar.gz

进到刚解压的目录

cd fastdfs-5.11
./make.sh
./make.sh install

如果没有保存那么就成功了,安装 log 中会提示 FastDFS 安装到了 /etc/fdfs 目录下。

成功后查看安装目录:

[root@localhost ftp]# cd /etc/fdfs/
[root@localhost fdfs]# ll
-rw-r--r-- 1 root root  1461 Jun  8 21:56 client.conf.sample
-rw-r--r-- 1 root root  7927 Jun  8 21:56 storage.conf.sample
-rw-r--r-- 1 root root  7389 Jun  8 21:56 tracker.conf.sample

我们需要把这三个示例文件复制一份,去掉.sample。

cp client.conf.sample client.conf
cp storage.conf.sample storage.conf
cp tracker.conf.sample tracker.conf

FastDFS 安装结束。

安装 tracker

创建 tracker 工作目录

这个目录可以自定义,用来保存 tracker 的data 和 log

根据个人习惯,我创建了下面的目录:

[root@localhost ~]# cd /usr/
[root@localhost usr]# mkdir yong.cao
[root@localhost usr]# cd yong.cao/
[root@localhost yong.cao]# mkdir dev
[root@localhost yong.cao]# cd dev/
[root@localhost dev]# mkdir fastdfs
[root@localhost yong.cao]# cd fastdfs/
[root@localhost dev]# mkdir fastdfs_tracker
[root@localhost fastdfs]# cd fastdfs_tracker/
[root@localhost fastdfs_tracker]# pwd
/usr/yong.cao/dev/fastdfs/fastdfs_tracker        #这个是我最终创建的目录
[root@localhost fastdfs_tracker]#

配置 tracker

cd /etc/fdfs
vim tracker.conf

打开后重点关注下面4个配置:

1.disabled=false #默认开启
2.port=22122 #默认端口号
3.base_path=/usr/yong.cao/dev/fastdfs/fastdfs_tracker #我刚刚创建的目录
4.http.server_port=6666 #默认端口是8080

启动 tracker

保存配置后启动 tracker,命令如下:

service fdfs_trackerd start

如果不能启动,或提示用 systemctl 可改用命令:

systemctl start fdfs_trackerd

成功后应该可以看到:

[root@localhost fdfs]# service fdfs_trackerd start
Starting fdfs_trackerd (via systemctl):                    [  OK  ]

进入刚刚创建的trakcer目录,发现目录中多了 data 和 log 两个目录

[root@localhost fdfs]# cd /usr/yong.cao/dev/fastdfs/fastdfs_tracker/
[root@localhost fastdfs_tracker]# ll
total 0
drwxr-xr-x 2 root root 178 Jun 16 21:19 data
drwxr-xr-x 2 root root  26 Jun 13 22:01 logs

最后我们需要给 tracker 加入开机启动

[root@localhost fastdfs_tracker]# ll /etc/rc.d/rc.local
-rw-r–r-- 1 root root 501 Jun 16 21:34 /etc/rc.d/rc.local

发现并没有执行权限,需要加一下:

chmod +x /etc/rc.d/rc.local

加完后应该是这样的:

#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.touch /var/lock/subsys/local
service fdfs_trackerd start

查看一下 trakcer 的端口监听情况

[root@localhost fastdfs_tracker]# netstat -unltp|grep fdfs
tcp        0      0 0.0.0.0:22122           0.0.0.0:*               LISTEN      2231/fdfs_trackerd

端口22122成功监听。

安装 storage

storage 的安装和 tracker 很类似。

为storage配置工作目录

与 tracker 不同的是,由于storage 好需要一个目录来存储数据,所以我另外多建了一个 fastdfs_storage_data

下面是我的目录结构:

[root@localhost fastdfs]# ls
fastdfs_storage  fastdfs_storage_data  fastdfs_tracker

修改 storage 配置文件

修改 storage.conf

vim /etc/fdfs/storage.conf

1.disabled=false
2.group_name=group1 #组名,根据实际情况修改
3.port=23000 #设置storage的端口号,默认是23000,同一个组的storage端口号必须一致
4.base_path=/usr/yong.cao/dev/fastdfs/fastdfs_storage #设置storage数据文件和日志目录
5.store_path_count=1 #存储路径个数,需要和store_path个数匹配
6.base_path0=/usr/yong.cao/dev/fastdfs/fastdfs_storage_data #实际文件存储路径
7.tracker_server=192.168.128.131:22122 #我CentOS7的ip地址
8.http.server_port=8888 #设置 http 端口号

修改保存后创建软引用

ln -s /usr/bin/fdfs_storaged /usr/local/bin

启动 storage

service fdfs_storaged start

如果不能启动,或提示用systemctl可改用命令:

systemctl start fdfs_storaged

成功后应该可以看到:

[root@localhost fdfs]# service fdfs_stroaged start
Starting fdfs_storaged (via systemctl):                    [  OK  ]

同样的,设置开机启动:

修改 rc.local

vim /etc/rc.d/rc.local#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.touch /var/lock/subsys/local
service fdfs_trackerd start
service fdfs_storaged start

查看一下 服务是否启动

[root@localhost fastdfs]# netstat -unltp | grep fdfs
tcp        0      0 0.0.0.0:22122           0.0.0.0:*               LISTEN      2231/fdfs_trackerd
tcp        0      0 0.0.0.0:23000           0.0.0.0:*               LISTEN      2323/fdfs_storaged

服务已正常启动。

校验整合

到这里,fastdfs 的东西都已经安装完成,最后我们还要确定一下, storage是否注册到了 tracker 中去。

查看命令

/usr/bin/fdfs_monitor /etc/fdfs/storage.conf

成功后可以看到 :

ip_addr = 192.168.128.131 (localhost.localdomain) ACTIVE

[root@localhost fastdfs]# /usr/bin/fdfs_monitor /etc/fdfs/storage.conf
[2017-06-17 14:15:44] DEBUG - base_path=/usr/yong.cao/dev/fastdfs/fastdfs_storage, connect_timeout=30, network_timeout=60, tracker_server_count=1, anti_steal_token=0, anti_steal_secret_key length=0, use_connection_pool=0, g_connection_pool_max_idle_time=3600s, use_storage_id=0, storage server id count: 0
server_count=1, server_index=0
tracker server is 192.168.128.131:22122
group count: 1
Group 1:
group name = group1
disk total space = 8178 MB
disk free space = 6463 MB
trunk free space = 0 MB
storage server count = 2
active server count = 1
storage server port = 23000
storage HTTP port = 8888
store path count = 1
subdir count per path = 256
current write server index = 0
current trunk file id = 0Storage 1:id = 192.168.128.131ip_addr = 192.168.128.131 (localhost.localdomain)  ACTIVEhttp domain =version = 5.11join time = 2017-06-13 22:19:42up time = 2017-06-16 21:19:47total storage = 8178 MBfree storage = 6463 MBupload priority = 10store_path_count = 1subdir_count_per_path = 256storage_port = 23000storage_http_port = 8888current_write_path = 0source storage id =if_trunk_server = 0connection.alloc_count = 256connection.current_count = 0connection.max_count = 1total_upload_count = 6success_upload_count = 6total_append_count = 0success_append_count = 0total_modify_count = 0success_modify_count = 0total_truncate_count = 0success_truncate_count = 0total_set_meta_count = 5success_set_meta_count = 5total_delete_count = 0success_delete_count = 0total_download_count = 0success_download_count = 0total_get_meta_count = 0success_get_meta_count = 0total_create_link_count = 0success_create_link_count = 0total_delete_link_count = 0success_delete_link_count = 0total_upload_bytes = 590790success_upload_bytes = 590790total_append_bytes = 0success_append_bytes = 0total_modify_bytes = 0success_modify_bytes = 0stotal_download_bytes = 0success_download_bytes = 0total_sync_in_bytes = 0success_sync_in_bytes = 0total_sync_out_bytes = 0success_sync_out_bytes = 0total_file_open_count = 6success_file_open_count = 6total_file_read_count = 0success_file_read_count = 0total_file_write_count = 6success_file_write_count = 6last_heart_beat_time = 2017-06-17 14:15:27last_source_update = 2017-06-16 23:34:20last_sync_update = 1970-01-01 08:00:00last_synced_timestamp = 1970-01-01 08:00:00

配置客户端

同样的,需要修改客户端的配置文件:

vim /etc/fdfs/client.conf

base_path=/usr/yong.cao/dev/fastdfs/fastdfs_tracker #tracker服务器文件路径
tracker_server=192.168.128.131:22122 #tracker服务器IP地址和端口号
http.tracker_server_port=6666 # tracker 服务器的 http端口号,必须和tracker的设置对应起来

通过ftp上传图片到 CentOS:

模拟上传

确定图片位置后,我们输入上传图片命令:
成功后会返回图片的路径:

[root@localhost ~]# /usr/bin/fdfs_upload_file  /etc/fdfs/client.conf  /usr/yong.cao/ftp/593d8f1eN5b3b8133.jpg
group1/M00/00/00/wKiAg1lE9WqAWu_ZAAFaL_xdW_s943.jpg

组名:group1
磁盘:M00
目录:00/00
文件名称:wKiAg1lE9WqAWu_ZAAFaL_xdW_s943.jpg

我们上传的图片会被上传到我们创建的storage_data目录下,让我们去看看:

[root@localhost fastdfs_storage_data]# cd /usr/yong.cao/dev/fastdfs/fastdfs_storage_data/data
[root@localhost data]# ls
00  0D  1A  27  34  41  4E  5B  68  75  82  8F  9C  A9  B6  C3  D0  DD  EA  F7
01  0E  1B  28  35  42  4F  5C  69  76  83  90  9D  AA  B7  C4  D1  DE  EB  F8
02  0F  1C  29  36  43  50  5D  6A  77  84  91  9E  AB  B8  C5  D2  DF  EC  F9
03  10  1D  2A  37  44  51  5E  6B  78  85  92  9F  AC  B9  C6  D3  E0  ED  FA
04  11  1E  2B  38  45  52  5F  6C  79  86  93  A0  AD  BA  C7  D4  E1  EE  FB
05  12  1F  2C  39  46  53  60  6D  7A  87  94  A1  AE  BB  C8  D5  E2  EF  FC
06  13  20  2D  3A  47  54  61  6E  7B  88  95  A2  AF  BC  C9  D6  E3  F0  FD
07  14  21  2E  3B  48  55  62  6F  7C  89  96  A3  B0  BD  CA  D7  E4  F1  FE
08  15  22  2F  3C  49  56  63  70  7D  8A  97  A4  B1  BE  CB  D8  E5  F2  FF
09  16  23  30  3D  4A  57  64  71  7E  8B  98  A5  B2  BF  CC  D9  E6  F3  M00
0A  17  24  31  3E  4B  58  65  72  7F  8C  99  A6  B3  C0  CD  DA  E7  F4
0B  18  25  32  3F  4C  59  66  73  80  8D  9A  A7  B4  C1  CE  DB  E8  F5
0C  19  26  33  40  4D  5A  67  74  81  8E  9B  A8  B5  C2  CF  DC  E9  F6[root@localhost data]# cd 00
[root@localhost 00]# ls
00  0D  1A  27  34  41  4E  5B  68  75  82  8F  9C  A9  B6  C3  D0  DD  EA  F7
01  0E  1B  28  35  42  4F  5C  69  76  83  90  9D  AA  B7  C4  D1  DE  EB  F8
02  0F  1C  29  36  43  50  5D  6A  77  84  91  9E  AB  B8  C5  D2  DF  EC  F9
03  10  1D  2A  37  44  51  5E  6B  78  85  92  9F  AC  B9  C6  D3  E0  ED  FA
04  11  1E  2B  38  45  52  5F  6C  79  86  93  A0  AD  BA  C7  D4  E1  EE  FB
05  12  1F  2C  39  46  53  60  6D  7A  87  94  A1  AE  BB  C8  D5  E2  EF  FC
06  13  20  2D  3A  47  54  61  6E  7B  88  95  A2  AF  BC  C9  D6  E3  F0  FD
07  14  21  2E  3B  48  55  62  6F  7C  89  96  A3  B0  BD  CA  D7  E4  F1  FE
08  15  22  2F  3C  49  56  63  70  7D  8A  97  A4  B1  BE  CB  D8  E5  F2  FF
09  16  23  30  3D  4A  57  64  71  7E  8B  98  A5  B2  BF  CC  D9  E6  F3
0A  17  24  31  3E  4B  58  65  72  7F  8C  99  A6  B3  C0  CD  DA  E7  F4
0B  18  25  32  3F  4C  59  66  73  80  8D  9A  A7  B4  C1  CE  DB  E8  F5
0C  19  26  33  40  4D  5A  67  74  81  8E  9B  A8  B5  C2  CF  DC  E9  F6
[root@localhost 00]# cd 00
[root@localhost 00]# ls
wKiAg1lE9WqAWu_ZAAFaL_xdW_s943.jpg

果然通过刚刚返回的路径,我们成功找到了图片。

我们仔细看一下,实际文件存储路径下有创建好的多级目录。data 下有 256 个 一级目录,每级目录下又有 256个 二级目录,总共 65536 个文件,新写的文件会以hash 的方式被路由到其中某个子目录下,然后将文件数据直接作为一个本地文件存储到该目录中。

HTTP 访问文件

我们用浏览器请求访问一下刚刚的图片:

我们发现,http 不能直接访问到图片。这是为什么呢?

我去官网看了一下源码,在HISTORY 中发现,原来早在 4.05 的时候,就remove embed HTTP support

Version 4.05  2012-12-30* client/fdfs_upload_file.c can specify storage ip port and store path index* add connection pool* client load storage ids config* common/ini_file_reader.c does NOT call chdir* keep the mtime of file same* use g_current_time instead of call time function* remove embed HTTP support

HTTP请求不能访问文件的原因

我们在使用 FastDFS 部署一个分布式文件系统的时候,通过 FastDFS 的客户端API来进行文件的上传、下载、删除等操作。同时通过 FastDFS 的HTTP 服务器来提供 HTTP 服务。但是 FastDFS 的 HTTP 服务较为简单,无法提供负载均衡等高性能的服务,所以FastDFS 的开发者,为我们提供了 Nginx 上使用 的 FastDFS 模块(也可以叫做 FastDFS 的Nginx 模块)。

FastDFS通过Tracker服务器,将文件放在Storage服务器存储,但是同组之间的服务器需要复制文件,有延迟的问题.假设Tracker服务器将文件上传到了192.168.128.131,文件ID已经返回客户端,这时,后台会将这个文件复制到192.168.128.131,如果复制没有完成,客户端就用这个ID在192.168.128.131取文件,肯定会出现错误。这个fastdfs-nginx-module可以重定向连接到源服务器取文件,避免客户端由于复制延迟的问题,出现错误。
正是这样,FastDFS需要结合nginx,所以取消原来对HTTP的直接支持

安装 nginx 准备

安装需要的工具,之前就已经放到 FTP:

[root@localhost dev]# cd /usr/yong.cao/ftp/
[root@localhost ftp]# ls
593d8f1eN5b3b8133.jpg            libfastcommon-master
fastdfs-5.11                     libfastcommon-master.zip
fastdfs-5.11.zip                 nginx-1.12.0.tar.gz
fastdfs-client-java-master.zip   record.txt
fastdfs-nginx-module-master.zip  zookeeper-3.4.6.tar.gz

在安装之前要安装 nginx 所需的依赖 lib:

yum -y install pcre pcre-devel
yum -y install zlib zlib-devel
yum -y install openssl openssl-devel

安装nginx并添加fastdfs-nginx-module

解压 nginx 和 fastdfs-nginx-module

tar -zxvf nginx-1.12.0.tar.gz
unzip fastdfs-nginx-module-master.zip

解压进入 nginx 目录编译安装 nginx , 并添加 fasfdfs-nginx-module:

./configure --prefix=/usr/local/nginx --add-module=/usr/yong.cao/dev/nginx/fastdfs-nginx-module-master/src    #解压后fastdfs-nginx-module所在的位置

如果不报错的话,就开始编译:

make
make install

如果报错的话,很可能是版本的原因

nginx的默认目录是/usr/local/nginx,安装成功后查看:

[root@localhost nginx-1.12.0]# cd /usr/local/nginx
[root@localhost nginx]# ll
total 0
drwx------ 2 nobody root   6 Jun 14 01:58 client_body_temp
drwxr-xr-x 2 root   root 333 Jun 16 21:42 conf
drwx------ 2 nobody root   6 Jun 14 01:58 fastcgi_temp
drwxr-xr-x 2 root   root  40 Jun 14 01:31 html
drwxr-xr-x 2 root   root  58 Jun 15 22:21 logs
drwx------ 2 nobody root   6 Jun 14 01:58 proxy_temp
drwxr-xr-x 2 root   root  19 Jun 14 01:31 sbin
drwx------ 2 nobody root   6 Jun 14 01:58 scgi_temp
drwx------ 2 nobody root   6 Jun 14 01:58 uwsgi_temp

配置 storage nginx

修改 nginx.conf

[root@localhost nginx]# cd conf/
[root@localhost conf]# ls
fastcgi.conf            koi-win             scgi_params
fastcgi.conf.default    mime.types          scgi_params.default
fastcgi_params          mime.types.default  uwsgi_params
fastcgi_params.default  nginx.conf          uwsgi_params.default
koi-utf                 nginx.conf.default  win-utf
[root@localhost conf]# vim nginx.conf

修改监听端口 listen 9999,新增 location

server {listen       9999;server_name  localhost;location / {root   html;index  index.html index.htm;}location ~/group1/M00 {root /usr/yong.cao/dev/fastdfs/fastdfs_storage_data/data;ngx_fastdfs_module;}location = /50x.html {root   html;}
}

然后进入 FastDFS 安装时的解压过的目录,将 http.conf 和 mime.types 拷贝到/etc/fdfs 目录下:

[root@localhost fastdfs-5.11]# cd /usr/yong.cao/ftp/fastdfs-5.11/conf/
[root@localhost conf]# ls
anti-steal.jpg  http.conf   storage.conf      tracker.conf
client.conf     mime.types  storage_ids.conf
cp http.conf /etc/fdfs/
cp mime.types /etc/fdfs/

另外还需要把fastdfs-nginx-module安装目录中src目录下的mod_fastdfs.conf也拷贝到/etc/fdfs目录下:

cp /usr/yong.cao/dev/nginx/fastdfs-nginx-module-master/src/mod_fastdfs.conf /etc/fdfs/

对刚刚拷贝的 mod_fastdfs.conf文件进行修改:

vim /etc/fdfs/mod_fastdfs.confbase_path=/usr/yong.cao/dev/fastdfs/fastdfs_storage  #保存日志目录tracker_server=192.168.128.131:22122 #tracker服务器的IP地址以及端口号storage_server_port=23000 #storage服务器的端口号url_have_group_name = true #文件 url 中是否有 group 名store_path0=/usr/yong.cao/dev/fastdfs/fastdfs_storage_data   #存储路径group_count = 3 #设置组的个数,事实上这次只使用了group1

在文件的最后,设置 group

[group1]
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/home/yuqing/fastdfs
store_path1=/usr/yong.cao/dev/fastdfs/fastdfs_storage_data# group settings for group #2
# since v1.14
# when support multi-group, uncomment following section as neccessary
[group2]
group_name=group2
storage_server_port=23000
store_path_count=1
store_path0=/usr/yong.cao/dev/fastdfs/fastdfs_storage_data[group3]
group_name=group3
storage_server_port=23000
store_path_count=1
store_path0=/usr/yong.cao/dev/fastdfs/fastdfs_storage_data

创建 M00 至 storage 存储目录的符号链接:

ln  -s  /usr/yong.cao/dev/fastdfs/fastdfs_storage_data/data/ /usr/yong.cao/dev/fastdfs/fastdfs_storage_data/data/M00

启动 nginx:

/usr/local/nginx/sbin/nginx

成功启动:

[root@localhost conf]# /usr/local/nginx/sbin/nginx
ngx_http_fastdfs_set pid=8142


恭喜你,storage 的nginx 已配置成功。接下来,我们好哟啊继续配置 tracker 的nginx。

配置 tracker nginx

在解压一个nginx:

在我自己的工作下载建了一个 nginx2,把原来的nginx-1.12.0.tar.gz 又解压了一份里面

fastdfs  nginx  nginx2  zookeeper
[root@localhost dev]# cd /usr/yong.cao/dev
[root@localhost dev]# ls
fastdfs  nginx  nginx2  zookeeper

配置

[root@localhost ftp]# cd /usr/yong.cao/dev/nginx2/nginx-1.12.0/
[root@localhost nginx-1.12.0]# ls
auto     CHANGES.ru  configure  html     Makefile  objs    src
CHANGES  conf        contrib    LICENSE  man       README
./configure --prefix=/usr/local/nginx2 --add-module=/usr/yong.cao/dev/nginx/fastdfs-nginx-module-master/src    #解压后fastdfs-nginx-module所在的位置

编译:

make
make install

接下来,一样的还是修改 nginx.conf,端口号可以不改,用80 端口。需将 upstream 指向 tracker 的nginx 地址。

vim /usr/local/nginx2/conf/nginx.confupstream fdfs_group1 {server 127.0.0.1:9999;}server {listen       80;server_name  localhost;#charset koi8-r;#access_log  logs/host.access.log  main;location /group1/M00 {proxy_pass http://fdfs_group1;}#location / {#    root   html;#    index  index.html index.htm;#}#error_page  404              /404.html;# redirect server error pages to the static page /50x.html#error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}}

启动 nginx :

/usr/local/nginx/sbin/nginx2

防火墙端口设置

查看已开启的端口:

[root@localhost nginx-1.12.0]# firewall-cmd --zone=public --list-ports
20880/tcp 80/tcp 2181/tcp 23000/tcp 22122/tcp 9999/tcp
[root@localhost nginx-1.12.0]#

在我的 CentOS 上这些端口都是开放的。

storage:20880
tracker:23000

这两个端口要开启,到时候下面讲到 fastdfs-client-javas 可能会造成无法连接。

9999 和 80 端口是提供给 nginx 访问的。

开放端口号命令:–permanent表示永久生效,不加的话,重启后不生效

firewall-cmd --zone=public --add-port=23000/tcp --permanent #开户端口号

CentOS7 防火墙相关命令:

systemctl enable firewalld.service    #开启防火墙
systemctl stop firewalld.service     #关闭防火墙(开机会仍会启动)
systemctl disable firewalld.service  #禁用防火墙(开机后不再启动)

java客户端

https://github.com/happyfish100/fastdfs-client-java

(转载)CentOS7搭建FastDFS V5.11分布式文件系统及Java整合详细过程相关推荐

  1. CentOS7搭建FastDFS V5.11分布式文件系统

    1.绪论 最近要用到fastDFS,所以自己研究了一下,在搭建FastDFS的过程中遇到过很多的问题,为了能帮忙到以后搭建FastDFS的同学,少走弯路,与大家分享一下.FastDFS的作者淘宝资深架 ...

  2. centos7安装或升级Google chrome、安装Firefox浏览器详细过程及设置桌面快捷方式

    目录 背景: 一.centos7安装谷歌浏览器 1.Google chrome安装包下载 2.命令行安装 3.下载并安装字体所需依赖包 3.1.安装libvulkan.so.1()(64bit) 3. ...

  3. centos7安装或升级Firefox、安装Google chrome浏览器详细过程及设置桌面快捷方式

    目录 一.centos7火狐浏览器安装 1. 从 Firefox官网的"更多系统和语言下载"最新版本.​​​​ 2.进入存放下载文件(Firefox-latest-x86_64.t ...

  4. centos7 搭建FastDFS服务器

    简述:FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储.文件同步.文件访问(文件上传.文件下载)等,解决了大容量存储和负载均衡的问题.特别适合以文件为载体的在线服务 ...

  5. FastDFS图片服务器(分布式文件系统)学习。

    参考:https://blog.csdn.net/hiqingtian/article/details/79413471 https://blog.csdn.net/sinat_40399893/ar ...

  6. Centos7 搭建FastDFS文件管理系统及简单的迁移方法

    1.简介 FastDFS 是一个开源的高性能分布式文件系统(DFS). 它的主要功能包括:文件存储,文件同步和文件访问,以及高容量和负载平衡.主要解决了海量数据存储问题,特别适合以中小文件(建议范围: ...

  7. FastDFS - 快速的分布式文件系统

    FastDFS 什么是FastDFS fast distributed file system(快速的分布式文件系统) FastDFS是用c语言编写的一款开源的分布式文件系统.它对文件进行管理,功能包 ...

  8. HBase 1.2.6 完全分布式集群安装部署详细过程

    2019独角兽企业重金招聘Python工程师标准>>> Apache HBase 是一个高可靠性.高性能.面向列.可伸缩的分布式存储系统,是NoSQL数据库,基于Google Big ...

  9. 分布式文件系统—HDFS—Java API操作

    原文作者:jiangw-Tony 原文地址:HDFS基础使用 hdfs 在生产应用中主要是客户端的开发,其核心步骤是从 hdfs 提供的 api 中构造一个 HDFS的访问客户端对象,然后通过该客户端 ...

最新文章

  1. Windows中的tree命令不可用的解决办法
  2. 23,148,855,308,184,500是一个神奇的数字,还是纯粹的机会?
  3. 湖南大学超级计算机中心 舒教授,湖南大学岳麓书院哲学系舒远招教授应邀来我院讲学...
  4. mysql5.2 软件园_MySQL Server V5.5 官方安装版
  5. 在php中type有几种属性,HTML表单之input元素的23种type类型
  6. pks系统如何添加服务器,pks服务器的上电步骤.pdf
  7. 利用哈夫曼树编码与译码
  8. mysql事件的使用-开启与关闭事件
  9. Bandit UCB推导
  10. tensorflow之数据加载
  11. webpack环境的配置
  12. centos7.2 部署k8s集群
  13. 虚拟ip(VIP)实现原理
  14. 各省互联网普及率数据集(1997-2018年)
  15. 行业分析报告|全球与中国项目货物物流市场现状及未来发展趋势
  16. html 布局 拖拽 在线,可视化编辑 - 拖拽式编辑网页模板无需代码,自由拖拽布局,即可完成网站设计制作!...
  17. Pyton 中eval 函数的用法总结
  18. 知识图谱论文阅读(八)【转】推荐系统遇上深度学习(二十六)--知识图谱与推荐系统结合之DKN模型原理及实现
  19. Annoy算法简单介绍
  20. DataGridView.BorderStyle 属性

热门文章

  1. 3分钟了解 WebAssembly
  2. 徐志摩最美的6句话,刻骨铭心!
  3. 12.88万元的小魔驼2.0,毫末智行托起末端物流自动配送的商用梦想
  4. 20135313_exp4
  5. 第三章,课外作业(C++,数字高精度之加法)
  6. 如何实施 SCRUM ?
  7. C# winfrom DEV左侧菜单栏DIY
  8. linux下编译zbar64位,linux 编译zbar
  9. springboot 目录结构
  10. Python爬虫详解:爬虫是什么,如何做爬虫?