FastDFS分布式文件系统

CentOS 8安装FastDFS文件系统 此处使用的虚拟机是 CentOS 8,我的IP地址是 192.168.15.131 安装 libfastcommon-master 直接解压然后 ./make.sh && ./make.sh install 安装 FastDFS 也是直接解压然后 ./make.sh && ./make.sh install 启动fastdfs文件系统 进到 /etc/fdfs 目录下 拷贝三份 .sample 结尾的配置文件去掉 .sample 如:cp tracker.conf. 阅读详情

资料下载

大纲

 

 

FastDFS架构包括Tracker server 和 Storage server 。客户端请求Tracker server 进行文件上传、下载,通过Ttacker server 调度,最总由Storage server 完成文件上传和下载。

       Tracher server 作用是负载均衡和调度,通过Tracker server 在文件上传时可以根据一些策略找到Storage server 提供的文件上传服务。可以将Tracker称为追踪服务器或调度服务器。

       Storage server 的作用是文件存储,,客户端上传的文件最终存储在Storage服务器上,不过Storage server 没有实现自己的文件系统,而是利用操作系统的文件系统来管理文件。可以将Storage称为存储服务器。

 

6.在Nginx中安装FastDFS模块

1.上传fastdfs-nginx-module_v1.16.tar.gz到/usr/local目录
2.解压,进入fastdfs-nginx-module/src目录
3.修改config文件:把/usr/local改成/usr(共3处)
4.cp mod_fastdfs.conf /etc/fdfs/
5.修改/etc/fdfs/mod_fastdfs.conf内容
	vim /etc/fdfs/mod_fastdfs.conf
	base_path=/home/FastDFS
	tracker_server=192.168.70.130:22122
	# tracker_server=192.168.70.133:22122(多个tracker配置多行)
	url_have_group_name=true #URL中包含group名称
	store_path0=/home/FastDFS/fdfs_storage #指定文件存储路径
6.在Nginx的解压目录下重新生成MakeFile
./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=/usr/local/fastdfs-nginx-module/src
7.重新编译,还是执行make命令
8.用objs目录下的nginx文件替换/usr/local/nginx/sbin目录下的nginx文件
保险起见可以把被替换的/usr/local/nginx/sbin/nginx程序文件备份一下
如果看到Nginx文件忙无法替换的提示,则停止Nginx程序
/usr/local/nginx/sbin/nginx -s quit
9.在Nginx中加入如下配置
server {
        listen       80;
        server_name  192.168.70.130;

        location /group1/M00/{
                ngx_fastdfs_module;
        }
}
10.启动Nginx
[root@rich conf]# /usr/local/nginx/sbin/nginx
ngx_http_fastdfs_set pid=10013
11.浏览器访问

#PRG=/usr/local/bin/fdfs_trackerd
PRG=/usr/bin/fdfs_trackerd

#if [ ! -f /usr/local/bin/stop.sh ]; then
#  echo "file /usr/local/bin/stop.sh does not exist!"
#  exit 2
#fi

if [ ! -f /usr/local/fdfs/stop.sh ]; then
  echo "file /usr/local/fdfs/stop.sh does not exist!"
  exit 2
fi

#if [ ! -f /usr/local/bin/restart.sh ]; then
#  echo "file /usr/local/bin/restart.sh does not exist!"
#  exit 2
#fi

if [ ! -f /usr/local/fdfs/restart.sh ]; then
  echo "file /usr/local/fdfs/restart.sh does not exist!"
  exit 2
fi

#stop() {
#        /usr/local/bin/stop.sh $CMD
#        RETVAL=$?
#        return $RETVAL
#}

stop() {
		/usr/local/fdfs/stop.sh $CMD
		RETVAL=$?
		return $RETVAL
}

#restart() {
#        /usr/local/bin/restart.sh $CMD &
#}
restart() {
		/usr/local/fdfs/restart.sh $CMD &
}

3.修改/etc/init.d/fdfs_storaged

#PRG=/usr/local/bin/fdfs_storaged
PRG=/usr/bin/fdfs_storaged

