centos安装FastDFS,集成到SpringBoot中

news2024/11/24 18:41:17

前言

本教程采用centos7 实测 安装fastdfs,每一步都存在截图,安装不成功你就@我
最关键的是采用springboot 集成 fastdfs,上传保存文件信息

小序

FastDFS是一个开源的分布式文件系统,她对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。

FastDFS服务端有两个角色:跟踪器(tracker)和存储节点(storage)。跟踪器主要做调度工作,在访问上起负载均衡的作用。

存储节点存储文件,完成文件管理的所有功能:存储、同步和提供存取接口,FastDFS同时对文件的meta data进行管理。所谓文件的meta data就是文件的相关属性,以键值对(key value pair)方式表示,如:width=1024,其中的key为width,value为1024。文件meta data是文件属性列表,可以包含多个键值对。

准备所需资源

下载地址 : https://sourceforge.net/projects/fastdfs/files/
如果该链接打不开 文章下面有我上传的有百度云盘 可以进行下载
哪位大佬如果积分充足 可以赏赐一些 

链接: 资源下载地址

在这里插入图片描述

安装fastdfs

tar -zxvf tar zxf FastDFS_v5.05.tar.gz

在这里插入图片描述

tar zxf libfastcommon-1.0.7.tar.gz 
cd libfastcommon-master/
./make.sh
./make.sh install

在这里插入图片描述
在这里插入图片描述
可以看到在/usr/lib目录中已经存在
在这里插入图片描述
然后回到FastDFS编译的目录进行

./make.sh
./make.sh install

在这里插入图片描述
在/etc/fdfs路径下会生成三个配置文件
在这里插入图片描述

使用命令进行复制

cp client.conf.sample client.conf
cp storage.conf.sample storage.conf
cp tracker.conf.sample tracker.conf

在这里插入图片描述
/usr/lib目录下的文件
在这里插入图片描述
/usr/lib64下的文件
在这里插入图片描述
/usr/bin下的文件
在这里插入图片描述
/etc/fdfs下的文件
在这里插入图片描述

配置Tracker

在配置Tracker之前,首先需要创建Tracker服务器的文件路径,即用于存储Tracker的数据文件和日志文件等,我这里选择在/opt目录下创建一个fastdfs_tracker目录用于存放Tracker服务器的相关文件:

mkdir /opt/fastdfs_tracker 

在这里插入图片描述

在这里插入图片描述

i 编辑
esc :wq 保存 退出

disabled=false #启用配置文件(默认启用)
port=22122 #设置tracker的端口号,通常采用22122这个默认端口
base_path=/opt/fastdfs_tracker #设置tracker的数据文件和日志目录
http.server_port=6666 #设置http端口号,默认为8080
启动命令: /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf start

启动成功之后 会生成logs和data两个文件夹
在这里插入图片描述

配置storage

步骤基本与配置Tracker一致,首先是创建Storage服务器的文件目录,需要注意的是同Tracker相比我多建了一个目录,因为Storage还需要一个文件存储路径,用于存放接收的文件
mkdir /opt/fastdfs_storage
mkdir /opt/fastdfs_storage_data

在这里插入图片描述
接下来修改/etc/fdfs目录下的storage.conf配置文件,打开文件后依次做以下修改
在这里插入图片描述

i 编辑
esc :wq 保存退出

disabled=false #启用配置文件(默认启用)
group_name=group1 #组名,根据实际情况修改
port=23000 #设置storage的端口号,默认是23000,同一个组的storage端口号必须一致
base_path=/opt/fastdfs_storage #设置storage数据文件和日志目录
store_path_count=1 #存储路径个数,需要和store_path个数匹配
store_path0=/opt/fastdfs_storage_data #实际文件存储路径
tracker_server=192.168.0.199:22122 #tracker 服务器的 IP地址和端口号,如果是单机搭建,IP不要写127.0.0.1,否则启动不成功(此处的ip是我的CentOS虚拟机ip)
http.server_port=8888 #设置 http 端口号

在这里插入图片描述
启动成功之后 会生成logs和data两个文件夹
在这里插入图片描述

测试

