linux下载安装搭建、卸载FastDfs文件服务器、配置多存储路径(轮询、最大内存选择)、nginx反向代理实现图片预览、常用命令

2023-11-11

linux下载安装搭建、卸载FastDfs文件服务器、配置多存储路径(轮询、最大内存选择)、nginx反向代理实现图片预览、常用命令
Springboot整合Fastdfs上传图片、缩略图、下载文件、需求:文件转存方案(springboot整合线程池多线程实现)

简介

FastDFS 是一个开源的高性能分布式文件系统(DFS)。 它的主要功能包括:文件存储,文件同步和文件访问,以及高容量和负载平衡。主要解决了海量数据存储问题,特别适合以中小文件(建议范围:4KB < file_size <500MB)为载体的在线服务。

FastDFS 系统有三个角色:跟踪服务器(Tracker Server)、存储服务器(Storage Server)和客户端(Client):

  • Tracker Server:跟踪服务器,主要做调度工作,起到均衡的作用;负责管理所有的 storage server和 group,每个 storage 在启动后会连接 Tracker,告知自己所属 group 等信息,并保持周期性心跳。
  • Storage Server:存储服务器,主要提供容量和备份服务;以 group 为单位,每个 group 内可以有多台 storage server,数据互为备份。
  • Client:客户端,上传下载数据的服务器,也就是我们自己的项目所部署在的服务器。

如图所示,基本架构图

在这里插入图片描述

其实,我们的TrackerStorage服务可以安装在不同的服务器上,当然安装在同一台服务器也可。Tracker是作为管理者,主要做调度工作。Storage就是主要用来存放图片文件的地方。

FastDFS文件上传过程

  1. client询问tracker上传到的storage。

  2. tracker返回一台可用的storage。

  3. client直接和storage通讯完成文件上传,返回文件信息。

(网图)

在这里插入图片描述

FastDFS文件下载过程

  1. client询问tracker下载文件的storage,参数为文件标识(卷名和文件名);

  2. tracker返回一台可用的storage;

  3. client直接和storage通讯完成文件下载。

需要说明的是,client为使用FastDFS服务的调用方,client也应该是一台服务器,它对tracker和storage的调用均为服务器间的调用。

(网图)

在这里插入图片描述

下载安装配置FastDFS

下载

地址:https://github.com/happyfish100,正常来讲需要 fastdfslibfastcommon,如果需要进行图片预览,就需要fastdfs-nginx-module,另外还需要安装好nginx来做反向代理。

版本自己来选择即可,我这里是 fastdfs是6.06版本,libfastcommon是1.0.43版本。

在这里插入图片描述

  • 下载方式一:直接使用 wget 下载,如果太慢,可以去github下载,然后上传到服务器上即可。

    wget -c "https://github.com/happyfish100/fastdfs/archive/V6.06.tar.gz" \
    -O fastdfs-6.06.tar.gz
    
    wget -c "https://github.com/happyfish100/libfastcommon/archive/V1.0.43.tar.gz" \
    -O libfastcommon-1.0.43.tar.gz
    
    wget -c "https://github.com/happyfish100/fastdfs-nginx-module/archive/V1.22.tar.gz" \
    -O fastdfs-nginx-module-1.22.tar.gz
    
    wget -c http://nginx.org/download/nginx-1.17.7.tar.gz
    
  • 下载方式二:直接在github下载。

安装

需要先安装基础环境

yum -y install make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel
yum -y install libevent

再安装libfastcommon函数库。

tar -zxvf libfastcommon-1.0.43.tar.gz

进入libfastcommon-1.0.43目录,编译然后安装

./make.sh
./make.sh install

检查一下

ls /usr/lib64|grep libfastcommon
ls /usr/lib|grep libfastcommon

出现libfastcommon.so即可。

ok,然后fastdfs

tar -zxvf fastdfs-6.06.tar.gz

进入fastdfs目录,编译安装

可以先看一下fastdfs的安装配置目录所在信息,make.sh文件中

在这里插入图片描述

./make.sh
./make.sh install

配置

配置tracker

在/etc/fdfs目录中,这个目录中都是一些配置文件

直接复制一个tracker.conf.sample,改名为 tracker.conf

在这里插入图片描述

cp tracker.conf.sample tracker.conf

编辑tracker.conf,vim tracker.conf

# 基本工作目录
base_path=/fastdfs/tracker

# 设置store_path, 0:是轮询方式  2:选择剩余最大的目录存放文件,根据自己的需要选择即可
store_path = 0