#if [ ! -f /usr/local/bin/stop.sh ]; then
#  echo "file /usr/local/bin/stop.sh does not exist!"
#  exit 2
#fi

if [ ! -f /usr/local/fdfs/stop.sh ]; then
  echo "file /usr/local/fdfs/stop.sh does not exist!"
  exit 2
fi

#if [ ! -f /usr/local/bin/restart.sh ]; then
#  echo "file /usr/local/bin/restart.sh does not exist!"
#  exit 2
#fi
if [ ! -f /usr/local/fdfs/restart.sh ]; then
  echo "file /usr/local/fdfs/restart.sh does not exist!"
  exit 2
fi

#stop() {
#        /usr/local/bin/stop.sh $CMD
#        RETVAL=$?
#        return $RETVAL
#}

stop() {
		/usr/local/fdfs/stop.sh $CMD
		RETVAL=$?
		return $RETVAL
}

#restart() {
#        /usr/local/bin/restart.sh $CMD &
#}
restart() {
		/usr/local/fdfs/restart.sh $CMD &
}

4.添加服务

chkconfig --add fdfs_trackerd
chkconfig --add fdfs_storaged

## 5.设置Nginx开机自动启动
mkdir /usr/local/nginx/logs

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

#pid        logs/nginx.pid;
pid        /usr/local/nginx/logs/nginx.pid;
vim /lib/systemd/system/nginx.service

[Unit]
Description=nginx
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true

[Install]
WantedBy=multi-user.target


systemctl enable nginx.service

 7.示例代码

//1.声明一个字符串变量,用来存储tracker.conf配置文件的路径
//参照基准为类路径根目录
String configPath = "/tracker.conf";

//2.动态获取配置文件的绝对路径
String absolutePath = FastDFSClientTest.class.getResource(configPath).getPath();

//3.调用ClientGlobal类的静态方法执行初始化操作
ClientGlobal.init(absolutePath);

//4.创建TrackerClient对象
TrackerClient trackerClient = new TrackerClient();

//5.创建TrackerServer对象
TrackerServer trackerServer = trackerClient.getConnection();

//6.创建StorageServer对象,可以为null
StorageServer storageServer = null;

//7.创建StorageClient对象
StorageClient storageClient = new StorageClient(trackerServer, storageServer);

//8.上传文件
String[] resultArray = storageClient.upload_file("C:/Users/Lenovo/Desktop/girls/bbb.jpg", "jpg", null);
for (String result : resultArray) {
	System.out.println(result);
}

八、SpringMVC环境下实现表单上传的文件上传到FastDFS

1.依赖

<dependency>
	<groupId>cglib</groupId>
	<artifactId>cglib</artifactId>
	<version>2.2</version>
</dependency>
<dependency>
	<groupId>org.aspectj</groupId>
	<artifactId>aspectjweaver</artifactId>
	<version>1.6.8</version>
</dependency>
<dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-webmvc</artifactId>
	<version>4.3.10.RELEASE</version>
	<scope>compile</scope>
</dependency>
<dependency>
	<groupId>javax.servlet</groupId>
	<artifactId>servlet-api</artifactId>
	<version>2.5</version>
	<scope>provided</scope>
</dependency>
<dependency>
	<groupId>javax.servlet</groupId>
	<artifactId>jsp-api</artifactId>
	<version>2.0</version>
	<scope>provided</scope>
</dependency>
<dependency>
	<groupId>commons-fileupload</groupId>
	<artifactId>commons-fileupload</artifactId>
	<version>1.3.1</version>
</dependency>
<dependency>
	<groupId>org.csource</groupId>
	<artifactId>fastdfs-client-java</artifactId>
	<version>1.27-SNAPSHOT</version>
</dependency>
<dependency>
	<groupId>log4j</groupId>
	<artifactId>log4j</artifactId>
	<version>1.2.17</version>
</dependency>

2.准备tracker.conf

tracker_server=192.168.70.200:22122

3.准备SpringMVC环境

<mvc:annotation-driven/>

<bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
	<property name="prefix" value="/WEB-INF/"/>
	<property name="suffix" value=".jsp"/>
</bean>

<context:component-scan base-package="com.atguigu.fdfs.controller"/>

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
	<property name="defaultEncoding" value="UTF-8"/>
</bean>

4.创建工厂类

private String confLocation;

public void setConfLocation(String confLocation) {
	
	//原始:classpath:tracker.conf
	//需要:/tracker.conf
	
	int beginIndex = confLocation.indexOf(":") + 1;
	
	this.confLocation = "/" + confLocation.substring(beginIndex);
}

@Override
public StorageClient getObject() throws Exception {
	
	//1.初始化工作
	//※需要把confPath从基于类路径根目录的相对路径转换为真实物理路径
	String confAbsolutePath = FastDFSStorageClientFatory.class.getResource(confLocation).getPath();
	System.err.println("☆☆☆"+confAbsolutePath+"☆☆☆");
	
	ClientGlobal.init(confAbsolutePath);
	
	//2.创建StorageClient
	TrackerClient trackerClient = new TrackerClient();
	TrackerServer trackerServer = trackerClient.getConnection();
	StorageServer storageServer = null;
	StorageClient storageClient = new StorageClient(trackerServer, storageServer);
	
	System.err.println("☆☆☆"+storageClient.toString()+"☆☆☆");
	
	return storageClient;
}

@Override
public Class<?> getObjectType() {
	// TODO Auto-generated method stub
	return StorageClient.class;
}

@Override
public boolean isSingleton() {
	// TODO Auto-generated method stub
	return true;
}

5.在Spring配置文件中配置工厂的bean

<bean id="fastDFSStorageClientFatory" class="com.fdfs.factory.FastDFSStorageClientFatory">
	<property name="confLocation" value="classpath:tracker.conf"/>
</bean>

6.在Controller中自动装配StorageClient

@Autowired
private StorageClient storageClient;

项目应用下载

战网国际版下载星际争霸II完整指南(附国内加速技巧) 本文提供《星际争霸II》国际版从账号注册到下载安装的完整指南,特别针对国内玩家优化连接稳定性。涵盖战网国际账号创建、客户端下载安装、游戏配置优化及网络延迟解决方案,帮助玩家顺畅体验StarCraft II国际服。 阅读详情

相关推荐

FastDFS分布式文件系统搭建教程

一、前言 随着互联网的发展,软件更新速度越来越快,但是很多博客尽管软件安装的版本随着软件的更新而更新,但是软件的配置一直参考前人的博客而停留在最初版的配置上,可能某一些配置已经随着版本的更新而完善,不再需要做无用功,所以本篇博客配置以本人自己理解的方式进行配置,尽量删除老旧版本中的无用配置文件,能力有限,不完善的地方还请指出来,多谢! 1. 新建管理员用户 新建虚拟机,安装Centos7...

XY_2017ChaseDream的博客 1万+

安装fastdfs中出现fdfs_trackerd服务找不到的错误

1.大多数情况下是配置文件出错,如拼写错误 2.注意ip地址的问题,虚拟机下的ip地址会变化 3.文件路径问题,文件路径必须是绝对路径,可以进入指定目录下pwd获取绝对路径 4.当以上都没有问题时,重启虚拟机,即可 5,重启没用时,执行重启fastdfs命令/usr/bin/fdfs_trackerd/etc/fdfs/tracker.conf restart ...

weixin_43455639的博客 9900

分布式文件系统FastDFS

概述 FastDFS是一个开源的轻量级分布式文件系统,是我国一款开源的分布式文件系统 由阿里巴巴开发,其真题架构由跟踪服务器(tracker server)、存储服务器(storage server)和客户端(client)三个部分组成,主要解决了海量数据存储问题,特别适合以中小文件(建议范围:4KB < file_size <500MB)为载体的在线服务。 特点: 1>Fast......

企业实战系列集 ●●● https://ximenjianxue.blog.youkuaiyun.com 8181

FastDFS安装配置

