文件存储服务器启动不了,一步步带你用 FastDFS 搭建文件管理系统 详细的不得鸟...

文章目录

FastDFS概述

FastDFS 中的三个角色

FastDFS 三个角色的关系

FastDFS集群

FastDFS 架构说明

FastDFS 安装

安装 FastDFS 依赖包

安装 FastDFS

验证

配置跟踪服务器 tracker

配置存储服务器storage

启动tracker和storage

测试是否安装成功

安装 fastdfs-nginx-module

nginx 配置

启动 nginx

李培冠博客

FastDFS概述

开源地址:https://github.com/happyfish100

余庆大佬用 c语言 编写的一款开源的分布式文件系统。

为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,注重高可用、高性能等指标

冗余备份: 纵向扩容

线性扩容: 横向扩容, 增加容量

可以很容易搭建一套高性能的文件服务器集群提供文件==上传、下载==等服务。

应用场景:

文件上传 -> 存储

文件下载

冗余备份(通过文件内容生成key值,在上传同一个文件时,不会重复存储,这就省了很大的空间)

负载均衡:

浏览器访问服务器(192.168.110.11:8080),如果全校都访问这个网站的时候,就会很卡,怎么办? 多开几个端口(一个端口的负载能力有限),再访问的时候,指向不忙的端口(8081、8082)和集群有点像,

负载就是请求的数量;均衡就是给你平均的分配,结合就是负载均衡。

线性扩容:直接加配置文件,就可以多一个服务器的存在,早期如果想加服务器,就需要重复写相关代码,扩容非常方便。

FastDFS 中的三个角色

追踪器 ( tracker ) -> 守护进程

管理者

第一个启动

存储节点 ( storage ) -> 守护进程

可以理解为网络环境中可以存储文件的主机

存储文件

第二个启动

客户端 - client

程序猿写的

发起上传请求, 完成上传操作

发起下载请求, 将服务器文件下载到本地

最后启动, 是一个普通的应用程序

FastDFS 三个角色的关系

1ac1afcb1db105bb721f5930799d3acf.png

先启动追踪器

启动存储节点

主动连接追踪器, 汇报当前存储节点的状态信息

后边定时汇报状态

客户端程序启动, 连接追踪器, 发给上传请求

客户端询问追踪, 看那个存储节点有足够的容量

追踪查询存储节点信息

将查到的节点信息发送给客户端

客户端通过得到的存储节点地址, 连接存储节点

将文件上传到存储节点上, 存储节点得到一个file_id, 并将其发送给客户端

客户端需要存储这个fileID, 下载的时候要用

1ed1f6d30a9c0604a87a9bc078e08917.png

先启动追踪器

启动存储节点

主动连接追踪器, 汇报当前存储节点的状态信息

后边定时汇报状态

客户端程序启动, 连接追踪器, 发送下载请求

客户端询问追踪, 看那个存储节点上有要下载的文件

追踪查询存储节点信息

将查到的节点地址发送给客户端

客户端通过得到的存储节点地址, 连接存储节点

将存储节点发送给客户端的文件, 保存到本地

FastDFS集群

98625ee21a4c0cc98a76987bc2b83c6c.png

tracker集群

为了避免单点故障

工作方式: 轮询

集群方式: 修改配置文件

存储节点的集群

存储节点的管理:

是以组的方式来管理的

横向扩容 -> 添加新的分组, fastDFS容量增加了

不同组的主机之间不通信

各组的容量相加就是整体容量

纵向扩容 -> 在现有的组中添加新的主机, 和同组主机之间互为备份关系

同组主机中存储的内容相同

同组主机之间是通信的

当前组的容量按照最小的主机来算

FastDFS 架构说明

举个例子:

小老板(客户端)想要存他的货,存货肯定是要把货存到仓库里面,但是不能让小老板自己去找仓库,因为那么多仓库,小老板不知道哪个可以用以及哪个有空闲可以存我的货。