题外话:如果设置了store_path是轮询方式,但是后面测试上传文件的时候总是只上传到一个文件夹中,那么可能是使用命令测试上传的 指令没有选对。一下两种上传方式,一种是测试上传的,一种是普通文件的。可以使用普通上传即可。(此部分读者可以略过,因为如果按照本文上传方式,就是使用的普通方式。)

# 测试上传
/usr/bin/fdfs_test /etc/fdfs/client.conf upload a.jpg

# 普通上传的(推荐,此上传方式会被tracker.conf中的store_path影响,到底是选择哪个存储路径)
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf a.jpg

base_path配置的路径一定要存在,否则可能会报错,创建个目录

mkdir -p /fastdfs/tracker

配置storage

复制一个storage.conf.sample改名为 storage.conf

cp storage.conf.sample storage.conf

编辑文件vim storage.conf

# 修改组名
group_name=wlhGroup
# 修改storage的工作空间(base_path路径必须存在)
base_path=/fastdfs/storage

# 配置多存储路径的数量
store_path_count = 2

# 修改storage的多存储空间
store_path0=/fastdfs/storage/d0
store_path1=/fastdfs/storage/d1

# 修改tracker的地址和端口号,用于心跳
tracker_server=192.168.0.101:22122

# 配置http服务端口,和nginx中的监听端口要一致
http.server_port = 80

上面配置的base_path并不是文件存储的位置,而是storage工作的路径,storage启动时,该路径下会生成datalogs目录,data里面是工作的一些pid文件等,logs里面是日志信息(排查错误时可以看这个)。

如上面配置的storage.conf文件的base_path(工作目录)和 store_path(文件存储目录)

在这里插入图片描述

注意base_path和store_path{index}的目录一定要存在,创建一下。

mkdir -p /fastdfs/storage
mkdir -p /fastdfs/storage/d0
mkdir -p /fastdfs/storage/d1

启动

启动tracker

/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf

启动storage

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

注意:tracker和storage的相关文件都在我们之前配置的base_path中,包含数据、日志等,当需要排查错误时,一定要记得去查看下日志!!!

按照我们以上配置的路径,tracker的日志文件在 /fastdfs/tracker/logs/trackerd.log文件中

storage的日志文件在/fastdfs/storage/logs/storaged.log文件中

测试上传

复制修改修改client.conf文件,改好配置

复制

cp client.conf.sample client.conf

修改

vim client.conf

内容如下:

base_path = /fastdfs/client
tracker_server = 192.168.0.101:22122

要记得把base_path的目录创建一下

mkdir -p /fastdfs/client

随意上传一个文件

/usr/bin/fdfs_upload_file /etc/fdfs/client.conf a.jpg

查看结果

在这里插入图片描述

看到以上信息,说明上传是没有问题了。包括我们设置的group_name都返回了。

图片预览

如果有图片预览的需求,需要把nginx相关的配置也搞上。

安装pcre

yum -y install pcre pcre-devel

解压

tar -zxvf nginx-1.17.7.tar.gz
tar -zxvf fastdfs-nginx-module-1.22.tar.gz

进入nginx目录后,添加 http_stub_status_module 模块

./configure --prefix=/usr/local/nginx --with-http_stub_status_module

进入fastdfs-nginx-module-1.22/src目录,编辑配置文件,将文件中路径 /usr/local换成 /usr

vim config
:%s+/usr/local+/usr

在这里插入图片描述

进入到nginx的目录中,添加fastdfs-nginx-module。这里注意fastdfs-nginx-module的安装位置.改成你自己的。

./configure --add-module=/env/fastdfs-nginx-module-1.22/src/

然后编译安装

make && make install

复制并修改fastdfs-ngin-module中的配置文件

cp /env/fastdfs-nginx-module-1.22/src/mod_fastdfs.conf /etc/fdfs/

vim /etc/fdfs/mod_fastdfs.conf

修改为:

base_path和store_path和storage.conf中尽量一致。

connect_timeout=10
# tracker的地址
tracker_server=192.168.0.101:22122
# url中包含group_name
url_have_group_name = true
# 配置group_name,要和 storage中配置的一样
group_name=wlhGroup

store_path_count=2
base_path=/fastdfs/storage
store_path0=/fastdfs/storage/d0
store_path1=/fastdfs/storage/d1

进入fastdfd源码conf目录,将http.conf,mime.types两个文件拷贝到/etc/fdfs/目录下

