日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > linux >内容正文

linux

linux下载安装fastdfs和fastdfs与nginx整合、springboot访问fastdfs

發(fā)布時(shí)間:2024/9/30 linux 66 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux下载安装fastdfs和fastdfs与nginx整合、springboot访问fastdfs 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • 需求分析
  • 分布式文件系統(tǒng)
  • 1 FastDFS安裝
    • FastDFS 和nginx整合
  • 2.整合java訪問(wèn)fastdfs服務(wù)
    • 文件上傳查詢下載測(cè)試
    • 整合springboot

需求分析

搭建fastDFS文件服務(wù)器
1)安裝fastDFS tracker和storage

2)在storage server上安裝nginx
在storage server上安裝nginx的目的是對(duì)外通過(guò)http訪問(wèn)storage server上的文件。
使用nginx的模塊FastDFS-nginx-module,它的作用是通過(guò)http方式訪問(wèn)storage中的文件,當(dāng)storage本機(jī)沒(méi)有要找的文件時(shí)向源storage主機(jī)代理請(qǐng)求文件。

3)在安裝圖片服務(wù)代理
圖片服務(wù)代理的作用是負(fù)載均衡,根據(jù)storage server的負(fù)載情況將圖片瀏覽請(qǐng)求均勻的轉(zhuǎn)發(fā)到storage server上。

搭建文件管理服務(wù)
文件管理服務(wù)提供通過(guò)http方式上傳文件,刪除文件、查詢文件的功能,管理員通過(guò)文件管理服務(wù)對(duì)文件服務(wù)器上的文件進(jìn)行管理。
文件管理服務(wù)采用Spring Boot開發(fā),文件管理服務(wù)通過(guò)與fastDFS交互最終將用戶上傳的文件存儲(chǔ)到fastDFS上。

分布式文件系統(tǒng)

分布式文件系統(tǒng)是通過(guò)網(wǎng)絡(luò)將單機(jī)上的文件系統(tǒng)組成一個(gè)網(wǎng)絡(luò)文件系統(tǒng)。
分布式文件系統(tǒng)主要應(yīng)用在大型互聯(lián)網(wǎng)項(xiàng)目中,實(shí)現(xiàn)圖片存儲(chǔ)、音視頻存儲(chǔ)等服務(wù)。
分布式文件系統(tǒng)的優(yōu)點(diǎn):可以快速擴(kuò)容存儲(chǔ),提高文件訪問(wèn)速度。

理解fastDFS的工作原理
fastDFS由tracker和storage組成,它們都可以部署集群。
tracker負(fù)責(zé)調(diào)度,storage負(fù)責(zé)存儲(chǔ)。
fastDSF架構(gòu)
FastDFS架構(gòu)包括 Tracker server和Storageserver。客戶端請(qǐng)求Tracker server進(jìn)行文件上傳、下載,通過(guò)Tracker
server調(diào)度最終由Storage server完成文件上傳和下載。

1)Tracker
Tracker Server作用是負(fù)載均衡和調(diào)度,通過(guò)Tracker server在文件上傳時(shí)可以根據(jù)一些策略找到Storage server提
供文件上傳服務(wù)。可以將tracker稱為追蹤服務(wù)器或調(diào)度服務(wù)器。
FastDFS集群中的Tracker server可以有多臺(tái),Tracker server之間是相互平等關(guān)系同時(shí)提供服務(wù),Tracker server不存在單點(diǎn)故障。客戶端請(qǐng)求Tracker server采用輪詢方式,如果請(qǐng)求的tracker無(wú)法提供服務(wù)則換另一個(gè)tracker。

