9a03499eb944826dcc40df0e17c0ebae.png

简介

FastDFS是什么?我们这里可以看一下度娘的解释。FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。我这里使用服务器环境是centos7

注意:FastDFS只能上传500MB的小文件

FastDFS角色简介

tracker:跟踪者,负责调度存储服务。

storage:用于文件存储。

client:调用tracker

集群示例图

56ca13ceffb202f01b01a62b04e4bcc4.png

15b8d2dc90b62d1863e7568b693956ba.png

FastDFS单节点安装

第一步 安装相关工具

如果已经安装vim与wget可以跳过这一步

yum -y install  vim wget unzip

-y :不经过询问直接同意所有操作

vim : linux上面一个好的文本编辑软件

wget : linux上传一个文件下载工具

第二步 安装相关依赖

yum install -y gcc-c++ perl

第三步 安装libfastcommon

大家可以直接到github上面找的到ibfastcommon。这里为了大家方便查找。我已经把把链接给大家整理好了。

happyfish100/libfastcommon​github.com
1fcf345ad8c8d76013f78b8de47f195e.png

这里大家可以先下载到本地,然后再传至服务器上面。这里我使用的是xftp。具体操不在这里就不相信说了。

下载下来的是zip格式压缩包,然后,我们解压zip

unzip libfastcommon-master.zip

进入到刚刚解压的文件里面

cd libfastcommon-master/

进行编译安装

./make.sh && ./make.sh install

e45ffd5152eab7e1e74eecf76e1d85f1.png

如上就是安装成功

第四步 安装FastDFS

同样这里我用的也是github上面的FastDFS。为此,我已经帮大家把相关的链接整理到下方了

happyfish100/fastdfs​github.com
1fcf345ad8c8d76013f78b8de47f195e.png

这里可以使用像上面ibfastcommon一样的方式,先下载到自己的电脑上面,再上传至服务器。

下面我们先进行解压

unzip fastdfs-master.zip

编译安装

./make.sh && ./make.sh install

4707edee324e4bf71535de512bb27597.png

安装成功如上图

第五步 修改配置文件

切换到配置文件目录下

cd /etc/fdfs/

查看所有配置文件

使用ls命令就行了

7ae7e8bf0f05846f980444b38a7f250f.png

去除所有的.sample后缀

mv client.conf.sample client.conf
mv storage.conf.sample storage.conf
mv storage_ids.conf.sample storage_ids.conf
mv tracker.conf.sample tracker.conf

我们再次使用ls命令查看

b205b7858ef6bf5d7a11ded1c8ee45a8.png

可以看到我们已经去除了所有的.sample后缀

下一步,创建文件夹,分别创建client,storage,tracker文件夹

mkdir -p /home/software/fastfdfs/fdfa/client
mkdir -p /home/software/fastfdfs/fdfa/storage
mkdir -p /home/software/fastfdfs/fdfa/tracker

下面我们开始配置文件修改,首先修改的是clietn.conf,使用vim编辑器进行文件的编辑

vim client.conf

使用 :set number 显示行数

修改第十行,确定日志文件文件日志,这里用我们刚刚创建client文件夹路径

base_path=base_path=/home/software/fastfdfs/fdfa/client

修改第14 行,tracker的地址与端口,这里我使用的是虚拟机,而且我的tracker等会和我的storage在同一台服务器启动,我的是192.168.223.19。大家这里根据实际情况修改

tracker_server=192.168.223.19:22122

这里大家大家记得保存修改

下面我们修改storage.conf。同上是用vim进行修改

修改第41行 storage基础路径,上面我们已经创建了这个目录

base_path=/home/software/fastfdfs/fdfa/storage

修改第110行,storage路径。storage.conf已经说了如果这个路径不存在,会依照base_path.为了不出意外,我们配置一下这个路径

 store_path0=/home/software/fastfdfs/fdfa/storage

修改第119行 ,配置tracker的IP地址与端口。至于如何填写这个地址,上面配置client.conf的时候,我们就已经说过了。

tracker_server=192.168.223.19:22122

现在修改tracker.conf文件

修改第22行,修改tracker的基础路径。这个路径的文件夹我们刚刚在上面已经创建过了

base_path=/home/software/fastfdfs/fdfa/tracker

修改第54行 归属组设置

store_group=group1

第六步 启动tracker与storage

启动tracker

fdfs_trackerd /etc/fdfs/tracker.conf start

启动storage

fdfs_storaged /etc/fdfs/storage.conf start

测试是否启动成功,我们尝试上传文件。我的root文件夹下有一张图片

fdfs_test /etc/fdfs/client.conf upload /root/9d545aa4d2f1ffbecf5567ae71f4e4fb.jpg

397998b4e90eefdfd474b96745a77ebf.png

上传成功如图所示

第七步 安装nginx访问图片

之前我写过一篇nginx安装与配置的文章。大家有兴趣的可以去阅读以下。这里我们安装的时候可能有所不同,为了大家可以结合fastdfs使用。我这里单独再说一下nginx的安装。

首先安装依赖

yum -y install gcc-c++ zlib-devel pcre-devel

下载nginx安装包

wget http://nginx.org/download/nginx-1.14.0.tar.gz

解压安装包

tar zxvf nginx-1.14.0.tar.gz

下载nginx的fastdfs模块,这里我已经帮大家把这个项目github地址整理好了。

happyfish100/fastdfs-nginx-module​github.com
1fcf345ad8c8d76013f78b8de47f195e.png

这里我们可以先下载到自己电脑上,再上传服务器。

进行解压

unzip fastdfs-nginx-module-master.zip

创建nginx安装目录

mkdir -p /home/software/nginx

切换到nginx压缩包的解压目录里面去

cd nginx-1.14.0

进行配置检测并且添加模块