测试时需要设置客户端的配置文件,编辑/etc/fdfs目录下的client.conf 文件,打开文件后依次做以下修改:

base_path=/opt/fastdfs_tracker #tracker服务器文件路径
tracker_server=192.168.0.199:22122 #tracker服务器IP地址和端口号
http.tracker_server_port=6666 # tracker 服务器的 http 端口号,必须和tracker的设置对应起来

在这里插入图片描述
把该图片传到/opt目录下
在这里插入图片描述

上传图片进行测试:  /usr/bin/fdfs_upload_file  /etc/fdfs/client.conf /opt/1.jpg

在这里插入图片描述
这就表示我们的文件已经上传成功了,当文件存储到某个子目录后,即认为该文件存储成功,接下来会为该文件生成一个文件名,文件名由group、存储目录、两级子目录、fileid、文件后缀名(由客户端指定,主要用于区分文件类型)拼接而成
在这里插入图片描述
在这里插入图片描述

此时发现并不能访问,因为FastDFS目前已不支持http协议,4.0.5版本开始移除了自带的HTTP支持(因为之前自带的HTTP服务较为简单,无法提供负载均衡等高性能服务),所以提供了nginx上使用FastDFS的模块fastdfs-nginx-module,下载地址如下:https://github.com/happyfish100/fastdfs-nginx-module,这样做最大的好处就是提供了HTTP服务并且解决了group中storage服务器的同步延迟问题,接下来就具体记录一下fastdfs-nginx-module的安装配置过程

fastdfs-nginx-module

tar zxf fastdfs-nginx-module_v1.16.tar.gz
cd fastdfs-nginx-module/src
vim config

在这里插入图片描述
本机因为之前已经安装过nginx,直接跳过安装,进行整合编译

centos7中安装nginx步骤

1、安装nginx编译环境
# yum -y install gcc-c++
# yum -y install pcre-devel openssl openssl-devel

2、安装之前检查是否有安装过nginx
find -name nginx

3、如果有安装卸载
yum remove nginx

4、选择你想要安装的目录,我选择的是/usr/local下的目录安装
cd /usr/local

5、然后下载最新的nginx
wget http://nginx.org/download/nginx-1.12.0.tar.gz

6、解压nginx包
tar -zxvf nginx-1.12.0.tar.gz

7、配置nginx安装信息
 解压之后进入nginx安装目录后,执行以下语句:
./configure --prefix=/home/admin/Desktop/yzx/nginx/nginx-1.12.0 --with-http_ssl_module --sbin-path=/home/admin/Desktop/yzx/nginx/nginx-1.12.0/sbin/nginx --conf-path=/home/admin/Desktop/yzx/nginx/nginx-1.12.0/conf/nginx.conf
注:–prefix 参数:指定安装目录;–with-http_ssl_module:编译的时候启用SSL支持

8、然后编译、安装
make
make install

9、使用命令查看nginx的安装路径
whereis nginx

10、给nginx目录权限
chmod -R 777 /home/admin/Desktop/yzx/nginx/nginx-1.12.0 

cd /home/admin/Desktop/yzx/nginx/nginx-1.12.0/conf

vim nginx.conf
第一行:
user root;
进入cd /usr/local/nginx/sbin/启动nginx./nginx,然后查看nginx服务是否成功netstat -ntlp
然后根据ip进行访问即可:

添加fastdfs模块 重新编译
在这里插入图片描述

./configure --prefix=/home/admin/Desktop/yzx/nginx/nginx-1.12.0 --with-http_ssl_module --sbin-path=/home/admin/Desktop/yzx/nginx/nginx-1.12.0/sbin/nginx --conf-path=/home/admin/Desktop/yzx/nginx/nginx-1.12.0/conf/nginx.conf --add-module=/home/admin/Desktop/yzx/fastdfs/fastdfs-nginx-module/src/

在这里插入图片描述

make
make install

./nginx -V
查看编译的版本情况信息
在这里插入图片描述

cd /etc/fdfs
编辑配置文件
vim mod_fastdfs.conf