2)Storage
Storage Server作用是文件存儲(chǔ),客戶端上傳的文件最終存儲(chǔ)在Storage服務(wù)器上,Storage server沒(méi)有實(shí)現(xiàn)自己的文件系統(tǒng)而是使用操作系統(tǒng)的文件系統(tǒng)來(lái)管理文件。可以將storage稱為存儲(chǔ)服務(wù)器。
Storage集群采用了分組存儲(chǔ)方式。storage集群由一個(gè)或多個(gè)組構(gòu)成,集群存儲(chǔ)總?cè)萘繛榧褐兴薪M的存儲(chǔ)容量之和。一個(gè)組由一臺(tái)或多臺(tái)存儲(chǔ)服務(wù)器組成,組內(nèi)的Storage server之間是平等關(guān)系,不同組的Storage server之間不會(huì)相互通信,同組內(nèi)的Storage server之間會(huì)相互連接進(jìn)行文件同步,從而保證同組內(nèi)每個(gè)storage上的文件完全一致的。一個(gè)組的存儲(chǔ)容量為該組內(nèi)存儲(chǔ)服務(wù)器容量最小的那個(gè),由此可見組內(nèi)存儲(chǔ)服務(wù)器的軟硬件配置最好是一致的。

采用分組存儲(chǔ)方式的好處是靈活、可控性較強(qiáng)。比如上傳文件時(shí),可以由客戶端直接指定上傳到的組也可以由
tracker進(jìn)行調(diào)度選擇。一個(gè)分組的存儲(chǔ)服務(wù)器訪問(wèn)壓力較大時(shí),可以在該組增加存儲(chǔ)服務(wù)器來(lái)擴(kuò)充服務(wù)能力(縱向
擴(kuò)容)。當(dāng)系統(tǒng)容量不足時(shí),可以增加組來(lái)擴(kuò)充存儲(chǔ)容量(橫向擴(kuò)容)。
3)Storage狀態(tài)收集
Storage server會(huì)連接集群中所有的Tracker server,定時(shí)向他們報(bào)告自己的狀態(tài),包括磁盤剩余空間、文件同步狀況、文件上傳下載次數(shù)等統(tǒng)計(jì)信息。

客戶端與fastDFS采用socket協(xié)議通信,可以采用官方提供的java版本的fastDSF-client快速開發(fā)。

1 FastDFS安裝

1.1 安裝VMware虛擬機(jī)
安裝CentOS7虛擬機(jī)。
1.2 FastDFS–tracker安裝
分別在192.168.101.3和192.168.101.4上安裝tracker。

注:初次安裝可只安裝一臺(tái)tracker方便調(diào)試。
1.2.1 下載
tracker和storage使用相同的安裝包,下載地址:https://github.com/happyfish100/FastDFS

本教程下載:FastDFS_v5.05.tar.gz

1.2.2 FastDFS安裝環(huán)境
FastDFS是C語(yǔ)言開發(fā),建議在linux上運(yùn)行,本教程使用Centos6.5作為安裝環(huán)境。
安裝FastDFS需要先將官網(wǎng)下載的源碼進(jìn)行編譯,編譯依賴gcc環(huán)境,如果沒(méi)有g(shù)cc環(huán)境,需要安裝gcc:yum install gcc-c++

1.2.3 安裝libevent
FastDFS依賴libevent庫(kù),需要安裝:
yum -y install libevent

1.2.4 安裝libfastcommon
libfastcommon是FastDFS官方提供的,libfastcommon包含了FastDFS運(yùn)行所需要的一些基礎(chǔ)庫(kù)。
將libfastcommonV1.0.7.tar.gz拷貝至/usr/local/下
cd /usr/local
tar -zxvf libfastcommonV1.0.7.tar.gz
cd libfastcommon-1.0.7
./make.sh
./make.sh install

注意:libfastcommon安裝好后會(huì)自動(dòng)將庫(kù)文件拷貝至/usr/lib64下,由于FastDFS程序引用usr/lib目錄所以需要將/usr/lib64下的庫(kù)文件拷貝至/usr/lib下。
要拷貝的文件如下:

1.2.5 tracker編譯安裝
將FastDFS_v5.05.tar.gz拷貝至/usr/local/下

tar -zxvf FastDFS_v5.05.tar.gzcd FastDFS./make.sh ./make.sh install

安裝成功將安裝目錄下的conf下的文件拷貝到/etc/fdfs/下。

1.2.6 配置
安裝成功后進(jìn)入/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

1.2.7 啟動(dòng)
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
啟動(dòng)的日志顯示先停止5619進(jìn)程(實(shí)際環(huán)境不是5619)再啟動(dòng),如下圖:

注意:如果沒(méi)有顯示上圖要注意是否正常停止原有進(jìn)程。

1.3 FastDFS–storage安裝
分別在192.168.101.5、192.168.101.6、192.168.101.7、192.168.101.8上安裝storage。

注:初次安裝可只安裝一臺(tái)storage方便調(diào)試。

1.3.1 安裝libevent
同tracker安裝
1.3.2 安裝libfastcommon
同tracker安裝。

1.3.3 storage編譯安裝
同tracker編譯安裝。

1.3.4 配置
安裝成功后進(jìn)入/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
#如果有多個(gè)掛載磁盤則定義多個(gè)store_path,如下
#store_path1=…
#store_path2=…
tracker_server=192.168.101.3:22122 #配置tracker服務(wù)器:IP
#如果有多個(gè)則配置多個(gè)tracker
tracker_server=192.168.101.4:22122

#配置http端口
http.server_port=80
1.3.5 啟動(dòng)
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
啟動(dòng)的日志顯示先停止8931進(jìn)程(實(shí)際環(huán)境不是8931)再啟動(dòng),如下圖:

注意:如果沒(méi)有顯示上圖要注意是否正常停止原有進(jìn)程。

1.4 上傳圖片測(cè)試
1.4.1 通過(guò)fdfs_test程序
FastDFS安裝成功可通過(guò)/usr/bin/fdfs_test測(cè)試上傳、下載等操作。

修改/etc/fdfs/client.conf
tracker_server根據(jù)自己部署虛擬機(jī)的情況配置 。
base_path=/home/fastdfs
tracker_server=192.168.101.3:22122
tracker_server=192.168.101.4:22122

使用格式:
/usr/bin/fdfs_test 客戶端配置文件地址 upload 上傳文件

比如將/home下的圖片上傳到FastDFS中:
/usr/bin/fdfs_test /etc/fdfs/client.conf upload /home/tomcat.png

打印如下日志:

This is FastDFS client test program v5.05

Copyright ? 2008, Happy Fish / YuQing

FastDFS may be copied only under the terms of the GNU General Public
License V3, which may be found in the FastDFS source kit. Please visit
the FastDFS Home Page http://www.csource.org/ for more detail.

[2015-05-18 02:07:10] DEBUG - base_path=/home/FastDFS,
connect_timeout=30, network_timeout=60, tracker_server_count=1,
anti_steal_token=0, anti_steal_secret_key length=0,
use_connection_pool=0, g_connection_pool_max_idle_time=3600s,
use_storage_id=0, storage server id count: 0

tracker_query_storage_store_list_without_group: server 1.
group_name=, ip_addr=192.168.101.5, port=23000 server 2. group_name=,
ip_addr=192.168.101.6, port=23000

group_name=group1, ip_addr=192.168.101.5, port=23000
storage_upload_by_filename group_name=group1,
remote_filename=M00/00/00/wKhlBVVY2M-AM_9DAAAT7-0xdqM485.png source ip
address: 192.168.101.5 file timestamp=2015-05-18 02:07:11 file
size=5103 file crc32=3979441827 example file url:
http://192.168.101.5/group1/M00/00/00/wKhlBVVY2M-AM_9DAAAT7-0xdqM485.png
storage_upload_slave_by_filename group_name=group1,
remote_filename=M00/00/00/wKhlBVVY2M-AM_9DAAAT7-0xdqM485_big.png
source ip address: 192.168.101.5 file timestamp=2015-05-18 02:07:11
file size=5103 file crc32=3979441827 example file url:
http://192.168.101.5/group1/M00/00/00/wKhlBVVY2M-AM_9DAAAT7-0xdqM485_big.png

http://192.168.101.5/group1/M00/00/00/wKhlBVVY2M-AM_9DAAAT7-0xdqM485_big.png就是文件的下載路徑。
對(duì)應(yīng)storage服務(wù)器上的
/home/fastdfs/fdfs_storage/data/00/00/wKhlBVVY2M-AM_9DAAAT7-0xdqM485_big.png文件。

由于現(xiàn)在還沒(méi)有和nginx整合無(wú)法使用http下載。