cp /env/fastdfs-6.06/conf/http.conf /env/fastdfs-6.06/conf/mime.types /etc/fdfs/

编辑nginx配置

vim /usr/local/nginx/conf/nginx.conf
    listen       80;
    server_name  192.168.0.101;

    #charset koi8-r;

    #access_log  logs/host.access.log  main;

    location / {
    root   html;
    index  index.html index.htm;
    }

    location ~/wlhGroup/M00 {
    root  /fastdfs/storage/d0;
    ngx_fastdfs_module;
    }

    location ~/wlhGroup/M01 {
    root /fastdfs/storage/d1;
    ngx_fastdfs_module;
    }

在这里插入图片描述

启动nginx

/usr/local/nginx/sbin/nginx

上传一个文件

在这里插入图片描述

看到返回了地址,我们去浏览器访问一下。没问题

在这里插入图片描述

忠告:在开发中,可能会遇见很多奇奇怪怪的问题,一定要学会看日志!!再去查阅资料,否则会导致根本无从下手,效率极低。

dfs常用命令

# 监控服务器状态命令:fdfs_monitor
/usr/bin/fdfs_monitor /etc/fdfs/client.conf

# 上传文件
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf a.jpg

# 下载文件
/usr/bin/fdfs_download_file /etc/fdfs/client.conf group_name/文件地址

# 删除文件
/usr/bin/fdfs_delete_file /etc/fdfs/client.conf group_name/文件地址

# 启动 tracker服务
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf

# 重启/终止 tracker服务
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart/stop

# 启动 storage服务
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf

# 重启/终止 storage服务
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart/stop

如果重启/停止tracker或storage服务没有生效,那么直接Kill杀掉进程即可。

nginx常用命令

要记得先把nginx的目录配置到 环境变量中。

vim /etc/profile

export PATH=$PATH:/usr/local/nginx/sbin

记得刷一下

source /etc/profile

常用命令

nginx -s reload #重新加载Nginx配置文件,然后以优雅的方式重启Nginx

nginx -s stop #强制停止Nginx服务

nginx -s quit #优雅地停止Nginx服务(即处理完所有请求后再停止服务)

killall nginx #杀死所有nginx进程

卸载fastDFS

可以参考这篇文章fastDFS如何卸载

参考文章

用FastDFS一步步搭建文件管理系统

FastDFS原理详解及部署使用

Linux搭建FastDFS环境

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

linux下载安装搭建、卸载FastDfs文件服务器、配置多存储路径(轮询、最大内存选择)、nginx反向代理实现图片预览、常用命令 的相关文章

