Fdfs环境搭建及整合Java

Fdfs环境搭建及整合JavaFdfs 环境搭建及整合 Java 一 fdfs 依赖安装安装 gcc 编译时需要 FastDFS 是 C 语言开发 安装 FastDFS 需要先将官网下载的源码进行编译 编译依赖 gcc 环境 如果没有 gcc 环境 需要安装 gccyuminstal ygccgcc c 安装 libevent 运行时需求 若安装了桌面图形界面 就不需要安装 FastDFS 依赖 libevent 库 yum yinstalllibe 运行时路径 在 linux 文件系统我们需要新建两个目录 一个目录为我们

Fdfs环境搭建及整合Java

一、fdfs依赖安装

安装gcc(编译时需要)

FastDFS是C语言开发,安装FastDFS需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要安装gcc

yum install -y gcc gcc-c++ 

安装libevent(运行时需求)

若安装了桌面图形界面,就不需要安装;FastDFS依赖libevent库;

yum -y install libevent 

运行时路径:!!!!!

在linux文件系统我们需要新建两个目录,一个目录为我们fdfs运行时的目录,一个是fdfs的数据文件存储目录:

运行时目录:/root/userdata/fdfsdata

数据目录:/root/userdata/fdfs_data

前置操作

为预防防火墙导致的问题,我们选择禁用防火墙的环境下进行环境搭建(centos7)

停止防火墙:

systemctl stop firewalld.service 

禁止防火墙开机自启:

systemctl disable firewalld.service 

二、安装tracker和storage

可以在fdfs官网下载fdfs的源文件:这里使用的是 fastdfs-5.05.tar.gz

解压:

tar -zxvf fastdfs-5.05.tar.gz 

进入fdfs解压后的根目录有进行安装操作:

./make.sh ./make.sh install #编译之后接着进行安装 

安装成功将安装目录下的conf下的文件拷贝到/etc/fdfs/下:(xxxx为fdfs的conf目录)

cp xxxxx /etc/fdfs/ 

配置和启动tracker

(1)切换目录到: /etc/fdfs/ 目录下;

(2)拷贝一份新的tracker配置文件

cp tracker.conf.sample tracker.conf 

(3)修改tracker.conf ; vim tracker.conf

base_path=/home/yuqing/fastdfs 改为: base_path=/root/userdata/fdfsdata 

(4)启动tracker,运行如下命令:

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

注意:在/root/userdata/fdfsdata 目录下生成两个目录, 一个是数据,一个是日志;

配置和启动storage

由于上面已经安装过FastDFS,这里只需要配置storage就好了;

(1)切换目录到: /etc/fdfs/ 目录下;

(2)拷贝一份新的storage配置文件

cp storage.conf.sample storage.conf 

(3)修改storage.conf ; vim storage.conf

base_path=/home/yuqing/fastdfs 改为: base_path=/root/userdata/fdfsdata #store存放文件的位置(store_path) store_path0=/home/yuqing/fastdfs 改为: store_path0=/root/userdata/fdfs_data #如果有多个挂载磁盘则定义多个store_path,如下 #store_path1=..... #store_path2=...... #配置tracker服务器:IP tracker_server=host:22122 #如果有多个则配置多个tracker #tracker_server=192.168.101.1:22122 #tracker_server=192.168.101.2:22122 #tracker_server=192.168.101.3:22122 #tracker_server=192.168.101.4:22122 

(4)启动storage, 运行命令如下:

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

启动完成后进入 /root/userdata/fdfs_data 目录下,显示目录如下:

Fdfs环境搭建及整合Java

使用FastDFS自带工具测试

(1)切换目录到 /etc/fdfs/ 目录下;

(2)拷贝一份新的client配置文件

cp client.conf.sample client.conf 

(3)修改client.conf ; vim client.conf,修改基本路径和tracker_server如下:

base_path=/root/userdata/fdfsdata tracker_server=host:22122 

(5)进行测试,运行如下:(运行测试程序,读取/etc/fdfs/client.conf 文件,上传/root/userdata目录下的docker.jar文件)

Fdfs环境搭建及整合Java