FastDFS 和nginx整合

1.5.1 nginx代理
nginx代理storage上的nginx,并進(jìn)行負(fù)載均衡。
nginx的安裝細(xì)節(jié)參考nginx文檔,這里使用單機(jī)nginx,也可以使用兩臺(tái)nginx組成高可用或者采用lvs+nginx訪問(wèn)Storage上的nginx。

創(chuàng)建nginx-fdfs.conf配置文件:

#storage群group1組 upstream storage_server_group1{server 192.168.101.5:80 weight=10;server 192.168.101.6:80 weight=10;}#storage群group2組 upstream storage_server_group2{server 192.168.101.7:80 weight=10;server 192.168.101.8:80 weight=10;}server {listen 80;server_name ccc.test.com;location /group1{proxy_redirect off;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_pass http://storage_server_group1;} location /group2{proxy_redirect off;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_pass http://storage_server_group2;}}

1.5.2 在Storage上安裝nginx
1.5.2.1 FastDFS-nginx-module
將FastDFS-nginx-module_v1.16.tar.gz傳至/usr/local/下
cd /usr/local
tar -zxvf FastDFS-nginx-module_v1.16.tar.gz
cd FastDFS-nginx-module/src
修改config文件將/usr/local/路徑改為/usr/

將FastDFS-nginx-module/src下的mod_FastDFS.conf拷貝至/etc/fdfs/下
cp mod_FastDFS.conf /etc/fdfs/

并修改mod_FastDFS.conf的內(nèi)容:
vi /etc/fdfs/mod_FastDFS.conf
base_path=/home/FastDFS
tracker_server=192.168.101.3:22122
tracker_server=192.168.101.4:22122
url_have_group_name=true #url中包含group名稱
store_path0=/home/FastDFS/fdfs_storage #指定文件存儲(chǔ)路徑
#如果有多個(gè)

將libfdfsclient.so拷貝至/usr/lib下
cp /usr/lib64/libfdfsclient.so /usr/lib/

創(chuàng)建nginx/client目錄
mkdir -p /var/temp/nginx/client
1.5.2.2 nginx安裝

添加FastDFS-nginx-module模塊

./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

make
make install
1.5.2.3 nginx配置文件
新建一個(gè)nginx配置文件nginx-fdfs.conf.

添加server:

server {
listen 80;
server_name 192.168.101.7;

location /group1/M00/{root /home/FastDFS/fdfs_storage/data;ngx_FastDFS_module;}

}

說(shuō)明:
server_name指定本機(jī)ip
location /group1/M00/:group1為nginx 服務(wù)FastDFS的分組名稱,M00是FastDFS自動(dòng)生成編號(hào),對(duì)應(yīng)store_path0=/home/FastDFS/fdfs_storage,如果FastDFS定義store_path1,這里就是M01

1.5.3 測(cè)試
通過(guò)java客戶端上傳文件,使用瀏覽器http訪問(wèn)文件,這里訪問(wèn)上傳圖片測(cè)試的文件:

訪問(wèn)storage:
http://192.168.101.5/group1/M00/00/00/wKhlBVVY2M-AM_9DAAAT7-0xdqM485_big.png
ip地址改為192.168.101.6也行,因?yàn)橥粋€(gè)分組的storage文件互相同步。

訪問(wèn)tracker:
http://192.168.101.3/group1/M00/00/00/wKhlBVVY2M-AM_9DAAAT7-0xdqM485_big.png
ip地址改為192.168.101.4也行。

使用域名訪問(wèn) (推薦):
nginx對(duì)外由vip提供服務(wù),使用域名訪問(wèn)如下:
比如vip對(duì)應(yīng)的域名為img.test.com:
http://img.test.com/group1/M00/00/00/wKhlBVVY2M-AM_9DAAAT7-0xdqM485_big.png

2.整合java訪問(wèn)fastdfs服務(wù)

1)創(chuàng)建maven工程
2)添加依賴