./configure --prefix=/home/software/nginx --add-module=/home/software/fastdfs-nginx-module-master/src

--prefix : 我们刚刚创建的nginx的安装目录

--add-module:解压后模块所在目录,记得要加上src

1048dc72a1212bd17c7d62a79bfec788.png

成功

编译并安装

make && make install

复制配置文件至/etc/fdfs里面去

切换至fastdfs的解压包里面去

cd /home/software/fastfdfs/fastdfs-master

进行文件的复制

cp conf/http.conf /etc/fdfs/
cp conf/mime.types /etc/fdfs/

切换至fastdfs-nginx-module的解压目录下面

cd /home/software/fastdfs-nginx-module-master

进行配置文件的复制

cp src/mod_fastdfs.conf /etc/fdfs/

修改/etc/fdfs下面的mod_fastdfs.conf配置文件

vim /etc/fdfs/mod_fastdfs.conf

修改 40行,更改tracker的ip地址与端口

tracker_server=192.168.223.19:22122

修改53行 url地址中是否包含组名

url_have_group_name = true

修改62行 storage所在目录

store_path0=/home/software/fastfdfs/fdfa/storage

保存修改

进行nginx配置文件的修改,首先切换到nginx的安装目录下面

cd /home/software/nginx

进行nginx.conf的修改,找到44行,注释掉44 45行,下面添加一行

ngx_fastdfs_module;

ab56ec24656a0f5bf0d280fbefc44aec.png

启动nginx,切换到nginx安装目录下的sbin目录下面去,先进行配置文件的检验。如果配置检验没问题。再启动nginx

切换到sbin目录

cd /home/software/nginx/sbin/

配置文件检测

./nginx -t -c /home/software/nginx/conf/nginx.conf

8d14ce1e2a887a96a6d57c539f3215d4.png

显示 is ok没有任何问题,现在启动nginx

./nginx

依照上面的方式,我们上传一张图片。并进行访问

测试是否启动成功,我们尝试上传文件。我的root文件夹下有一张图片

fdfs_test /etc/fdfs/client.conf upload /root/9d545aa4d2f1ffbecf5567ae71f4e4fb.jpg

7b4faf078e025e9584c13a89024abf76.png

上传成功,访问下面的地址。我这里关闭了防火墙。如果我们的服务器有防火墙,记得打开80端口

26c96b08dfe68d961e30cf0403da4141.png

我们访问地址,图片已经出来,说明我们可以正常访问。

FastDFS多节点安装

第一步 规定storage与tracker服务器

这里我用的是虚拟机,我这里在四台虚拟机上面都安装了单节点的fastdfs。我的四台虚拟机的ip如下。

  • 192.168.223.15
  • 192.168.223.16
  • 192.168.223.17
  • 192.168.223.18

192.168.223.15 所属组:group1 角色:storage,tracker1

192.168.223.16 所属组:group1 角色:storage

192.168.223.17 所属组:group2 角色:storage,tracker2

192.168.223.18 所属组:group2 角色:storage

第二步 修改配置文件

由于FastDFS单节点使用的组都是group1.所以192.168.223.15这台机器上的配置不需要做任意修改。所以我们需要修改的地方其实是其他三台服务器。下面我会逐个说明如何改。

首先我们需要改的是192.168.223.16。由上面的分配我们可以知道。他们都是group1,所以我们只需要把tracker的ip指向192.168.223.15 详细的修改如下。首先我们需要进入到192.168.223.16的/etc/fdfs的目录下面。这一步我们做了很多遍。这里就不演示了。接下来进行文件的修改

修改client.conf 第14行

tracker_server=192.168.223.15:22122

修改 storage.conf 第119行

tracker_server=192.168.223.15:22122

修改 mod_fastdfs.conf 第40行

tracker_server=192.168.223.15:22122

接下修改的 192.168.223.17这个服务器。由上面的分配来看,它的归属组是group2。它的tracker是192.168.223.17。现在我们开始修改

修改client.conf 第14行

tracker_server=192.168.223.17:22122

修改 storage.conf 第11行

group_name=group2

修改第 119行

tracker_server=192.168.223.17:22122

修改 mod_fastdfs.conf 第40行

tracker_server=192.168.223.17:22122

修改第 47行

group_name=group2

ip为192.168.223.18 像 192.168.223.17一样修改。这样我们就完成了所有配置文件的修改

第三步 关闭,重启服务

首先我们关闭所有服务器的storage服务,tracker服务。首先查找进程然后关闭

ps -ef | grep fdfs

7ef35c36fd5df29b0d2b570ffce34f96.png

root后面的字段就是pid。由上面可以知道。我们的两个pid是53946,53967,现在我们把这两个进程kill掉

kill -9 53946
kill -9 53967

其他三台服务器也是这样做。

现在按照单节的方式启动。记住不是所有的服务器都要启动。storage与tracker。

192.168.223.15 启动storage与tracker

192.168.223.16 启动storage

192.168.223.17 启动storage与tracker

192.168.223.18 启动storage

重启nginx服务,启动方式,先进入到nginx安装目录下的sbin目录,执行重启命令

./nginx -s reload

第四步 测试

我们在192.168.223.16 上传一张图片,然后用192.168.223.15的ip访问。因为同一个组的storage会进行文件同步

8c533af0fc0d58ea1eb23e9b8a465851.png

这里可以看到上传后得到的url是192.168.223.15服务器上面的。我们用ip 192.168.223.16 与 192.168.223.15 都访问一遍

ae88ca2e042ca95af204c27d47767a9c.png

c68f2b46215d0b9ae6957c1d9fdb9a93.png

可见都是可以访问的到的。到此我们就成功的进行了FastDFS的搭建,大家如果在实际操作中遇到了什么问题,可在评论区里留言

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