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 目录下,显示目录如下:

使用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文件)

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IrbDms0U-1614058148548)(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 restartsudo 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 的引用,值为 nullval 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 的引用,值为 nullval 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-1614058148550)(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 的引用,值为 nullval 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 = 365789, create_timestamp = 2021-02-23 13:15:54, crc32 = -1238713456
filename->The talk sign.docx

文档参考:

Fdfs环境搭建及整合Java相关推荐

  1. Kafka单机环境搭建及整合SpringBoot完成基本使用

    Kafka单机环境搭建及整合SpringBoot完成基本使用 Kafka单机环境搭建 下载kafka_2.11-1.1.0.tgz版本 下载地址 https://archive.apache.org/ ...

  2. ssh mysql环境搭建 myeclipse_MyEclipse整合ssh三大框架环境搭载用户注册源码下载

    前言 SSH不是一个框架,而是多个框架(struts+spring+hibernate)的集成,是目前较流行的一种Web应用程序开源集成框架,用于构建灵活.易于扩展的多层Web应用程序. 集成SSH框 ...

  3. java后台环境搭建_后端-java环境搭建

    java环境搭建 开发工具:idea/eclipse/myeclipse + mysql/oracle/sqlserver/postgresql + tomcat6/7/8/9. 下面以eclipse ...

  4. 【技术文档】Jeecg-P3开发环境搭建入门(java插件开发框架)

    一.项目工程说明 jeecg-p3-web       | 启动主项目 jeecg-p3-biz-demo | 插件项目     注意:项目为maven工程,采用maven方式导入eclipse等ID ...

  5. 【Java开发语言 00】环境搭建(配置java环境+‘javac’不是内部或外部命令,也不是可运行的程序+安装idea+idea基本用法+新建项目+在新项目的src路径下新建包和类+基础调试+路径)

    idea入门 1 idea安装 1.1 官方下载地址 2 Java语言环境的搭建 下载JDK 安装 JDK(安装路径不要有中文或者特殊符号如空格等) 配置环境变量(必须是全英文状态下的字符) clas ...

  6. java开发环境搭建--写给java新手

                 最近我遇到很多java开发的新人,包括很自认为不是新人的人根本就不会自己搭建一个完整的开发环境,因此想写此文,希对他们有所帮助,解除他们的一些开发困惑,更好的了解java. ...

  7. 最新出炉--IOS自动化测试环境搭建(Python Java)

    一.前言 IOS的App自动化测试与Android的一样,也可以用appium来进行.但是IOS自动化依赖苹果的osx系统.Xcode构建等,且封闭的系统需要苹果开发者账号才可以驱动真机.Appium ...

  8. 【SSH项目实战】国税协同平台-2.环境搭建和整合

    框架整合 2.1新建数据库及web项目 2.1.1创建itcastTax数据库 -- 创建数据库 [sql]  view plain copy CREATE DATABASE itcastTax DE ...

  9. RHEL环境搭建--Nginx|Tomcat|Java|Dubbo|RabbitMQ|Redis|Nexus|MySQL

    安装RHEL虚拟机 虚拟机软件:在本篇文章中,我是使用Vmware Workstation 9安装的虚拟机,其他常用的虚拟机软件还有Xen.KVM.VirtualBox等. ISO文件:rhel-se ...

  10. 怎么把java安装进老年机_环境搭建 - 老人与JAVA - 博客园

    安装JDK 1:下载安装 在这个页面可以看到最新的版本,在这个页面的最下方有一个入口可以下载历史版本: 警告:这些年长的JRE和版本的JDK提供帮助开发人员调试问题在更旧的系统.他们不是最新的安全补丁 ...

最新文章

  1. python自动扫雷_利用Python实现自动扫雷
  2. 理解SQL Server中的锁
  3. 2017-2018-1 20155332实验三 实时系统报告
  4. [TJOI2010]阅读理解
  5. ai人工智能的数据服务_从AI数据集中消除无意识的偏见
  6. redis原子性读写操作之LUA脚本和watch机制
  7. input文字垂直居中_CSS的带文字居中分析
  8. mysql 从后往前截取指定个数字符串_「截取字符串」substring从指定字符串开始截取 - seo实验室...
  9. JavaScript中的navigator对象学习笔记
  10. Android 学习资料
  11. Android性能分析工具Systrace和TraceView的使用
  12. 三菱plc控制步进电机实例_【干货】plc控制步进电机逻辑思路,思路通了步步顺畅...
  13. 解决IAR printf函数输出中文字符乱码问题
  14. 多线程开发之AsyncTask
  15. Win10 锁屏之后无法唤起 出现假死解决办法
  16. stamps中gacos去除大气噪声
  17. 清单革命:如何持续、正确、安全地把事情做好
  18. 玩转华为数据中心交换机系列 | 配置M-LAG双归接入普通以太网络示例
  19. Python基础教程:拼接字符串的7种方法
  20. 伺服系统震动27问,全部问到点子上了

热门文章

  1. C++fseek函数
  2. java环境64位_JAVA环境配置(WIN10之64位)
  3. 《汉魏风云》1、速度与激情——无双吕布的悲喜人生
  4. 计算机网络体系结构图解
  5. 没学历,如何成为一名优秀的Java程序员
  6. iOS系统玩ONS游戏的详细说明(越狱,非越狱)
  7. 测试晶面间距软件_DM3软件使用 透射电镜照片上晶格间距的测量是从两条线的最里面测量...
  8. mysql删除的表怎么恢复_误删除mysql数据库表该如何恢复操作方法
  9. BIG5, GB(GB2312, GBK, ...), Unicode编码, UTF8, WideChar, MultiByte, Char说明与区别
  10. web前端大一实训 HTML+CSS+JavaScript王者荣耀(60页) web课程设计网页规划与设计 HTML期末大作业 HTML网页设计结课作业...