<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring‐boot‐starter‐parent</artifactId> <version>1.5.9.RELEASE</version> </parent> <groupId>cn.itcast.javaee</groupId> <artifactId>fastdfs</artifactId> <version>1.0‐SNAPSHOT</version> <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>org.apache.commons</groupId> <artifactId>commons‐io</artifactId> <version>1.3.2</version> </dependency> </dependencies>
  • 配置 文件
    在classpath:config下創(chuàng)建fastdfs-client.properties文件
  • fastdfs.connect_timeout_in_seconds = 5 fastdfs.network_timeout_in_seconds = 30 fastdfs.charset = UTF‐8 fastdfs.http_anti_steal_token = false fastdfs.http_secret_key = FastDFS1234567890 fastdfs.http_tracker_http_port = 80 fastdfs.tracker_servers = 192.168.101.64:22122

    文件上傳查詢下載測(cè)試

    上傳:

    //上傳文件 @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); TrackerClient tc = new TrackerClient(); TrackerServer ts = tc.getConnection(); if (ts == null) { System.out.println("getConnection return null"); return; } StorageServer ss = tc.getStoreStorage(ts); if (ss == null) { System.out.println("getStoreStorage return null"); } 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(); } }

    文件查詢

    //查詢文件 @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); FileInfo fileInfo = storageClient.query_file_info("group1","M00/00/01/wKhlQFrKBSOAW5AWAALcAg10vf4862.png"); System.out.println(fileInfo); }

    下載

    //下載文件 @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(); }

    整合springboot

    實(shí)體類

    public class FileSystem { private String fileId; private String filePath; private long fileSize; private String fileName; private String fileType; public String getFileId() { return fileId; } public String getFilePath() { return filePath; } public long getFileSize() { return fileSize; } public String getFileName() { return fileName; } public String getFileType() { return fileType; } public void setFileId(String fileId) { this.fileId = fileId; } public void setFilePath(String filePath) { this.filePath = filePath; } public void setFileSize(long fileSize) { this.fileSize = fileSize; } public void setFileName(String fileName) { this.fileName = fileName; } public void setFileType(String fileType) { this.fileType = fileType; } }

    controller:

    package cn.itcast.java.fastdfs.web.controller; import cn.itcast.java.fastdfs.model.FileSystem; import org.csource.common.NameValuePair; import org.csource.fastdfs.*; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.util.UUID; /** * Created by mrt on 2018/4/8. */ @RestController @RequestMapping("/fileserver") public class FileServerController { @Value("${itcast‐fastdfs.upload_location}") private String upload_location; @PostMapping("/upload") @ResponseBody public FileSystem upload(@RequestParam("file")MultipartFile file){ FileSystem fileSystem = new FileSystem(); try { ClientGlobal.initByProperties("config/fastdfs‐client.properties"); TrackerClient tracker = new TrackerClient(); TrackerServer trackerServer = tracker.getConnection(); StorageServer storageServer = null; StorageClient1 client = new StorageClient1(trackerServer, storageServer); //MultipartFile轉(zhuǎn)成File String originalFilename = file.getOriginalFilename();//原始文件名 String extension = originalFilename.substring(originalFilename.lastIndexOf("."));// 擴(kuò)展名 String newFileName = UUID.randomUUID().toString() + extension; File f = new File(upload_location + newFileName); file.transferTo(f); NameValuePair nvp[] = null; String local_filename = f.getAbsolutePath(); //上傳到文件系統(tǒng) String fileId = client.upload_file1(local_filename, null, nvp); //文件在文件系統(tǒng)中的路徑 fileSystem.setFilePath(fileId); fileSystem.setFileId(fileId); long size = file.getSize();//文件大小 //文件大小 fileSystem.setFileSize(size); String contentType = file.getContentType(); //文件類型 fileSystem.setFileType(contentType); //文件名稱 if (fileSystem.getFileName() == null || fileSystem.getFileName().equals("")) { //如果沒(méi)有傳入文件名稱則存儲(chǔ)文件的原始名稱 fileSystem.setFileName(file.getOriginalFilename()); } //刪除web服務(wù)器上的文件 f.deleteOnExit(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } return fileSystem; } }

    總結(jié)

    以上是生活随笔為你收集整理的linux下载安装fastdfs和fastdfs与nginx整合、springboot访问fastdfs的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。