【SpringBoot整合系列】SpringBoot整合FastDFS(一)

news2024/11/28 0:42:48

目录

  • FastDFS
    • FastDFS特点
    • 相关概念的介绍
      • Tracker Server
      • Storage Server
  • FastDFS环境搭建【CentOS 7】
    • 环境准备
    • 安装gcc和libevent
    • 上传安装包
    • 安装libfastcommon
    • 安装FastDFS
    • 拷贝配置文件到指定位置
    • tracker配置
    • storage配置
    • client测试上传文件
    • 安装fastdfs-nginx-module模块到nginx
      • 第一步
      • 第二步:进入nginx文件夹
      • 第三步 执行以下配置命令
      • 第四步
      • 第五步

FastDFS

  • FastDFS(Fast Distributed File System)是一款开源的分布式文件系统,它提供了高性能、高可靠性、高扩展性和高容错性的分布式文件存储解决方案。
  • FastDFS采用了类似于Google File System(GFS)的架构,它的设计目标是解决大规模数据存储和高访问速度的问题。

FastDFS特点

  1. 分布式架构:FastDFS采用分布式的设计,能够通过多台服务器共同完成文件存储和访问的任务,可以实现存储容量的无限扩展。
  2. 高性能:FastDFS采用了文件分块存储和负载均衡技术,可以实现高速读写,适用于高并发、大文件的存储和访问。
  3. 高可靠性:FastDFS采用了多台服务器备份和心跳检测机制,能够确保数据的安全性和高可靠性。
  4. 易于部署和管理:FastDFS采用了简单的部署和管理方式,易于安装和配置,对于需要快速搭建分布式存储的场景具有较高的适用性。
  5. 支持多种文件格式:FastDFS支持多种文件格式,包括图片、视频、文本等常见格式,可以满足不同业务需求的存储要求。

总体来说:FastDFS是一款高性能、高可靠性、易于部署和管理的分布式文件系统,适用于需要高速、大规模数据存储和访问的场景。

相关概念的介绍

Tracker Server

  • Tracker Server是FastDFS的跟踪器服务器,负责管理所有Storage Server节点,以及存储文件的元数据信息,包括文件名、文件大小、文件创建时间、文件存储位置等。
  • 客户端上传文件时,会先向Tracker Server发送请求,Tracker Server会返回一组可用的Storage Server节点列表,客户端再选择其中一个Storage Server进行文件上传。

Storage Server

  • Storage Server是FastDFS的存储服务器,负责存储客户端上传的文件数据和元数据信息。
  • 每个Storage Server节点都有自己的存储空间,可以通过多个Storage Server节点组成分布式存储系统,实现存储容量的无限扩展。
  • 在文件上传过程中,客户端会将文件数据分成多个文件块并分别上传到不同的Storage Server节点上,每个节点保存自己的文件块,从而实现文件的分布式存储和快速读取。

需要注意的是,Tracker Server和Storage Server是两个独立的服务,可以分别部署在不同的服务器上。Tracker Server负责管理Storage Server节点,而Storage Server则负责存储文件数据和元数据信息。当需要扩展存储空间时,可以通过增加Storage Server节点的方式实现存储容量的无限扩展。

FastDFS环境搭建【CentOS 7】

环境准备

名称说明
centos7.x
libfastcommonFastDFS分离出的一些公用函数包
FastDFSFastDFS本体
fastdfs-nginx-moduleFastDFS和nginx的关联模块
nginxnginx1.21.6

安装gcc和libevent

#安装gcc环境
yum install git gcc gcc-c++
#安装libevent
yum -y install libevent

上传安装包

安装包都上传到/opt/soft/FastDFS

  • libfastcommon-1.0.42.tar.gz
  • fastdfs-6.04.tar.gz
  • fastdfs-nginx-module-1.22.tar.gz
mkdir -p /opt/soft/FastDFS

安装libfastcommon

# 解压libfastcommon-1.0.42.tar.gz
tar -zxvf libfastcommon-1.0.42.tar.gz
cd libfastcommon-1.0.42/
# 编译
./make.sh
# 安装
./make.sh install