安装libfastcommon依赖环境 官网下载,或者链接:https://pan.baidu.com/s/1jIVjy0Q密码:jxkj(其他人的网盘) tar -zxvf libfastcommon.tar.gz cd libfastcommon-1.0.7/ ./make.sh ./make.sh install cp /usr/lib64/libfastcommon.so...

weixin_30797199的博客 1018

1 CentOS 6下FastDFS实现分布式文件系统_ngx_fastdfs_module

存储节点存储文件,完成文件管理的所有功能:就是这样的存储、同步和提供存取接口,FastDFS同时对文件的metadata进行管理。所谓文件的meta data就是文件的相关属性,以键值对(key value)方式表示,如:width=1024,其中的key为width,value为1024。文件metadata是文件属性列表,可以包含多个键值对。跟踪器和存储节点都可以由一台或多台服务器构成。跟踪器和存储节点中的服务器均可以随时增加或下线而不会影响线上服务。

2501_90256944的博客 1386

JavaEE进阶——FastDFS实现分布式文件系统_java 实现分布式文件系统

如果是在不同的服务器安装,需要在新的机器编译FastDFS_v5.05.tar.gz源码包,不需要配置Tracker服务而已。官方提供一个jar包:fastdfs_client_v1.20.jar。

2401_85013810的博客 1106

【go-fastdfs】go-fastdfs 分布式文件系统搭建

文章目录【go-fastdfs】go-fastdfs 分布式文件系统搭建〇、缘起一、从头开始:FastDFS 简介二、主角出场:go-fastdfs (go语言版本的FastDFS)1.介绍2.安装3.配置4.启动5.使用三、数据美化:go-fastdfs-web 监控工具安装0.介绍1.安装2.配置3.部分截图四、写在最后:总结五、友情链接:其他相关文章 【go-fastdfs】go-fastd...

问题不大 1万+

FastDFS分布式文件系统详解

FastDFS 简介 FastDFS 是基于 C 语言开发的,是一个轻量级开源的高性能分布式文件系统。主要功能有:文件存储、文件同步、文件访问(文件上传/下载),解决了大容量的文件存储和高并发访问的问题,文件存取时实现了负载均衡。FastDFS 特别适合中大型网站以文件为载体的在线服务,适合存储 4KB ~ 500MB 之间的小文件,如照片共享网站、视频共享网站(图片、文档、音频、视频等等)。 Github地址 FastDFS 架构 Client 客户端,实现文件上传下载的服务器,就是我们自己的项目所部.

weixin_48530729的博客 8341

分布式文件系统—FastDFS

目录前言1. 场景概述1.1 什么是文件系统1.2 分布式文件系统1.3 主流的分布式文件系统1.3.1 HDFS1.3.2 GFS.3.3.FastDFS1.4 工作原理1.5 上传/下载 原理2. FastDFS的上传与下载2.1 安装2.1.1 安装gcc(编译时需要)2.1.2 安装libevent(运行时需求)2.1.3 安装 libfastcommon2.1.4 安装Tracker2.2 配置2.3 启动服务2.4 搭建 Java工程2.4.2 创建配置文件2.4.3 文件上传2.4.4 文件查

m0_46337171的博客 424

docker 安装 FastDFS

1.查找Docker Hub上的fastdfs镜像 docker search fastdfs 2.拉取镜像 docker pull delron/fastdfs#拉取最新版本 3.查看镜像 docker images 4.使用docker镜像构建tracker容器(跟踪服务器,起到调度的作用): docker run -dti --network=host --name tracker -v /var/fdfs/tracker:/var/fdfs-v /etc/...

DN金猿的博客 466

AppStore逆向分析:从网络抓包到自动化模拟的完整实践

在移动应用生态中,理解客户端与服务器之间的通信协议是进行自动化测试、数据分析和系统集成的关键技术基础。通过分析网络请求与响应,可以深入理解认证、会话管理和数据交换的原理,这对于构建稳定的自动化流程至关重要。其技术价值在于能够实现合法场景下的流程模拟,例如应用元数据监控、沙盒环境测试或内部工具开发。在实际应用场景中,开发者常需处理登录态维持、请求签名验证及风控策略应对等挑战。本文聚焦于AppStore这一封闭生态,详细拆解了其登录、查询等核心环节的通信机制,并探讨了使用Python结合抓包工具进行安全逆向分析