需要修改文件中四处内容,这四处内容的含义:
connect_timeout=20 #连接超时时间,单位秒
tracker_server=192.168.0.199:22122 #tracker服务结点
url_have_group_name = true #URL中是否包含group名称
store_path0=/opt/fastdfs_storage_data # storage服务结点的存储位置,与配置storage结点一致

提供FastDFS需要的HTTP配置文件
复制FastDFS安装包中的两个配置文件(http.conf和mime.types)到/etc/fdfs目录中
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在nginx.conf配置文件中添加该server
在这里插入图片描述
nginx 启动成功(这个是把nginx做成启动服务了 使用systemctl start nginx)
在这里插入图片描述
输入端口访问不成功 感觉是防火墙端口问题
在这里插入图片描述
查看防火墙允许访问的端口列表
在这里插入图片描述

一、开放端口用 --add-port
firewall-cmd --permanent --add-port=8888/tcp

二、移除端口用 --remove-port
firewall-cmd --permanent --remove-port=8888/tcp

三、刷新规则用 --reload
firewall-cmd --reload

四、 查看防火墙开放端口
firewall-cmd --list-all

在这里插入图片描述
至此 浏览器已经可以看到fastdfs的文件

资源列表

链接:https://pan.baidu.com/s/1M7YTOHMeTW_cF5j5dvPsZg 
提取码:1314

搭建SpringBoot工程

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

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

相关文章

为什么时间序列预测这么难?本文将给你答案

机器学习和深度学习已越来越多应用在时序预测中。ARIMA 或指数平滑等经典预测方法正在被 XGBoost、高斯过程或深度学习等机器学习回归算法所取代。 尽管时序模型越来越复杂,但人们对时序模型的性能表示怀疑。有研究表明,复杂的时序模型并不一定会比时序…

如果网站的 Cookie 特别多特别大,会发生什么(二)

协议 仔细回顾一遍 Cookie 属性,除了 secure,再没和 URL Scheme 相关的属性了。 HTTPS是在HTTP上建立SSL加密层,并对传输数据进行加密,是HTTP协议的安全版。现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。…

C++类基础(十四)

类的继承——虚函数 ● 通过虚函数与引用(指针)实现动态绑定 – 使用关键字 virtual 引入 – 非静态、非构造函数可声明为虚函数 – 虚函数会引入vtable结构 ● dynamic_cast static_cast, reinterpret_cast, const_cast在编译期发生。 dynamic_cast在…

Linux常用命令--目录文件管理

Linux常用命令一、目录与文件管理场景一:我是谁场景二:我在哪?跳转目录场景三:查看目录内容场景四:创建目录场景五:如何在目录中创建一个文件场景六:如何编辑一个简单文本文件?场景七…

用Python实现自动发送周报给老板,强制周报不用愁

前言 老板每周要求写周报上交? 像我这种记性不好的,一个月四周忘记三次 只能用点小技术,用Python写个小工具,让它每周帮我给老板发周报~ Github: Weekday 小工具 目标细化 SMTP发送邮件, 用smtplib 读取配置文件 发件人 收件…

uml图六种箭头的含义

在看uml图忘记箭头含义记录一下 泛化 概念:泛化是一种一般与特殊、一般与具体之间关系的描述,具体描述建立在一般描述的基础之上,并对其进行了扩展。在java中用来表示继承的关系。 表示方法:用实线空心三角箭头表示。 实现 概念…

Postman中cookie的操作

在接口测试中,某些接口的调用,需要带入已有Cookie,比如有些接口需要登陆后才能访问。 Postman接口请求使用Cookie有如下两种方式: 1、直接在头域中添加Cookie头域,适用于已经知道请求所用Cookie数据的情况。 2、使用…

Vue3.0学习笔记

文章目录一. Vue开始1.1 渐进式框架1.2 单文件组件1.3 API 风格1.3.1 选项式 API1.3.2 组合式 API二. Vue基础2.1 创建一个 Vue 应用2.1.1 应用实例2.1.2 根组件2.1.3 挂载应用2.1.4 DOM 中的根组件模板2.1.5 应用配置2.1.6 多个应用实例2.2 模板语法2.2.1 文本插值2.2.2 原始 …

4K、高清、无水印视频素材库