安装FastDFS

# 解压fastdfs-6.04.tar.gz
tar -zxvf fastdfs-6.04.tar.gz
cd fastdfs-6.04/
# 编译
./make.sh
# 安装
./make.sh install

拷贝配置文件到指定位置

fastdfs相关命令在/usr/bin下
fastdfs配置文件在/etc/fdfs下

将解压缩后的fastdfs里面的conf文件夹下的配置文件,拷贝到/etc/fdfs下统一管理。

cp /opt/soft/FastDFS/fastdfs-6.04/conf/* /etc/fdfs/

tracker配置

vim /etc/fdfs/tracker.conf
port=22122  # tracker服务器端口(默认22122,一般不修改)
base_path=/usr/local/fastdfs/tracker  # 存储日志和数据的根目录
# 创建文件夹
mkdir -p /usr/local/fastdfs/tracker
mkdir -p /home/yuqing/fastdfs
# 开放端口(云服务器要配置安全组)
firewall-cmd --permanent --zone=public --add-port=22122/tcp
# 启动tracker
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf
# 查看tracker是否启动成功
ps -ef | grep tracker

在这里插入图片描述

storage配置

vim /etc/fdfs/storage.conf
group_name=group1#设置组名
port=23000  # storage服务端口(默认23000,一般不修改)
base_path=/usr/local/fastdfs/storage  # 数据和日志文件存储根目录
store_path0=/usr/local/fastdfs/storage # 第一个存储目录
tracker_server=192.168.29.31:22122 #tracker服务器的IP和端口
http.server_port=8888  # http访问文件的端口(默认8888,看情况修改,和nginx中保持一致)
# 创建文件夹
mkdir -p /usr/local/fastdfs/storage
# 开放端口(云服务器要配置安全组)
firewall-cmd --permanent --zone=public --add-port=23000/tcp
# 启动storage
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf
# 查看storage是否启动成功
ps -ef | grep storage

client测试上传文件

#修改/etc/fdfs/client.conf,需要修改的内容如下
vim /etc/fdfs/client.conf
base_path=/usr/local/fastdfs/client
tracker_server=192.168.29.31:22122
# 创建文件夹
mkdir -p /usr/local/fastdfs/client
# 测试上传(fdfs_test)
cd /usr/bin
./fdfs_test /etc/fdfs/client.conf upload /home/KGC.jpg

在这里插入图片描述
记住这个地址:http:192.168.29.31/group1/M00/00/00/wKgdH2YSGJuAa0D_AAEWuRS9uUs910_big.jpg
此时还不可以访问到该图片,需要配置web服务
但是可以在/usr/local/fastdfs/storage/data/00/00看到上传的文件
在这里插入图片描述

安装fastdfs-nginx-module模块到nginx

第一步

# 解压fastdfs-nginx-module-1.22.tar.gz
tar -zxvf fastdfs-nginx-module-1.22.tar.gz
cd fastdfs-nginx-module-1.22/src

# 将mod_fastdfs.conf配置文件拷贝到/etc/fdfs/
cp mod_fastdfs.conf /etc/fdfs/

vim /etc/fdfs/mod_fastdfs.conf
store_path0=/usr/local/fastdfs/storage #存储目录,和storage.conf里面的配置要一样
tracker_server=192.168.29.31:22122  #tracker服务器的IP和端口
group_name=group1#设置组名
url_have_group_name = true #配置url使用组名
base_path=/usr/local/fastdfs/tmp #配置存储日志文件的位置

创建文件夹
mkdir -p /usr/local/fastdfs/tmp

cd /opt/soft/FastDFS/fastdfs-nginx-module-1.22/src
修改config配置文件,把两个local删除掉,因为之前安装的fastdfs的默认安装路径是/usr/include
vim config
ngx_module_incs="/usr/include"
CORE_INCS="$CORE_INCS /usr/include"

第二步:进入nginx文件夹

cd /usr/local/nginx/nginx-1.21.6

第三步 执行以下配置命令

./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi \
--add-module=/opt/soft/FastDFS/fastdfs-nginx-module-1.22/src

第四步

make && make install

第五步

安装完之后在nginx.conf配置监听的服务和端口

cd /usr/local/nginx/conf

vim nginx.conf
listen       8888;    ## 该端口为storage.conf中的http.server_port相同,记得开放端口
#添加ngx_fastdfs_module模块,修改为自己设置的组名chen,后面添加文件存储的路径MOO
location /group1/M00 {
        ngx_fastdfs_module;
}

修改完配置文件后执行启动nginx
cp /usr/local/nginx/sbin/nginx /usr/bin
nginx
ps -ef |grep nginx

在这里插入图片描述

然后访问之前上传的图片,路径如下:
http://192.168.29.31:8888/group1/M00/00/00/wKgdH2YSGJuAa0D_AAEWuRS9uUs910_big.jpg
如果可以访问的到的话,那么说明已经安装成功了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1577088.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

9.java openCV4.x 入门-特殊的Mat类汇总(一)

专栏简介 💒个人主页 📰专栏目录 点击上方查看更多内容 📖心灵鸡汤📖我们唯一拥有的就是今天,唯一能把握的也是今天建议把本文当作笔记来看,据说专栏目录里面有相应视频🤫 🧭文…

dubbo知识点

为什么要用 Dubbo? 随着服务化的进一步发展,服务越来越多,服务之间的调用和依赖关系也越来越复杂,诞生了面向服务的架构体系(SOA),也因此衍生出了一系列相应的技术,如对服务提供、服务调用、连接处理、通信…

嵌入式Linux驱动开发——汇编点灯

嵌入式Linux驱动开发——汇编点灯 本文章开始记录学习嵌入式Linux的过程,使用的开发板是正点原子的阿尔法,以及左老师的书籍和视频。然后这个系列不会介绍基础知识(书上都有),主要是记录思考过程以及需要注意的点。 代…

《深入浅出多模态》:多模态经典模型CLIP

🎉AI学习星球推荐: GoAI的学习社区 知识星球是一个致力于提供《机器学习 | 深度学习 | CV | NLP | 大模型 | 多模态 | AIGC 》各个最新AI方向综述、论文等成体系的学习资料,配有全面而有深度的专栏内容,包括不限于 前沿论文解读、资料共享、行业最新动态以、实践教程、求职…

淘宝天猫详情接口API:打造个性化购物体验

在数字时代的购物领域,个性化体验成为了各大电商平台竞争的核心。随着互联网和大数据技术的快速发展,淘宝天猫作为中国最大的电商平台,不断推出创新的功能和工具,联讯数据为用户提供个性化购物服务。其中,淘宝天猫详情…

The Closest Pair Problem

Problem Let S be a set of n points ((xi,yi), 1≤i≤n) in the plane, finding a pair of points p and q in S whose mutual distance is minimum. Algorithm 1: Θ ( n 2 ) The brute-force algorithm simply examines all the possible n(n−1)/2 distances and returns t…

实战中内网穿透的打法

前言 在内网渗透时,一个WebShell或CobaltStrike、Metasploit上线等,只是开端,更多是要内网横向移动,扩大战果,打到核心区域。但后渗透的前提是需要搭建一条通向内网的“专属通道”,才能进一步攻击。可实战…

交易要想成功澳福总结几点

100%使用基本面分析的投资者能保证每次交易都能成功吗?100%使用技术分析的投资者能保证每次交易都能成功吗?在fpmarkets澳福看来无论是基本面分析还是技术分析都不能保证100%交易成功。 投资者不能只依赖一种分析进行投资交易。在fpmarkets澳福看来成功的…

4【PS让图片动起来】系列2-【素材拆分 抠图】

【问题介绍】上章展示了如何将花瓣网的素材导入PS,但导入的是一堆花瓣,怎么拆分成一片片飘落的花瓣呢? 今天介绍的主体就是PS抠图 PS抠图的方法有很多种,一口气讲完也不实用,计划是根据合适的案例,介绍合…

uniapp开发笔记----配置钉钉小程序

uniapp开发笔记----配置钉钉小程序 1. 项目根目录添加package.json文件2. 之后点击运行就可以看到已经添加了钉钉小程序3. 如果首次使用需要配置 其他功能待开发。。。 接上一章之后,我想要把项目配置成钉钉小程序 官方文档点击这里 1. 项目根目录添加package.json…

linux:du和df区别

文章目录 1. 概述2. du 命令2. df 命令3. 区别总结 1. 概述 du 和 df 都是 Linux 系统中用于查看磁盘空间使用情况的命令,但它们的功能和用法有所不同。 2. du 命令 du 是 “disk usage” 的缩写,用于显示文件或目录的磁盘使用情况。du 命令用于查看指…

接口自动化入门: Http请求的域名与IP地址概念!

在进行接口自动化测试时,经常需要与服务器进行通信,这就涉及到了使用Http协议发送请求。在发送请求时,我们需要指定目标服务器的域名或者IP地址。下面将从0到1详细介绍域名与IP地址的概念及其在接口自动化测试中的应用。 本文从5个方面来书写…

【nnUNetv2实践】二、nnUNetv2快速入门-训练验证推理集成一条龙教程

nnUNet是一个自适应的深度学习框架,专为医学图像分割任务设计。以下是关于nnUNet的详细解释和特点: 自适应框架:nnUNet能够根据具体的医学图像分割任务自动调整模型结构、训练参数等,从而避免了繁琐的手工调参过程。 自动化流程&a…

申请免费SSL证书

SSL证书是数字证书的一种,配置在服务器上,起到文件信息传输加密的作用。由受信任的数字证书颁发机构CA在验证服务器身份后颁发,防止第三方窃取或篡改信息。 具体来说,SSL证书在客户端浏览器与Web服务器两端建立一条SSL安全通道&a…

【C++】流程控制语句:跳转语句之Break

在C编程语言中,流程控制不仅包括循环和条件分支,还包括一类特别重要的语句——跳转语句。 这类语句允许程序在执行过程中“打破”常规流程,转而执行其他位置的代码。 C提供了四种跳转语句:break、continue、goto 以及 return。…

(已解决)使用IEEE格式的latex模板时出现引用(citation/reference)下面有下划线的情况

文章目录 背景原因解决方案 背景 问题如下,1.有一个下划线标注所发表的期刊或者会议2.不是斜体的。 上面这样肯定是不对的,那为什么会出现这种情况呢? 原因 I think I know of no style that applies underlining to titles in the bibli…

实现第一个动态链接库 游戏插件 成功在主程序中运行 dll 中定义的类

devc 5.11编译环境 dll编译环境设置参考 Dev c C语言实现第一个 dll 动态链接库 创建与调用-CSDN博客 插件 DLL代码和主程序代码如下 注意 dll 代码中的class 类名需要 和主程序 相同 其中使用了函数指针和强制类型转换 函数指针教程参考 以动态库链接库 .dll 探索结构体…

基于51单片机的温度、烟雾、火焰检测设计

基于51单片机的火灾检测设计 (仿真+程序+原理图设计报告) 功能介绍 具体功能: 1.使用MQ-2烟雾采集,使用ADC0832将传感器输出的模拟信号转化为数字信号,再传给单片机。 2.使用DS18B20采集温度。…

fastlio2 保存每帧的点云和每帧的里程计为单独的文件做后端回环优化和手动回环优化

为了 提供数据做后端回环优化和手动回环优化,需要保存每帧的点云和每帧的里程计为单独的文件,并且需要保存的名字为ros时间戳。 效果很好,比我自己写的手动回环模块好用 // This is an advanced implementation of the algorithm described in the // following paper: /…

Ceph学习 -4.Ceph组件介绍

文章目录 1.Ceph组件介绍1.1 组件介绍1.2 流程解读1.2.1 综合效果图1.2.2 数据存储逻辑 1.3 小结 1.Ceph组件介绍 学习目标:这一节,我们从组件介绍、流程解读、小结三个方面来学习。 1.1 组件介绍 无论是想向云平台提供 Ceph 对象存储和 Ceph 块设备服务…