目錄
- 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();
}