推荐5个可以免费下载视频素材的网站,建议收起来! 1、菜鸟图库 视频素材下载_mp4视频大全 - 菜鸟图库 菜鸟图库主要提供设计素材为主,自媒体等相关素材也很多,像商用图片、背景图、视频素材、音频素材都很齐全。视频素材全部都是…

不同接口的LCD硬件操作原理

不同接口的LCD硬件操作原理 文章目录不同接口的LCD硬件操作原理参考资料:一、 应用工程师眼里看到的LCD1.1 像素的颜色怎么表示二、 驱动工程师眼里看到的LCD2.1 统一的LCD硬件模型2.2 MCU常用的8080接口LCD模组2.3 MPU常用的TFT RGB接口2.4 有一个MIPI标准参考资料…

大专生现在转行IT可行吗?

抛开其他具体情况不说,大专是行业基本要求,大专学习转IT完全没有问题! 关于IT行业的学历要求 大专学历是满足基本入行要求的,并且大专可以选择的方向也很多,比如开发、云计算、大数据、数据分析等方向,这…

云计算ACP云服务器ECS实例题库(二)

😘作者简介:一名99年软件运维应届毕业生,正在自学云计算课程。👊宣言:人生就是B(birth)和D(death)之间的C(choise),做好每一个选择。&…

java面试题-容器

目录 1、Java 容器都有哪些? 2.、Collection 和 Collections 有什么区别? 3、 List、Set、Map 之间的区别是什么? 4、HashMap 和 Hashtable 有什么区别? 5、 如何决定使用 HashMap 还是 TreeMap? 6、 说一下 Has…

融资、量产和一栈式布局,这家Tier 1如此备战高阶智驾决赛圈

作者 | Bruce 编辑 | 于婷 从早期的ADAS,到高速/城市NOA,智能驾驶的竞争正逐渐升级,这对于车企和供应商的核心技术和产品布局都是一个重要的考验。 部分智驾供应商已经在囤积粮草,响应变化。 2023刚一开年,智能驾驶…

C语言消消乐游戏代码

C和C游戏趣味编程》一书各个章节的案例代码,每章案例逐步利用学到的语法知识。 本章我们将编写十字消除游戏,用户点击空白方块,沿其上下左右方向寻找第一个彩色方块,如果有两个或两个以上颜色一致,就将其消除。在进度…

Spark 3.1.1 shuffle fetch 导致shuffle错位的问题

背景 最近从数据仓库小组那边反馈了一个问题,一个SQL任务出来的结果不正确,重新运行一次之后就没问题了,具体的SQL如下: select col1,count(1) as cnt from table1 where dt 20230202 group by col1 having count(1) > 1这个问题是偶发…

SpringBoot 整合JWT实现基于自定义注解的-登录请求验证拦截(保姆级教学,附:源码)

学习目标: Spring Boot 整合JWT实现基于自定义注解的 登录请求接口拦截 例: 一篇掌握 JWT 入门知识1.1 在学习SpringBoot 整合JWT之前,我们先来说说JWT进行用户身份验证的流程 1:客户端使用用户名和密码请求登录 2:服务端收到请求&#xf…

spring中@Autowire和@Resource的区别在哪里?

介绍今天使用Idea写代码的时候,看到之前的项目中显示有warning的提示,去看了下,是如下代码?Autowire private JdbcTemplate jdbcTemplate;提示的警告信息Field injection is not recommended Inspection info: Spring Team recommends: &quo…

AntDB-M设计之内存结构

亚信科技专注通信行业多年,AntDB数据库从诞生开始,就面对通信级的大数据量应用场景挑战,在性能、稳定性、规模化等方面获得了超过10年的通信核心业务系统验证,性能峰值达到每秒百万的通信核心交易量。AntDB-M(AntDB内存…

CMMI有哪几个级别,每个级别有哪些其特征

CMMI 一共分五个级别,一级低,五级高,一般初次认证CMMI从三级或者二级开始。 1、CMMI一级,完成级。 在完成级水平上,企业对项目的目标与要做的努力很清晰。项目的目标得以实现。一般来说,公司的初始阶段就是…