Linux - 搭建FastDFS分布式文件系统
1. FastDFS簡(jiǎn)介
說(shuō)明:FastDFS簡(jiǎn)介部分的理論知識(shí)全部來(lái)自于博主bojiangzhou的 《用FastDFS一步步搭建文件管理系統(tǒng)》,在此感謝博主的無(wú)私分享。當(dāng)然最最要感謝的是余慶老師,分享了這么好用的分布式文件系統(tǒng)。
?1.1 FastDFS簡(jiǎn)介
FastDFS是一個(gè)開(kāi)源的高效分布式文件系統(tǒng)(DFS)。他主要功能包括:文件存儲(chǔ)、文件同步和文件訪問(wèn),以及高容量和負(fù)載平衡。主要解決了海量數(shù)據(jù)存儲(chǔ)問(wèn)題,特別適合以中小文件(4KB ~ 500MB)為載體的在線服務(wù)。
FastDFS系統(tǒng)有三個(gè)角色:跟蹤服務(wù)器(Tracker Server),存儲(chǔ)服務(wù)器(Storage Server),客戶(hù)端(Client).
-
- Tracker Server:跟蹤服務(wù)器,主要做調(diào)度工作,起到負(fù)載均衡的作用;負(fù)載管理所有的Group和Group中的Storage Server,每個(gè)Storage Server在啟動(dòng)后會(huì)連接Tracker Server,高中自己所屬的Group等信息,并保持周期心跳。
- Storage Server:存儲(chǔ)服務(wù)器,主要提供存儲(chǔ)和備份服務(wù);以Group為單位,每個(gè)Group內(nèi)可以有一到多臺(tái)Storage Server,Group內(nèi)的多臺(tái)Storage Server數(shù)據(jù)互為備份,Group的存儲(chǔ)容量取決于該Group內(nèi)最小Storage Server的容量。
- Client:客戶(hù)端,上傳下載數(shù)據(jù)的服務(wù)器,也就是我們項(xiàng)目所部署的服務(wù)器。
1.2 FastDFS存儲(chǔ)策略
為了支持大容量,存儲(chǔ)節(jié)點(diǎn)(服務(wù)器)采用了分卷(或分組)的組織方式。存儲(chǔ)系統(tǒng)由一個(gè)或多個(gè)卷組成,卷與卷之間的文件是相互獨(dú)立的,所有卷的文件容量累加就是整個(gè)存儲(chǔ)系統(tǒng)中的文件容量。一個(gè)卷可以由一臺(tái)或多臺(tái)存儲(chǔ)服務(wù)器組成,一個(gè)卷下的存儲(chǔ)服務(wù)器中的文件都是相同的,卷中的多臺(tái)存儲(chǔ)服務(wù)器起到了冗余備份和負(fù)載均衡的作用。
在卷中增加服務(wù)器時(shí),同步已有的文件由系統(tǒng)自動(dòng)完成,同步完成后,系統(tǒng)自動(dòng)將新增服務(wù)器切換到線上提供服務(wù)。當(dāng)存儲(chǔ)空間不足或即將耗盡時(shí),可以動(dòng)態(tài)添加卷。只需要增加一臺(tái)或多臺(tái)服務(wù)器,并將它們配置為一個(gè)新的卷,這樣就擴(kuò)大了存儲(chǔ)系統(tǒng)的容量。
1.3 FastDFS上傳過(guò)程
FastDFS向使用者提供基本文件訪問(wèn)接口,比如upload、download、append、delete等,以客戶(hù)端庫(kù)的方式提供給用戶(hù)使用。
Storage Server會(huì)定期的向Tracker Server發(fā)送自己的存儲(chǔ)信息。當(dāng)Tracker Server Cluster中的Tracker Server不止一個(gè)時(shí),各個(gè)Tracker Server之間的關(guān)系是對(duì)等的,所以客戶(hù)端上傳時(shí)可以選擇任意一個(gè)Tracker Server。
當(dāng)Tracker Server收到客戶(hù)端上傳文件的請(qǐng)求時(shí),會(huì)為該文件分配一個(gè)可以存儲(chǔ)文件的Group,當(dāng)選定了Group后就要決定給客戶(hù)端分配Group中的哪一個(gè)Storage Server。當(dāng)分配好Storage Server后,客戶(hù)端向Storage Server發(fā)送寫(xiě)文件請(qǐng)求,Storage Server將會(huì)為文件分配一個(gè)數(shù)據(jù)存儲(chǔ)目錄。然后為文件分配一個(gè)fileid,最后根據(jù)以上的信息生成文件名存儲(chǔ)文件。
1.4 FastDFS文件同步
寫(xiě)文件時(shí),客戶(hù)端將文件寫(xiě)至Group內(nèi)一個(gè)Storage Server即認(rèn)為寫(xiě)文件成功,Storage Server寫(xiě)完文件后,會(huì)由后臺(tái)線程將文件同步至同Group內(nèi)其他的Storage Server。
每個(gè)Storage Server寫(xiě)文件后,同時(shí)會(huì)寫(xiě)一份binlog,binlog里不包含文件數(shù)據(jù),只包含文件名等元信息,這份binlog用于后臺(tái)同步,Storage Server會(huì)記錄向Group內(nèi)其他Storage Server同步的進(jìn)度,以便重啟后能接上次的進(jìn)度繼續(xù)同步;進(jìn)度以時(shí)間戳的方式進(jìn)行記錄,所以最好能保證集群內(nèi)所有Server的時(shí)鐘保持同步。
Storage Server的同步進(jìn)度會(huì)作為元數(shù)據(jù)的一部分匯報(bào)到Tracker Server上,Tracke Server在選擇讀Storage Server的時(shí)候會(huì)以同步進(jìn)度作為參考。
1.5 FastDFS的文件下載
客戶(hù)端uploadfile成功后,會(huì)拿到一個(gè)Storage Server生成的文件名,接下來(lái)客戶(hù)端根據(jù)這個(gè)文件名即可訪問(wèn)到該文件。
跟upload file一樣,在downloadfile時(shí)客戶(hù)端可以選擇任意Tracker Server??蛻?hù)端發(fā)送download請(qǐng)求給某個(gè)Tracker Server,必須帶上文件名信息,Tracke Server從文件名中解析出文件的Group、大小、創(chuàng)建時(shí)間等信息,然后為該請(qǐng)求選擇一個(gè)Storage Server用來(lái)服務(wù)讀請(qǐng)求。
?
2. FastDFS安裝環(huán)境及拓?fù)鋱D
如圖所示,使用FastDFS搭建一套分布式存儲(chǔ)的文件系統(tǒng),由于新版的FastDFS未提供Http功能,我們使用Nginx及fastdfs-nginx-module模塊實(shí)現(xiàn)通過(guò)Http訪問(wèn)存儲(chǔ)的內(nèi)容。Tracker Server上的Nginx通過(guò)Keepalived實(shí)現(xiàn)高可用。上傳功能使用Python客戶(hù)端實(shí)現(xiàn)。
2.1 FastDFS分布式存儲(chǔ)拓?fù)鋱D
2.2 FastDFS安裝環(huán)境
2.2.1 按照拓?fù)鋱D所示準(zhǔn)備服務(wù)器
- 兩臺(tái)Tracker Server提高系統(tǒng)可用性,避免單點(diǎn)故障,同時(shí)對(duì)于客戶(hù)端API,起到負(fù)載均衡的作用。
- 每?jī)膳_(tái)Storage Server組成一個(gè)Group??偣?個(gè)組。
- API客戶(hù)端使用Python客戶(hù)端。
- Storage Server上安裝Nginx,提供Http功能。
- Tracker Server上安裝Nginx和fastdfs-nginx-module模塊,與Tracker Server配合,為客戶(hù)端提供Http功能,為后端Storage Server上的Nginx提供反向代理和負(fù)載均衡的作用。
2.2.2 安裝環(huán)境說(shuō)明
Tracker Server、Storage Server服務(wù)由安裝包fastdfs提供,而fastdfs安裝包依賴(lài)于libfastcommon提供的庫(kù),Python客戶(hù)端依賴(lài)于fastdfs和libfastcommon提供的庫(kù),所以所有服務(wù)器均需安裝libfastcommon和fastdfs。
Storage Server服務(wù)器上的Nginx只需提供Web服務(wù)功能,用于訪問(wèn)該服務(wù)器上存儲(chǔ)的文件即可,不需安裝fastdfs-nginx-module模塊,當(dāng)然安裝也沒(méi)問(wèn)題。
Tracker Server服務(wù)器上的Nginx需要安裝fastdfs-nginx-module模塊,Tracker Server可以根據(jù)路徑獲取文件所在的Storage Server的IP,Nginx需與Tracker Server交互獲取該IP。
2.2.3 同步服務(wù)器時(shí)間,所有服務(wù)器啟用ntp或chrony服務(wù)同步時(shí)間
ntp或chrony服務(wù)的安裝配置參考我的另外一篇博客:Linux - CentOS7上的時(shí)間同步
2.2.4 下載安裝包
下載地址:
FastDFS項(xiàng)目地址:https://github.com/happyfish100
fastdfs下載地址:https://github.com/happyfish100/fastdfs/archive/V5.11.tar.gz
libfastcommon下載地址:https://github.com/happyfish100/libfastcommon/archive/V1.0.39.tar.gz
fastdfs-nginx-module下載地址:https://github.com/happyfish100/fastdfs-nginx-module/archive/V1.20.tar.gz
Nginx下載地址:http://nginx.org/download/nginx-1.12.2.tar.gz
Python客戶(hù)端下載地址:https://github.com/zhubiaook/fastdfs-python-client/archive/fdfs-python-client-v0.1.tar.gz
下載安裝包
# 創(chuàng)建一個(gè)目錄,存儲(chǔ)下載的安裝包 $ sudo mkdir /usr/local/src/fdfs $ cd /usr/local/src/fdfs# 下載fastdfs: sudo wget https://github.com/happyfish100/fastdfs/archive/V5.11.tar.gz # 下載libfastcommon sudo wget https://github.com/happyfish100/libfastcommon/archive/V1.0.39.tar.gz # 下載fastdfs-nginx-module sudo wget https://github.com/happyfish100/fastdfs-nginx-module/archive/V1.20.tar.gz # 下載Nginx sudo wget http://nginx.org/download/nginx-1.12.2.tar.gz # 下載Python客戶(hù)端 sudo wget https://github.com/zhubiaook/fastdfs-python-client/archive/fdfs-python-client-v0.1.tar.gz?
3. FastDFS分布式存儲(chǔ)搭建
3.1 所有服務(wù)器安裝libfastcommon、fastdfs
安裝libfastcommon
# 安裝依賴(lài)庫(kù) sudo yum -y install gcc-c++# 解壓 sudo tar -xf V1.0.39.tar.gz cd libfastcommon-1.0.39/# 編譯 sudo ./make.sh# 安裝 sudo ./make.sh install安裝 fastdfs
# 解壓 sudo tar -xf V5.11.tar.gz cd fastdfs-5.11# 編譯 sudo ./make.sh# 安裝 sudo ./make.sh install3.2 配置跟蹤器(Tracker Server)
兩臺(tái)Tracker Server的配置一樣。
創(chuàng)建Tracker Server數(shù)據(jù)、日志文件存儲(chǔ)路徑
sudo mkdir /data/fdfs/tracker -p修改配置文件
# 進(jìn)入配置文件目錄 $ cd /etc/fdfs# 復(fù)制配置文件 $ sudo cp tracker.conf.sample tracker.conf# 修改配置文件中的以下兩行 $ sudo vim tracker.conf base_path=/data/fdfs/tracker http.server_port=80啟動(dòng)Tracker Server服務(wù)
# 方法1: $ sudo service fdfs_trackerd start# 方法2: $ sudo /etc/init.d/fdfs_trackerd start?查看監(jiān)聽(tīng)的端口是否啟動(dòng)
$ sudo netstat -tunlp | grep 22122 tcp 0 0 0.0.0.0:22122 0.0.0.0:* LISTEN 12178/fdfs_trackerd3.3 配置存儲(chǔ)節(jié)點(diǎn)(Storage Server)
所有Storage Server的配置一樣
創(chuàng)建Storage Server數(shù)據(jù)、日志文件存儲(chǔ)路徑
# data目錄存儲(chǔ)日志文件,file目錄存儲(chǔ)上傳的文件目錄 $ sudo mkdir /data/fdfs/{storage,file} -p修改配置文件
# 進(jìn)入配置文件目錄 $ cd /etc/fdfs# 復(fù)制配置文件 $ sudo cp storage.conf.sample storage.conf# 修改配置文件以下幾行內(nèi)容 $ sudo vim storage.confgroup_name=group1 #此處填寫(xiě)所在的組,比如group1, group2, group3 ... base_path=/data/fdfs/storage store_path0=/data/fdfs/file tracker_server=192.168.0.201 tracker_server=192.168.0.202 http.server_port=80
啟動(dòng)Storage Server服務(wù)
$ sudo service fdfs_storaged start?查看監(jiān)聽(tīng)的端口
$ sudo netstat -tunlp | grep 2300 tcp 0 0 0.0.0.0:23000 0.0.0.0:* LISTEN 12964/fdfs_storaged測(cè)試Storage Server 與 Tracker Server 是否正常通信
[2018-10-12 15:49:28] DEBUG - base_path=/data/fdfs/storage, connect_timeout=30, network_timeout=60, tracker_server_count=2, 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: 0server_count=2, server_index=0tracker server is 192.168.0.201:22122group count: 2Group 1: group name = group1 disk total space = 97231 MB disk free space = 95790 MB trunk free space = 0 MB storage server count = 2 active server count = 2 storage server port = 23000 storage HTTP port = 80 store path count = 1 subdir count per path = 256 current write server index = 0 current trunk file id = 0Storage 1:id = 192.168.0.203ip_addr = 192.168.0.203 (192.168.0.203) ACTIVE...Storage 2:id = 192.168.0.204ip_addr = 192.168.0.204 (192.168.0.204) ACTIVE...Group 2: group name = group2 disk total space = 0 MB disk free space = 0 MB trunk free space = 0 MB storage server count = 2 active server count = 0 storage server port = 23000 storage HTTP port = 80 store path count = 1 subdir count per path = 256 current write server index = 0 current trunk file id = 0Storage 1:id = 192.168.0.205ip_addr = 192.168.0.205 (192.168.0.205) OFFLINE...Storage 2:id = 192.168.0.206ip_addr = 192.168.0.206 (192.168.0.206) OFFLINE...3.4 上傳、下載文件測(cè)試
到目前為止,可以使用FastDFS提供的客戶(hù)端工具進(jìn)行文件的上傳、下載、刪除等操作,在任意一臺(tái)Tracker Server或Storage Server上都安裝了這些工具,下面我們?cè)谄渲幸慌_(tái)Tracker Server上進(jìn)行文件上傳、下載的測(cè)試。
a. 配置客戶(hù)端
$ cd /etc/fdfs/ $ sudo cp client.conf.sample client.conf# 修改以下配置 $ sudo vim client.conf connect_timeout=30 base_path=/data/fdfs/client <=客戶(hù)端日志存儲(chǔ)路徑 tracker_server=192.168.0.201:22122 tracker_server=192.168.0.202:22122 http.tracker_server_port=80
b. 上傳文件
# 新建一個(gè)文件,然后將此文件上傳到FastDFS中 $ echo 'Hello World' > ~/test.html# 上傳文件 $ fdfs_upload_file /etc/fdfs/client.conf ~/test.html group1/M00/00/00/wKgAy1vAVbKAB66QAAAADAsMGmk02.html文件上傳后,返回一個(gè)文件存儲(chǔ)的路徑?group1/M00/00/00/wKgAy1vAVbKAB66QAAAADAsMGmk02.html?,路徑由以下及部分組成
組名:group1
磁盤(pán):M00
Storage Server上存儲(chǔ)路徑:00/00/wKgAy1vAVbKAB66QAAAADAsMGmk02.html
c. 下載文件
$ fdfs_download_file /etc/fdfs/client.conf group1/M00/00/00/wKgAy1vAVbKAB66QAAAADAsMGmk02.html3.5 安裝配置存儲(chǔ)節(jié)點(diǎn)(Storage Server)上的Nginx
a. 安裝Nginx
?安裝Nginx,存儲(chǔ)節(jié)點(diǎn)上的Nginx可以使用Yum安裝,也可以自己編譯安裝
方法1:使用YUM安裝
$ sudo yum -y install nginx方法2:編譯安裝
# 安裝依賴(lài)包 $ sudo yum -y install openssl-devel pcre-devel# 創(chuàng)建系統(tǒng)用戶(hù)nginx
$ useradd nginx -r# 解壓Nginx $ sudo tar -xvf nginx-1.12.2.tar.gz $ cd nginx-1.12.2# 執(zhí)行./configure,生成Makefile文件 sudo ./configure \ --prefix=/usr/share/nginx \ --sbin-path=/usr/sbin/nginx \ --modules-path=/usr/lib64/nginx/modules \ --conf-path=/etc/nginx/nginx.conf \ --error-log-path=/var/log/nginx/error.log \ --http-log-path=/var/log/nginx/access.log \--http-proxy-temp-path=/var/lib/nginx/tmp/proxy \ --http-fastcgi-temp-path=/var/lib/nginx/tmp/fastcgi \ --pid-path=/run/nginx.pid \ --lock-path=/run/lock/subsys/nginx \ --user=nginx \ --group=nginx \ --with-file-aio \ --with-http_gunzip_module \ --with-http_gzip_static_module \ --with-http_stub_status_module \ --with-pcre \ --with-stream=dynamic \ --with-stream_ssl_module \ --with-debug \ --with-http_ssl_module# 編譯 $ sudo make# 安裝 $ sudo make install
b. 配置Nginx
$ vim /etc/nginx/conf.d/fdfs.conf server {listen 80;server_name localhost;location ~ ^/group[0-9]/M00/(.*) {alias /data/fdfs/file/data/$1;} }c. 本機(jī)上訪問(wèn)文件(注意,訪問(wèn)的路徑屬于哪個(gè)組,就在哪個(gè)組下的Storage Server上測(cè)試)
$ curl http://127.0.0.1/group1/M00/00/00/wKgAy1vAVbKAB66QAAAADAsMGmk02.html Hello World3.6 安裝配置跟蹤器(Tracker Server)上的Nginx
跟蹤器上的Nginx,需要增加?fastdfs-nginx-module模塊,只能通過(guò)編譯安裝完成
a. 安裝Nginx所需的依賴(lài)包
$ sudo yum -y install pcre-devel openssl-devel zlib-develb.?解壓fastdfs-nginx-module模塊,并修改配置文件,否則Nginx編譯的時(shí)候會(huì)報(bào)錯(cuò)。
$ 解壓 $ sudo tar -xvf V1.20.tar.gz# 修改配置文件 $ sudo vim fastdfs-nginx-module-1.20/src/config ngx_module_incs="/usr/include/fastdfs /usr/include/fastcommon" CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon"c. 創(chuàng)建nginx用戶(hù)
$ sudo useradd nginx -rd. 安裝Nginx
# 解壓nginx $ sudo tar -xvf nginx-1.12.2.tar.gz# 進(jìn)入nginx源碼目錄進(jìn)行編譯安裝 $ cd nginx-1.12.2# 執(zhí)行configure $ sudo ./configure \ --prefix=/usr/share/nginx \ --sbin-path=/usr/sbin/nginx \ --modules-path=/usr/lib64/nginx/modules \ --conf-path=/etc/nginx/nginx.conf \ --error-log-path=/var/log/nginx/error.log \ --http-log-path=/var/log/nginx/access.log \--pid-path=/run/nginx.pid \ --lock-path=/run/lock/subsys/nginx \ --user=nginx \ --group=nginx \ --with-file-aio \ --with-http_gunzip_module \ --with-http_gzip_static_module \ --with-http_stub_status_module \ --with-pcre \ --with-stream=dynamic \ --with-stream_ssl_module \ --with-debug \ --with-http_ssl_module \ --add-module=../fastdfs-nginx-module-1.20/src# 編譯 $ sudo make# 安裝 $ sudo make installe. 復(fù)制fastdfs-nginx-module-1.20中的配置文件到/etc/fdfs目錄下,并進(jìn)行修改
$ sudo cp fastdfs-nginx-module-1.20/src/mod_fastdfs.conf /etc/fdfs/ $ sudo vim /etc/fdfs/mod_fastdfs.conf # 連接超時(shí)時(shí)間 connect_timeout=10 # Tracker Server tracker_server=192.168.0.201:22122 tracker_server=192.168.0.202:22122 # StorageServer 默認(rèn)端口 storage_server_port=23000 # 如果文件ID的uri中包含/group**,則要設(shè)置為true url_have_group_name = truef. 復(fù)制fastdfs-5.11目錄中的部分配置文件到/etc/fdfs目錄下
$ cd fastdfs-5.11/conf/ $ sudo cp anti-steal.jpg http.conf mime.types /etc/fdfs/g. 修改nginx配置文件
$ sudo vim /etc/nginx/conf.d/fdfs.conf server {listen 80;server_name file.zjqrkj.cn;location / {index index.html index.htm;root /data/fdfs/file/data;}location ~/group([0-9])/M00 {ngx_fastdfs_module;}error_page 500 502 503 504 /500.html;client_max_body_size 20M;keepalive_timeout 10; }h. 訪問(wèn)測(cè)試
$ curl http://192.168.0.201/group1/M00/00/00/wKgAy1vAVbKAB66QAAAADAsMGmk02.html Hello World$ curl http://192.168.0.202/group1/M00/00/00/wKgAy1vAVbKAB66QAAAADAsMGmk02.html Hello World3.7 安裝配置Keepalived,實(shí)現(xiàn)跟蹤器上的Nginx高可用
? VRRP ( Virtual Router Redundancy Protocol ) 是一種容錯(cuò)協(xié)議,它保證當(dāng)主機(jī)的下一跳路由器出現(xiàn)故障,由另外一臺(tái)路由器來(lái)代替出現(xiàn)故障的路由器進(jìn)行工作,從而保證網(wǎng)絡(luò)通信的可靠性。Keepalived 是Linux系統(tǒng)上VRRP協(xié)議的實(shí)現(xiàn),Keepalived與Nginx反向代理服務(wù)器等配合使用,實(shí)現(xiàn)高可用。
我的另外一篇博客介紹了安裝、配置過(guò)程,此處不再連篇累牘,參考:Keepalived+LVS/Nginx 實(shí)驗(yàn)
3.8 安裝Python客戶(hù)端
a. 安裝python-devel
sudo yum -y install python-develb. 解壓sudo tar -xvf fdfs-python-client-v0.1.tar.gz,并復(fù)制該目錄下的fastdfspyclient到 fastdfs-5.11源碼目錄下的client文件夾中
# 解壓 $ sudo tar -xvf fdfs-python-client-v0.1.tar.gz# 復(fù)制文件 $ sudo cp -ar fastdfs-python-client-fdfs-python-client-v0.1/fastdfspyclient fastdfs-5.11/client/c. 進(jìn)入fastdfspyclient目錄下,執(zhí)行make生成fdfspyclient.so文件
$ cd fastdfs-5.11/client/fastdfspyclient/# 執(zhí)行make $ sudo maked. 此時(shí)可以將源碼目錄下的client目錄復(fù)制到本機(jī)的其他目錄,作為Python客戶(hù)端。此處我們暫且復(fù)制到家目錄下。
cp -ar /usr/local/src/fdfs/fastdfs-5.11/client ~/e. 修改該目錄下的客戶(hù)端配置文件
$ sudo vim client/fastdfspyclient/client.conf # 日志存儲(chǔ)路徑 base_path=/data/fdfs/client # tracker server tracker_server=192.168.0.201:22122 tracker_server=192.168.0.202:22122f. 創(chuàng)建客戶(hù)端日志存儲(chǔ)路徑
$ sudo mkdir /data/fdfs/clientg. 測(cè)試,可以參照f(shuō)astdfspyclient目錄下的fdfstest.py進(jìn)行模擬測(cè)試
# 創(chuàng)建測(cè)試文件 $ echo "Something so beautiful" > ~/test.html$ cd client/fastdfspyclient/ $ python Python 2.7.5 (default, Jul 13 2018, 13:06:57) >>> import fdfspyclient as fp >>> fp.fdfs_init('client.conf') [2018-10-12 18:21:41] DEBUG - base_path=/data/fdfs/client, connect_timeout=30, network_timeout=60, tracker_server_count=2, 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: 00 >>> result, groupname, remotefilename, fileurl = fp.fdfs_upload("/home/zhubiao/test.html", None) >>> result 0 >>> fileurl 'http://192.168.0.204/group1/M00/00/00/wKgAzFvAdciAKY4iAAAAF_Cudkk79.html'?
4. 參考文檔
[博客]?用FastDFS一步步搭建文件管理系統(tǒng)
[GitHub] 官網(wǎng)FastDFS托管倉(cāng)庫(kù)
[GitHub] FastDFS Python 客戶(hù)端
?
轉(zhuǎn)載于:https://www.cnblogs.com/zhubiao/p/9753509.html
總結(jié)
以上是生活随笔為你收集整理的Linux - 搭建FastDFS分布式文件系统的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: http强制跳转https,POST请求
- 下一篇: 数据结构(算法)-线性表2(单链表)