weixin_42524171的博客 933

分布式文件系统FastDFS实战

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

苦难带不走梦想 2299

工业场景落地:Java+PaddleOCR实现高性能OCR文字识别的终极方案

本文深度解析基于Java的高性能工业级OCR实现方案,集成PP-OCRv5深度学习模型,提供: ✅ 多场景支持:手写体、竖排文本、票据表格的精准识别 ✅ 工业级性能:毫秒级响应,支持GPU加速与高并发处理 ✅ 开箱即用:通过Maven快速集成,5行代码完成文字识别 ✅ 完整技术栈:覆盖文本检测、方向校正、识别后处理全流程 附可运行示例代码,助您快速构建企业级OCR系统!

deng775747758的博客 3612

FastDFS 分布式文件系统

Metadata 扩展上传时通过meta_list参数附加自定义属性应用场景图片存储:附加拍摄设备、分辨率等信息文档存储:附加作者、版本号等元数据。

2501_91112123的博客 1332

Flatten 层的深度理解与运用

Flatten 层的深度理解与运用

你要拥有一个你喜欢并且热爱的人生 7038

蓝牙调试抓包工具--nRF Connect移动端 使用详细总结

摘要: nRF Connect移动端是一款功能全面的蓝牙低功耗(BLE)调试工具,支持设备扫描、多设备连接、服务/特征值查看及数据读写操作。核心功能包括实时数据通信(读取/写入/通知)、设备固件更新(DFU)以及高级工具如自动化测试和信号分析。兼容Android 4.3+和iOS设备,适用于开发调试(如ESP32/nRF52)、设备管理和数据分析。需注意设备兼容性问题(如旧安卓设备可能需关闭连续扫描),并确保数据类型匹配。配套工具链包括nRF Toolbox和nRF Connect SDK,是BLE开发的必

AIoT深度探索者 | 嵌入式系统架构师 深耕物联网(IoT)与人工智能(AI)融合技术,聚焦​​边缘计算、图像开发、低功耗通信协议​​,致力于智能硬件,关注我获取最新技术文章信息与海量资源~ 2390

【Linux】分布式文件系统 FastDFS 的部署

FastDFS分布式文件系统部署与Java实践指南 摘要:本文详细介绍了FastDFS分布式文件系统的架构原理和完整部署流程。FastDFS由Tracker调度服务器和Storage存储节点组成,具有轻量高效、线性扩展、自动冗余等特点。文章分步骤讲解了环境准备、依赖安装、Tracker和Storage节点配置,以及Nginx集成方法。通过Java客户端可实现文件上传、下载、删除等核心操作。FastDFS特别适合处理海量小文件,支持水平扩展和负载均衡,是构建高性能文件存储服务的理想选择,广泛应用于图片、视频等

千淘万漉虽辛苦,吹尽狂沙始到金 2万+

攻克反光难题!YOLOv9工业缺陷检测实战:高反光件、微小划痕精准识别(附抗反光代码+产线数据)

文章摘要:本文针对不锈钢、铝合金等高反光工业件的缺陷检测难题,提出了一套“硬件抗反光+YOLOv9小目标增强”的解决方案。通过分析反光干扰(镜面/漫反射)和微小划痕(0.1mm级)两大核心问题,详细介绍了500万像素工业相机+偏振光源的硬件配置方案,以及基于偏振图像融合和超分辨率放大的预处理方法。最终实现误检率1.2%、微小划痕检出率99.3%的工业级检测效果,并提供了可落地的代码实现和车间实测数据。(148字)

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1043
上一篇: Nginx负载均衡
下一篇: Zookeeper分布式应用程序协调服务
Java程序员廖志伟
Java程序员廖志伟 优质创作者: Java技术领域 优质创作者: Java技术领域 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄8年 2万+粉丝 1902原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java程序员廖志伟

赏我包辣条呗

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值