/usr/bin/fdfs_test /etc/fdfs/client.conf upload /root/userdata/docker.jar 

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IrbDms0U-48)(https://www.jiayou.art/fdfs/fdfs2.png)]

以上图中的文件地址: http://192.168.43.34/group1/M00/00/00/wKgrImA0iimAOKGvAWF9mgaZZqY731_big.jar 对应storage服务器上的/root/userdata/fdfs_data/data/00/00/wKgrImA0iimAOKGvAWF9mgaZZqY731_big.jar文件;

由于现在还没有和nginx整合无法使用http下载。

nginx文件映射

user  root;    #记住在用户指定为root用户 不然后期会出现权限问题等


server {
        listen       8000;   	#nginx监听8000端口
        server_name  localhost; 

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        #匹配前置地址
    	#例如:http://192.168.43.34/group1/M00/00/00/wKgrImA0iimAOKGvAWF9mgaZZqY731_big.jar
    	#会匹配到/root/userdata/fdfs_data/data/00/00/wKgrImA0iimAOKGvAWF9mgaZZqY731_big.jar文件
        location /group1/M00 {
        	alias /root/userdata/fdfs_data/data;   #请求映射目录
        	autoindex off; 						   #不列出文件目录  当然你可以设置为On来开启文件目录映射
        	autoindex_exact_size on;
        	autoindex_localtime on;
        }
    
    
        location  / {
        	index index.html;
        }

常用命令

测试上传文件:

fdfs_upload_file /etc/fdfs/client.conf /root/userdata/docker.jar 

停止防火墙:

systemctl stop firewalld.service 

禁止防火墙开机自启:

systemctl disable firewalld.service 

启动Tracker 和 Storage

sudo service fdfs_trackerd start sudo /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart sudo service fdfs_storaged start sudo /usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart 

测试连通性

fdfs_monitor /etc/fdfs/storage.conf 

naginx测试

http://192.168.43.34:8000/group1/M00/00/00/wKgrImAzwD6ATKFdAWF9mgaZZqY524_big.jar 

三、整合Java

引入fdfs客户端依赖

<dependency> <groupId>net.oschina.zcx7878 
     groupId> <artifactId>fastdfs-client-java 
      artifactId> <version>1.27.0.0 
       version>  
        dependency> 

配置连接信息

在maven的resources目录下新建配置fdfs连接的信息:fdfs_client.conf

connect_timeout = 30 network_timeout = 60 #fdfs的文件存储路径 base_path = /root/userdata/fdfs_data #改为自己服务器的ip tracker_server = 192.168.43.34:22122 log_level = info use_connection_pool = false connection_pool_max_idle_time = 3600 load_fdfs_parameters_from_tracker = false use_storage_id = false storage_ids_filename = storage_ids.conf http.tracker_server_port = 80 

编写客户端程序

fun uploadFile() { 
    // 0、获取配置文件的绝对路径 val filePath: String = ClassPathResource("fdfs_client.conf").file.absolutePath // 1、加载配置文件,配置文件中的内容就是 tracker 服务的地址。 ClientGlobal.init(filePath) // 2、创建一个 TrackerClient 对象。直接 new 一个。 val trackerClient = TrackerClient() // 3、使用 TrackerClient 对象创建连接,获得一个 TrackerServer 对象。 val trackerServer = trackerClient.connection // 4、创建一个 StorageServer 的引用,值为 null val storageServer: StorageServer? = null // 5、创建一个 StorageClient 对象,需要两个参数 TrackerServer 对象、StorageServer 的引用 val storageClient = StorageClient(trackerServer, storageServer) // 6、使用 StorageClient 对象上传图片。 //扩展名不带“.” val strings = storageClient.upload_file("D:\\开题论证.docx", "docx", arrayOf(NameValuePair("filename", "The talk sign.docx"))) // 7、返回数组。包含组名和图片的路径。 for (string in strings) { 
    println(string) } println("上传完成") } 

输出

group1 #文件组 M00/00/00/wKgrImA0j4qAXbiYAAWU3bYqu5A10.docx #fdfs文件表示路径 上传完成 

测试使用nginx下载

根据返回的信息拼接http路径因该是这样子的:

http://虚拟机host:8000/group1/M00/00/00/wKgrImA0j4qAXbiYAAWU3bYqu5A10.docx

测试使用客户端下载

fun downloadFile() { 
    // 0、获取配置文件的绝对路径 val filePath: String = ClassPathResource("fdfs_client.conf").file.absolutePath // 1、加载配置文件,配置文件中的内容就是 tracker 服务的地址。 ClientGlobal.init(filePath) // 2、创建一个 TrackerClient 对象。直接 new 一个。 val trackerClient = TrackerClient() // 3、使用 TrackerClient 对象创建连接,获得一个 TrackerServer 对象。 val trackerServer = trackerClient.connection // 4、创建一个 StorageServer 的引用,值为 null val storageServer: StorageServer? = null // 5、创建一个 StorageClient 对象,需要两个参数 TrackerServer 对象、StorageServer 的引用 val storageClient = StorageClient(trackerServer, storageServer) // 6、使用 StorageClient 对象上传图片。 val downloadFile = storageClient.download_file("group1", "M00/00/00/wKgrImA0j4qAXbiYAAWU3bYqu5A10.docx") val out = FileOutputStream(File("C:\\Users\\shuang\\Desktop\\The talk sign.docx")) out.write(downloadFile) out.close() println("下载完成") } 

这里是使用直接下载成字节数组来保存,当然你也可以使用其他方法:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cP0DBXEr-50)(https://www.jiayou.art/fdfs/fdfs3.png)]

获取文件信息

fun getFileInfo() { 
    val filePath: String = ClassPathResource("fdfs_client.conf").getFile().getAbsolutePath() // 1、加载配置文件,配置文件中的内容就是 tracker 服务的地址。 ClientGlobal.init(filePath) // 2、创建一个 TrackerClient 对象。直接 new 一个。 val trackerClient = TrackerClient() // 3、使用 TrackerClient 对象创建连接,获得一个 TrackerServer 对象。 val trackerServer = trackerClient.connection // 4、创建一个 StorageServer 的引用,值为 null val storageServer: StorageServer? = null // 5、创建一个 StorageClient 对象,需要两个参数 TrackerServer 对象、StorageServer 的引用 val storageClient = StorageClient(trackerServer, storageServer) val info = storageClient.get_file_info("group1", "M00/00/00/wKgrImA0j4qAXbiYAAWU3bYqu5A10.docx") val mate = storageClient.get_metadata("group1", "M00/00/00/wKgrImA0j4qAXbiYAAWU3bYqu5A10.docx") println(info) mate.forEach { 
    println(it.name + "->" + it.value) } } 

输出

source_ip_addr = 192.168.43.34, file_size = , create_timestamp = 2021-02-23 13:15:54, crc32 = - filename->The talk sign.docx 

文档参考:

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/177962.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午6:20
下一篇 2026年3月26日 下午6:21


相关推荐

  • android系统中toast是什么_Android个人资料简单布局

    android系统中toast是什么_Android个人资料简单布局老规矩,先上效果图吧主要实现了几种常用的方式:1.最基本的Toast系统自带Toast采用的是队列的方式,等当前Toast消失后,下一个Toast才能显示出来;原因是Toast的管理是在队列中,点击一次,就会产生一个新的Toast,要等这个队列中的Toast处理完,这个显示Toast的任务才算结束。 so~我们可以把Toast改成单例模式,没有Toast再新建它,这样也就…

    2025年11月9日
    6
  • 如何查看linux系统的内核版本信息_内核版本

    如何查看linux系统的内核版本信息_内核版本查看Linux内核版本和系统版本信息**一、查看Linux内核版本命令(两种方法):1、cat/proc/version2、uname-a二、查看Linux系统版本的命令(3种方法):1、lsb_release-a,即可列出所有版本信息这个命令适用于所有的Linux发行版,包括RedHat、SUSE、Debian…等发行版。2、cat/etc/redhat-release,这…

    2022年10月13日
    8
  • 雅可比矩阵和行列式_雅可比行列式的意义

    雅可比矩阵和行列式_雅可比行列式的意义1,Jacobianmatrixanddeterminant在向量微积分学中,雅可比矩阵是向量对应的函数(就是多变量函数,多个变量可以理解为一个向量,因此多变量函数就是向量函数)的一阶偏微分以一定方式排列形成的矩阵。如果这个矩阵为方阵,那么这个方阵的行列式叫雅可比行列式。2,雅可比矩阵数学定义假设函数f可以将一个n维向量n⃗\vec{n}n(n∈Rnn\inR^nn∈Rn)变成一个…

    2025年7月30日
    6
  • “此工作站和主域间的信任关系失败”之解决

    “此工作站和主域间的信任关系失败”之解决某虚拟化的域控制器出现严重故障以至于不可修复 故使用之前 Hyper V 中导出的备份恢复了域控制器 恢复后基本功能正常 但部分工作站登录时提示 此工作站和主域间的信任关系失败 解决方案 0 必须确保故障工作站没有其他的问题 如网络连接故障 DNS 设置错误等 1 在不能登录域的工作站上 使用工作站本地的管理员用户登录系统 2 在工作站上打开 powershell 输入 Reset

    2026年3月18日
    1
  • Hive数据类型和使用注意事项详解

    Hive数据类型和使用注意事项详解了解 Hive 数据类型 是 Hive 编程的基础 使用 hive 建表 首先要明白 hive 常用的数据类型有哪些 可以存储哪些类型的数据 其实 Hive 支持关系型数据库中的大多数基本数据类型 且同时支持关系型数据库中少见的 3 种集合数类型 STRUCT MAP ARRAY 然而学习技术最好的方式之一就是去查看官方文档 Hive 关于数据类型官网地址 Hive 官网关于数据类型的介绍

    2026年3月17日
    2
  • java中mdc是什么_MDC 什么的缩写

    java中mdc是什么_MDC 什么的缩写展开全部 MDCnum 罗马数字 e78988e69dMD Zimbabwe MDCMissouriD DadeColleg

    2026年3月18日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号