目录
- fastDFS安装与配置
- 导入虚拟机
- fastDFS安装
- Tracker配置
- Storage配置
- 文件上传下载测试
- 搭建环境
- 文件上传
- 文件查询
- 文件下载
一、fastDFS安装与配置
1.1 导入虚拟机(有虚拟机镜像的可以不看这一步)
- 这里使用的时Vmware虚拟机
- 这里使用的镜像是Centos7,导入光驱等的操作请自行操作。
- 安装的jdk 1.8
- 安装pcre,openssl
1.2 fastDFS安装
- tracker和storage使用相同的安装包,
- fastDFS的下载地址在:下载地址
- 这里使用 FastDFS_v5.05.tar.gz
- 安装 FastDFS 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,需要安装 gcc:yum install gcc-c++
1.2.1 安装 libevent
- FastDFS 依赖 libevent 库,需要安装:
- yum -y install libevent
1.2.2 安装 libfastcommon
- libfastcommon 是 FastDFS 官方提供的,libfastcommon 包含了 FastDFS 运行所需要的一些基础库。
1 将 libfastcommonV1.0.7.tar.gz 拷贝至/usr/local/下
2 cd /usr/local
3 tar -zxvf libfastcommonV1.0.7.tar.gz
4 cd libfastcommon-1.0.7
5 ./make.sh
6 ./make.sh install
注意:libfastcommon 安装好后会自动将库文件拷贝至/usr/lib64 下,由于 FastDFS 程序引用 usr/lib 目录所以需要将/usr/lib64 下的库文件拷贝至/usr/lib 下。
1.2.2 tracker 编译安装
- 将 FastDFS_v5.05.tar.gz 拷贝至/usr/local/下
- tar -zxvf FastDFS_v5.05.tar.gz
- cd FastDFS
- ./make.sh 编译
- ./make.sh install 安装
- 安装成功将安装目录下的 conf 下的文件拷贝到/etc/fdfs/下。
1.3 Tracker配置
- 安装成功后进入/etc/fdfs 目录:
- 拷贝一份新的 tracker 配置文件:
cp tracker.conf.sample tracker.conf - 修改 tracker.conf
vi tracker.conf - base_path=/home/yuqing/fastdfs
改为:base_path=/home/fastdfs - 配置 http 端口:http.server_port=80
- 启动 /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
1.4 Storage配置
- 将 FastDFS_v5.05.tar.gz 拷贝至/usr/local/下
- tar -zxvf FastDFS_v5.05.tar.gz
- cd FastDFS
- ./make.sh 编译
- ./make.sh install 安装
- 安装成功将安装目录下的 conf 下的文件拷贝到/etc/fdfs/下。
- /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
- 安装成功后进入/etc/fdfs 目录
- 拷贝一份新的 storage 配置文件:
cp storage.conf.sample storage.conf - 修改 storage.conf vi storage.conf group_name=group1
base_path=/home/yuqing/FastDFS 改为:base_path=/home/ fastdfs store_path0=/home/yuqing/FastDFS
改为:store_path0=/home/fastdfs/fdfs_storage - #如果有多个挂载磁盘则定义多个 store_path,如下
#store_path1=…#store_path2=…
tracker_server=192.168.101.3:22122 #配置 tracker 服务器:IP
= #如果有多个则配置多个 tracker
tracker_server=192.168.101.4:22122 - #配置 http 端口
http.server_port=80 - 启动 /usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
二、文件上传下载测试
2.1 搭建环境
- 这里用java的spring-boot做个简单测测试
pom.xml文件
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/net.oschina.zcx7878/fastdfs‐client‐java-->
<dependency>
<groupId>net.oschina.zcx7878</groupId>
<artifactId>fastdfs-client-java</artifactId>
<version>1.27.0.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>1.3.2</version>
</dependency>
</dependencies>
配置文件
在classpath:config下创建fastdfs-client.properties文件
fastdfs.connect_timeout_in_seconds = 5 #http连接超时时间 fastdfs.network_timeout_in_seconds = 30 #tracker与storage网络通信超时时间 fastdfs.charset = UTF‐8 #字符编码 fastdfs.tracker_servers = 192.168.28.120:22122 #tracker服务器地址,多个地址中间用英文逗号分隔
2.2 文件上传
@Test
public void testUpload() {
try {
ClientGlobal.initByProperties("config/fastdfs‐client.properties");
System.out.println("network_timeout=" + ClientGlobal.g_network_timeout + "ms");
System.out.println("charset=" + ClientGlobal.g_charset);
//创建客户端 T
TrackerClient tc = new TrackerClient();
//连接tracker
TrackerServer ts = tc.getConnection();
if (ts == null) {
System.out.println("getConnection return null");
return;
}
//获取一个storage server
StorageServer ss = tc.getStoreStorage(ts);
if (ss == null) { System.out.println("getStoreStorage return null"); }
//创建一个storage存储客户端
StorageClient1 sc1 = new StorageClient1(ts, ss);
NameValuePair[] meta_list = null; //new NameValuePair[0];
String item = "C:\\Users\\admin\\Desktop\\1.png";
String fileid;
fileid = sc1.upload_file1(item, "png", meta_list);
System.out.println("Upload local file " + item + " ok, fileid=" + fileid);
}catch (Exception ex) {
ex.printStackTrace();
}
2.3文件查询
/查询文件
@Test
public void testQueryFile() throws IOException, MyException {
ClientGlobal.initByProperties("config/fastdfs‐client.properties");
TrackerClient tracker = new TrackerClient();
TrackerServer trackerServer = tracker.getConnection();
StorageServer storageServer = null;
StorageClient storageClient = new StorageClient(trackerServer, storageServer);
}
2.4文件下载
@Test
public void testDownloadFile() throws IOException, MyException {
ClientGlobal.initByProperties("config/fastdfs‐client.properties");
TrackerClient tracker = new TrackerClient();
TrackerServer trackerServer = tracker.getConnection();
StorageServer storageServer = null;
StorageClient1 storageClient1 = new StorageClient1(trackerServer, storageServer);
byte[] result = storageClient1.download_file1("group1/M00/00/01/wKhlQFrKBSOAW5AWAALcAg10vf4862.png");
File file = new File("d:/1.png");
FileOutputStream fileOutputStream = new FileOutputStream(file);
fileOutputStream.write(result); fileOutputStream.close();
}