所以,自己去找就很费时费力。况且,仓库是面向很多个小老板,这么多小老板如果每次都是自己去找仓库,就会很费时间。所以,安排一个仓库管理员,这个是干什么的呢? 小老板想存东西,找这个管理员,让管理员告诉小老板,哪个仓库可以用,然后小老板就去指定仓库存东西去了。

这个仓库管理员没事就去巡逻,挨个仓库走一遍看哪个仓库有空闲可以用,工作:定时的遍历去查询仓库,看这个仓库能用不能用(收集仓库的状态)。仓库才是真正存数据的地方。

小老板存完数据之后,仓库就会给他一个凭证,告诉他你的东西存在了哪个仓库,以后可以直接过来取。

线性扩容就是加仓库。

凭证:组名 虚拟磁盘路径(设置才有,不设置没有) 数据两级目录(文件路径) 文件名(通过加密防止文件名重复)

FastDFS 安装

安装 FastDFS 依赖包

1)下载 libfastcommon.zip

下载地址:https://github.com/happyfish100/libfastcommon/releases

2)解压缩 libfastcommon.zip

3)进入到 libfastcommon 的目录中

4)执行 ./make.sh

5)执行 sudo ./make.sh install

安装 FastDFS

1)下载 fastdfs.zip

下载地址:https://github.com/happyfish100/fastdfs/releases

2)解压缩 fastdfs.zip

3)进入到 fastdfs 的目录中

4)执行 ./make.sh

5)执行 sudo ./make.sh install

验证

ls -al /usr/bin/fdfs*

9a1d5d0b808505949d9d970f766436b6.png

配置跟踪服务器 tracker

1)拷贝文件

sudo cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf

2)在 /home/conan/ 目录中创建目录 fastdfs/tracker

mkdir –p /home/conan/fastdfs/tracker

3)编辑 /etc/fdfs/tracker.conf 配置文件

sudo vim /etc/fdfs/tracker.conf

修改内容:

base_path=/home/conan/fastdfs/tracker

配置存储服务器storage

1)拷贝文件

sudo cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf

2)在 /home/conan/fastdfs/ 目录中创建目录 storage

mkdir –p /home/conan/fastdfs/storage

3)编辑 /etc/fdfs/storage.conf 配置文件

sudo vim /etc/fdfs/storage.conf

修改内容:

base_path=/home/conan/fastdfs/storage

store_path0=/home/conan/fastdfs/storage

tracker_server=自己ubuntu虚拟机的ip地址:22122

启动tracker和storage

执行以下两条指令

sudo fdfs_trackerd /etc/fdfs/tracker.conf

sudo fdfs_storaged /etc/fdfs/storage.conf

测试是否安装成功

1)

sudo cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf

2)编辑 /etc/fdfs/client.conf 配置文件

sudo vim /etc/fdfs/client.conf

修改内容:

base_path=/home/conan/fastdfs/tracker

tracker_server=自己ubuntu虚拟机的ip地址:22122

3)上传文件测试

sudo fdfs_upload_file /etc/fdfs/client.conf 要上传的图片文件路径

例如:

sudo fdfs_upload_file /etc/fdfs/client.conf /home/conan/1.jpg

如果返回类似 group1/M00/00/00/rBIK6VcaP0aARXXvAAHrUgHEviQ394.jpg 的文件 id 则说明文件上传成功。

安装 fastdfs-nginx-module

1)下载 nginx.tar.gz:http://nginx.org/en/download.html

2)解压缩 nginx.tar.gz

3)下载 fastdfs-nginx-module.zip:https://github.com/happyfish100/fastdfs-nginx-module/releases

4)解压缩 fastdfs-nginx-module.zip

5)下载库(更换阿里源)

首先你需要去更换阿里源,因为ubuntu自带的源没有这个库

怎么更换?我在 安装ubuntu系统 这一文章中有讲到,没有更换的可以去这里看一下:

更换完成之后,执行以下命令

sudo apt update

sudo apt install libpcre3 libpcre3-dev

如果没有下载这个的话,执行下面的命令会报错:

