FastDFS+Nginx 搭建文件服务器 【Easy Peasy】

阅读: 评论:0

FastDFS+Nginx 搭建文件服务器 【Easy Peasy】

FastDFS+Nginx 搭建文件服务器 【Easy Peasy】

写在前面

一个业务系统 总有这样那样的文件 需要保存把。有许多第三方的对象存储,什么阿里腾讯的OSS,COS,还有七牛云啥的。当然也是可以选择没错了,但是可能基于数据安全还有公司成本,或许我们搭建自己的文件服务器也是不错的。不过这样也会多出一些运维成本了。这个取舍就看自己了吧,仁者见仁智者见智。

话不多说,直接开始吧,如果有什么错误的地方,欢迎指正~ 我也还在不断的学习中,大家一起加油!

先来两张架构图:

Tracker 就相当于一个主节点,负责管理记录多个Storage节点的元信息。类似于Hadoop HDFS的namenode & datanode 的关系

CentOS软件准备:

软件版本链接说明
FastDFSfastdfs-5.包含Tracker, Storage 和Client 三个组件
FastCommonlibfastcommon-master.20170125.zipFastDFS 依赖的基础库,同一个作者写的
FastDFS的Nginx模块fastdfs-nginx-module-master.20170125.zip借助Nginx提供HTTP下载服务。由于性能不如Nginx,作者从4.05版本后就取消了内置HTTP服务。
Nginxnginx-1.12.2HTTP服务
//FastDFS是C开发的,没有libevent包的装一下即可。ps:Libevent 是一个用C语言编写的、轻量级的开源高性能事件通知库
[root@spark001 fastdfs]# yum -y install libevent

安装

1. 基础依赖库: fastcommon

fastcommon 是作者余庆从FastDFS剥离出来的。

$ unzip libfastcommon-master.20170125.zip && cd libfastcommon-master
$ ./make.sh && ./make.sh install

安装成功后,会输出到/usr/include/fastcommon 目录:

2.安装FastDFS
$ tar zxvf fastdfs-5. && cd fastdfs-5.08
$ ./make.sh && ./make.sh install


2.1 安装成功后,会在 /usr/bin 目录输出若干以 fdfs_ 开头的可执行文件:

2.2 安装成功后,会在 /etc/fdfs 出现三个文件:

这三个文件我们不用,直接用 fastdfs-5.08/conf 目录下的:

├── f  # tracker server 的配置文件
├── f  # storage server 的配置文件 
├── f  # 客户端的配置文件
├── f  # fastdfs nginx 模块配置文件,如果不需要Nginx提供HTTP下载服务,可以不要。
├── pes # fastdfs nginx 模块配置文件,如果不需要Nginx提供HTTP下载服务,可以不要。
├── f
└── anti-steal.jpg

执行:

[root@spark001 fastdfs-5.08]# cp conf/* /etc/fdfs/

A 启动 Tracker

在启动之前需要对主节点做一些修改

主要是以下几项:

bind_addr=
port=22122
base_path=/fastdfs/tracker

tracker 服务主要3个配置:服务侦听地址和端口,
base_path是用来存储meta和log的,
分别是 ${base_path}/data 和 ${base_path}/logs 两个子目录

[root@spark001 ~]# mkdir -p /fastdfs/tracker

启动 trackerd

[root@spark001 bin]# fdfs_trackerd /etc/f restart
[root@spark001 bin]# pwd
/usr/bin
[root@spark001 bin]# 

查看是否启动成功:

同时,这个时候的日志文件是在:

B 启动 Storage

由于 Storage 启动的时候,需要主动连接到 Tracker,并周期性的发送心跳,以汇报 storage 的状态信息。

同样,还是要修改一下配置文件:

bind_addr=
port=22122
base_path=/fastdfs/storage
store_path0=/fastdfs/storage/p0
tracker_server=ip:22122

其中:
base_path 是存放数据(比如binlog)和日志的,
store_path0是第一个group的(下面的data目录有256*256的二级子目录),tracker_server 是 trackerd 的地址,以便storage 连接它,并发送心跳。

启动 Storage

[root@spark001 bin]# pwd
/usr/bin
[root@spark001 bin]# fdfs_storaged /etc/f restart
[root@spark001 bin]# 