随机推荐

  • Anconda中创建了虚拟环境,安装了各种第三方库,但是pycharm中却不会使用的解决办法

    解决方法 打开Pycharm gt File gt Settings gt Project Interpreter gt 左键点击add 按照1 2 3的顺序进行点击 Conda executable不需要管 找到安装Anaconda的盘
  • IBM HR Analytics 员工流失 EDA 和可视化绩效分析

    IBM HR Analytics 员工流失与绩效分析 背景 导入库 输出前五行 数据清洗 检查空值 删除不必要的列 可视化 商务旅行直方图 离家的距离箱形图 教育与数字公司的关系 年龄和月收入散点图 按教育领域和工作角色划分的工作满意度 相
  • 使用 Ray 将 PyTorch 模型加载速度提高 340 倍

    导读 在应用中使用深度学习的挑战之一是管理加载模型进行推理的成本 在本文中 我们将展示如何利用 PyTorch 和 Ray 的功能将这一成本几乎降至零 Introduction 深度学习模型庞大而繁琐 由于它们的大小 它们需要很长时间才能加
  • 数据挖掘项目:银行信用评分卡建模分析(上篇)

    kaggle上的Give Me Some Credit一个8年前的老项目 网上的分析说明有很多 但本人通过阅读后 也发现了很多的问题 比如正常随着月薪越高 违约率会下降 但对于过低的月薪 违约率却为0等 因此 本人写这个项目的目的是按照自己
  • 使用docker搭建部署hadoop分布式集群

    http blog csdn net xu470438000 article details 50512442 使用docker搭建部署hadoop分布式集群 标签 dockerhadoop集群 2016 01 13 18 16 2005人
  • 单JS心跳网站初稿

    客户端定时向服务端请求数据 根据返回数据作出相应的处理 客户端按用户操作向服务端发送用户操作数据 服务端根据每个客户端生成数据集 保存到数据库 服务端根据客户端发送过来的用户操作数据生成操作列表 服务端根据操作列表逐个生成不同的心跳包返回给
  • C++中智能指针详解

    1 问题引入 在C 中 静态内存和栈内存外 还有一部分内存称为堆程序用堆来存储动态分配的对象即那些在程序运行时分配的对象 当动态对象不再使用时 我们的代码必须显式的销毁它们 在C 中一般使用 new 在动态内存中为对象分配一块空间并返回一个
  • 【猛地学】Vue2基础学习笔记(尚硅谷vue2)

    vue2基础 vue实例和容器
  • 数据库事务详解

    概述 事务 Transaction 是由一系列对系统中数据进行访问与更新的操作所组成的一个程序执行逻辑单元 ACID 事务具有4个基本特征 分别是 原子性 Atomicity 一致性 Consistency 隔离性 Isolation 持久
  • Android微信SDK API 调用教程

    最近一直在调用微信的API 却发现一直调用不成功 纠结了好久 各方面找教程 找官方 官方里的文档也只是写得很模糊 说是按三步走 1 申请App ID 2 填写包名3 获取程序签名的md5值 这三步只要你走对了就能调通 可是大家都不知道有时候
  • python坐标轴拉伸_python – matplotlib(mplot3d) – 如何在3D图中增加轴的大小(拉伸)?...

    下面的代码示例提供了一种相对于其他轴缩放每个轴的方法 但是 要做到这一点 您需要修改Axes3D get proj函数 下面是一个基于matplot lib http matplotlib org 1 4 0 mpl toolkits mp
  • QT信号槽原理(二)moc代码中的信号槽部分

    目录 前言 moc代码详解 原始代码 emit宏 moc后代码 moc出的信号函数 QMetaObject activate doactive 第一步 获取该信号的所有连接 第二步 遍历每一个连接 第三步 判断发送者和接收者是否在同一线程
  • Oracle导入指令

    打开sqlplus 创建用户 create user mingzi identified by 123456 用户授权 grant connect resource dba to mingzi 导入 imp mingzi 123456 or
  • C++实现树 - 02 二叉树

    数据结构与算法专栏 C 实现 写在前面 这一讲我们来看看二叉树的实现 还不清楚树的结构的小伙伴建议先看看上面一讲关于树的定义 二叉树的定义 二叉树是每个结点最多有两个子树的树结构 也就是说二叉树不允许存在度大于2的树 它有五种最基本的形态
  • 企业级zabbix监控服务搭建

    一 什么是zabbix zabbix可以干什么的 为什么我们要使用zabbix 什么是zabbix zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案 zabbix由2部分构成 zabbix serv
  • Swoole系列(3) - 服务端 (异步风格)

    1 应用场景 主要用于学习和使用Swoole的服务端 异步风格 同时学习其实现原理 2 学习 操作 1 文档阅读 Swoole4 文档 服务端 异步风格 2 整理输出 2 1 是什么 方便的创建一个异步服务器程序 支持 TCP UDP un
  • 行内/行内块元素、块元素,水平垂直居中的方法

    行内元素 行内块元素 水平居中 text align ceter 垂直居中 line height height 块元素 水平居中 margin 0 auto 水平垂直居中 父子皆定位 方法一 盒子必须要有宽高 top 0 right 0
  • 浅谈磁珠(基础)

    磁珠 Ferrite bead 全称为铁氧体磁珠滤波器 简写FB 抗干扰元件的一种 滤除高频噪声效果显著 磁珠的等效电路是一个DCR电阻串联一个电感并联一个电容和一个电阻 DCR是一个恒定值 但后面三个元件都是频率的函数 也就是说它们的感抗
  • ajax中for循环中怎么使用if,在ExtJS中,我可以在Ajax请求中调用for循环和if语句来定义我的参数吗?...

    我想通过我在fieldSet中的复选框进行迭代 如果复选框被选中 我想将复选框的ID添加到数组中 该数组将作为我的Ajax请求的参数之一 在ExtJS中 我可以在Ajax请求中调用for循环和if语句来定义我的参数吗 我意识到我可以创建一个
  • linux下载安装搭建、卸载FastDfs文件服务器、配置多存储路径(轮询、最大内存选择)、nginx反向代理实现图片预览、常用命令

    linux下载安装搭建 卸载FastDfs文件服务器 配置多存储路径 轮询 最大内存选择 nginx反向代理实现图片预览 常用命令 Springboot整合Fastdfs上传图片 缩略图 下载文件 需求 文件转存方案 springboot整