24f5901d8e728e1f2cc27f439b279db4.png

6)进入解压的 nginx 目录中

执行

sudo ./configure --prefix=/usr/local/nginx/ --add-module=fastdfs-nginx-module解压后的目录的绝对路径/src

我这里是:

sudo ./configure --prefix=/usr/local/nginx/ --add-module=/home/conan/fastdfs/fastdfs-nginx-module-1.22/src

这时如果还报以下错误:

./configure: error: the HTTP gzip module requires the zlib library.

You can either disable the module by using --without-http_gzip_module

option, or install the zlib library into the system, or build the zlib library

statically from the source with nginx by using --with-zlib= option.

解决方案

1)找一个临时目录,下载命令:wget http://www.zlib.net/zlib-1.2.11.tar.gz

2)解压:zlib-1.2.11.tar.gz

3)进入 zlib-1.2.11 文件夹

cd zlib-1.2.11

4)安装

./configure

make

make install

安装完成,回到 nginx 目录中,再次执行

sudo ./configure --prefix=/usr/local/nginx/ --add-module=/home/conan/fastdfs/fastdfs-nginx-module-1.22/src

安装完成:

5bff14fdaf499b98364ebe371d2aecab.png

如果安装过程中报以下错误:(错误原因是因为nginx编译的时候把警告当错误处理,事实上这个警告并不影响)

677ee54ee80ee2e2adf599edf1b70b76.png

解决方案

找到 nginx 目录下的 objs 目录下的 Makefile

sudo vim Makefile

删掉里面的 -Werror

f8c9bbdc34665c36ac78d0df0383a031.png

然后回到 nginx 目录中,再次执行:

sudo ./configure --prefix=/usr/local/nginx/ --add-module=/home/conan/fastdfs/fastdfs-nginx-module-1.22/src

执行完上述命令之后,

执行:

sudo make

然后执行:

sudo make install

5)拷贝

sudo cp fastdfs-nginx-module解压后的目录中src下mod_fastdfs.conf /etc/fdfs/mod_fastdfs.conf

6)修改内容

sudo vim /etc/fdfs/mod_fastdfs.conf

修改对应内容为:

connect_timeout=10

base_path=/home/conan/fastdfs/tracker

tracker_server=自己ubuntu虚拟机的ip地址:22122

url_have_group_name=true

store_path0=/home/conan/fastdfs/storage

7)拷贝文件

sudo cp 解压缩的fastdfs目录中的conf中的 http.conf /etc/fdfs/http.conf

也可以先进入到解压缩的 fastdfs 目录中的 conf 中

sudo cp http.conf /etc/fdfs/http.conf

8)拷贝文件

sudo cp 解压缩的fastdfs目录中的conf中的 mime.types /etc/fdfs/mime.types

也可以先进入到解压缩的 fastdfs 目录中的 conf 中

sudo cp mime.types /etc/fdfs/mime.types

nginx 配置

1)添加配置信息

sudo vim /usr/local/nginx/conf/nginx.conf

在 http 部分中添加配置信息如下:

server {

listen 8888; # nginx服务器端口

server_name localhost; # ip地址

location ~/group[0-9]/ { # 组名

ngx_fastdfs_module;

}

error_page 500 502 503 504 /50x.html; # 错误页面

location = /50x.html {

root html;

}

}

d7c7be977b6c174e6f281c90320a7087.png

启动 nginx

sudo /usr/local/nginx/sbin/nginx

6572394738a4d6581ba98b1b3e842d09.png

我们之前上传过文件得到的一个凭证,复制那个凭证

如果没有保存,重新上传一个即可(重启系统需要重新启动tracker和storage)

在浏览器中输入:

ip地址:8888/凭证

比如:

192.168.180.130:8888/group1/M00/00/00/wKi1gl7F7jmAJC73AAB66dOYt_o243.jpg

就可以看到图片啦

74748359301c93c3b8fbbdc782249383.png

李培冠博客

欢迎访问我的个人网站:

李培冠博客:lpgit.com

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值