C 启动 Client

同样是:去到/etc/fdfs

修改f

base_path=/fastdfs/client
tracker_server=ip:22122

其中 base_path 是指定日志输出路径,
tracker_server 是因为 client首先要请求 trackerd 获取调度信息。

[root@spark001 ~]# mkdir -p /fastdfs/client

启动 clinet
同样,进入到/usr/bin

使用命令测试一下上传功能:

[root@spark001 bin]# /usr/bin/fdfs_test /etc/f upload /root/jy.png 
This is FastDFS client test program v5.08Copyright (C) 2008, Happy Fish / YuQingFastDFS may be copied only under the terms of the GNU General
Public License V3, which may be found in the FastDFS source kit.
Please visit the FastDFS Home Page / 
for more detail.[2020-07-01 19:37:37] DEBUG - base_path=/fastdfs/client, 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[2020-07-01 19:37:37] ERROR - file: tracker_proto.c, line: 48, server: 120.27.243.91:22122, response status 28 != 0
[2020-07-01 19:37:37] ERROR - file: tracker_proto.c, line: 48, server: 120.27.243.91:22122, response status 28 != 0
tracker_query_storage fail, error no: 28, error info: No space left on device
[root@spark001 bin]# 

出现内存空间不足的问题:这里可以调整一下,来到 f

重启:

[root@spark001 tracker]# /usr/bin/fdfs_trackerd /etc/f restart
waiting for pid [15323] exit ...
starting ...
[root@spark001 tracker]# 

再次测试上传:

上传过程会涉及到先跟trackerd交互,然后跟storaged交互,最后返回文件的信息

发现这个时候,图片已经是上传成功了。

接下来,我们借用Nginx 使得我们可以通过其提供HTTP服务进行文件的访问$下载。

先解压 fastdfs-nginx-module-master.20170125.zip

unzip fastdfs-nginx-module-master.20170125.zip && cd fastdfs-nginx-module-master

安装Nginx

安装前置依赖
yum -y install gcc gcc-c++ autoconf automake make
yum -y install zlib zlib-devel openssl openssl--devel pcre pcre-devel
解压安装
tar -zxvf nginx-1.12. && cd nginx-1.12.2
./configure --add-module=/root/softs/fastdfs/fastdfs-nginx-module-master/src
make && make install

安装好之后:

拷贝 f 这个文件到 /etc/fdfs/
文件位置如下:

[root@spark001 src]# pwd
/root/softs/fastdfs/fastdfs-nginx-module-master/src
[root@spark001 src]# ll
total 76
-rw-r--r-- 1 root 0 33239 Jan 10  2017 common.c
-rw-r--r-- 1 root 0  3479 Jan 10  2017 common.h
-rw-r--r-- 1 root 0   902 Jan 10  2017 config
-rw-r--r-- 1 root 0  3725 Jan 10  2017 f
-rw-r--r-- 1 root 0 28643 Jan 10  2017 ngx_http_fastdfs_module.c
[root@spark001 src]# 

修改拷贝过去的文件:

base_path=/fastdfs/tmp
tracker_server=ip:22122
group_name=group1
url_have_group_name = true

其中 base_path 是指定日志输出路径,
url_have_group_name 是指是否需要包含group_name ,默认false

再次回到Nginx这边进行配置

cd /usr/local/nginx/conf
f

新增:

 server {listen       88;server_name     120.27.243.x;location /group1/M00 {ngx_fastdfs_module;}}   

保存退出,启动nginx

验证:

浏览器打开ip:888

要想在浏览器上看见刚才上传的图片,需要修改一个配置

修改之后:重启各个服务

/usr/bin/fdfs_trackerd /etc/f restart
/usr/bin/fdfs_storaged /etc/f restart
/usr/local/nginx/sbin/nginx -s reload

浏览器打开ip:88/group1/M00/00/00/rBCc_V78d-CAS1zsAASVqq9IuEg601.png

好啦,到这里成功搭建了,这样我们就可以在后端代码里面将文件服务器嵌进去了~

其中一些点,有时间,我再深入一下吧。

谢谢~

本文发布于:2024-01-28 19:33:59,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/17064416449766.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:文件服务器   Nginx   FastDFS   Easy   Peasy
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23