go-fastdfs安裝以及python調(diào)用

上一篇Centos7下FastDFS從安裝到入門中講述了FastDFS的安裝以及概念奉瘤。

但是這個服務(wù)不是基于http上傳的方式盗温,還需要特定去安裝客戶端卖局,這個就不是很方便了吼驶。尤其在win10系統(tǒng)使用python去安裝客戶端是挺費勁的。

然后我從github找到了這個基于http上傳的go-fastdfs风钻,更加方便使用骡技。無需安裝客戶端布朦,python可以直接通過request進行http上傳文件是趴。

Github倉庫

https://github.com/sjqzhang/go-fastdfs

查看當(dāng)前的relases版本

訪問 https://github.com/sjqzhang/go-fastdfs/releases

可以看到當(dāng)前最新的版本就是 v1.3.1 富雅,下面使用Centos7系統(tǒng)來安裝看看肛搬。

使用Centos7安裝使用

下載并安裝

mkdir go-fastdfs # 創(chuàng)建一個工作目錄
cd go-fastdfs # 進入工作目錄
# 下載二進制執(zhí)行文件
wget --no-check-certificate  https://github.com/sjqzhang/go-fastdfs/releases/download/v1.3.1/fileserver -O fileserver 
chmod +x fileserver # 設(shè)置文件權(quán)限
./fileserver & # 啟動服務(wù)

執(zhí)行啟動如下:

[root@centos7 go-fastdfs]# ls
conf  data  files  fileserver  log  static
[root@centos7 go-fastdfs]# 
[root@centos7 go-fastdfs]# 
[root@centos7 go-fastdfs]# ./fileserver &
[1] 2180
[root@centos7 go-fastdfs]# Listen on :8080

[root@centos7 go-fastdfs]# 

這樣默認是啟動8080端口號作為服務(wù)的温赔。

curl命令上傳

# 隨便寫一個txt文件陶贼,用來測試上傳
[root@centos7 go-fastdfs]# echo 123 > 1.txt
[root@centos7 go-fastdfs]# 
# 使用curl直接上傳請求骇窍,可以看到返回了file id信息
[root@centos7 go-fastdfs]# curl -F file=@1.txt http://192.168.196.129:8080/upload
http://192.168.196.129:8080/group1/default/20190814/11/09/7/1.txt
[root@centos7 go-fastdfs]# 

python3使用request庫執(zhí)行上傳

[root@centos7 go-fastdfs]# ipython3
Python 3.7.1 (default, Feb 18 2019, 11:27:32) 
Type 'copyright', 'credits' or 'license' for more information
IPython 7.2.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]: ls                                                                               
1.txt  conf/  data/  files/  fileserver*  log/  static/

In [2]: import requests                                                                  

In [3]: url = 'http://192.168.196.129:8080/upload'                                       

In [4]: files = {'file': open('1.txt', 'rb')}                                            

In [5]: options={'output':'json','path':'','scene':''} #參閱瀏覽器上傳的選項             

In [6]: r = requests.post(url,data=options, files=files)                                 

In [7]: print(r.text)                                                                    
{"url":"http://192.168.196.129:8080/group1/default/20190814/11/09/7/1.txt","md5":"ba1f2511fc30423bdbb183fe33f3dd0f","path":"/group1/default/20190814/11/09/7/1.txt","domain":"http://192.168.196.129:8080","scene":"default","size":4,"mtime":1565752146,"scenes":"default","retmsg":"","retcode":0,"src":"/group1/default/20190814/11/09/7/1.txt"}

In [8]:     

下載文件

[root@centos7 ~]# wget http://192.168.196.129:8080/group1/default/20190814/11/09/7/1.txt
--2019-08-14 11:14:47--  http://192.168.196.129:8080/group1/default/20190814/11/09/7/1.txt
Connecting to 192.168.196.129:8080... connected.
HTTP request sent, awaiting response... 200 OK
Length: 4 [application/octet-stream]
Saving to: ‘1.txt’

100%[====================================================================================================================================>] 4           --.-K/s   in 0s      

2019-08-14 11:14:47 (636 KB/s) - ‘1.txt’ saved [4/4]

[root@centos7 ~]# cat 1.txt 
123
[root@centos7 ~]# 

可以看到驱犹,go-fastdfs不會去修改文件的存儲命名雄驹,其實這個也是很方便的。

查看日志

# 進入log目錄下
[root@centos7 go-fastdfs]# cd log/
# 可以看到有三個日志文件
[root@centos7 log]# ls
access.log  fileserver.log  tusd.log
[root@centos7 log]# tail -f access.log 
2019-08-14 11:09:06 [INF] [fileserver.go:3772] [main.HttpHandler.ServeHTTP.func1] [Access] 2019/08/14 - 11:09:06 | map[Access-Control-Allow-Headers:[Authorization, Content-Type, Depth, User-Agent, X-File-Size, X-Requested-With, X-Requested-By, If-Modified-Since, X-File-Name, X-File-Type, Cache-Control, Origin] Access-Control-Allow-Methods:[GET, POST, OPTIONS, PUT, DELETE] Access-Control-Allow-Origin:[*] Access-Control-Expose-Headers:[Authorization]] | 44.204373ms | 192.168.196.129 | POST | 200 |/upload
2019-08-14 11:12:29 [INF] [fileserver.go:3772] [main.HttpHandler.ServeHTTP.func1] [Access] 2019/08/14 - 11:12:29 | map[Access-Control-Allow-Headers:[Authorization, Content-Type, Depth, User-Agent, X-File-Size, X-Requested-With, X-Requested-By, If-Modified-Since, X-File-Name, X-File-Type, Cache-Control, Origin] Access-Control-Allow-Methods:[GET, POST, OPTIONS, PUT, DELETE] Access-Control-Allow-Origin:[*] Access-Control-Expose-Headers:[Authorization]] | 475.454μs | 192.168.196.129 | POST | 200 |/upload
2019-08-14 11:14:47 [INF] [fileserver.go:3772] [main.HttpHandler.ServeHTTP.func1] [Access] 2019/08/14 - 11:14:47 | map[Accept-Ranges:[bytes] Access-Control-Allow-Headers:[Authorization, Content-Type, Depth, User-Agent, X-File-Size, X-Requested-With, X-Requested-By, If-Modified-Since, X-File-Name, X-File-Type, Cache-Control, Origin] Access-Control-Allow-Methods:[GET, POST, OPTIONS, PUT, DELETE] Access-Control-Allow-Origin:[*] Access-Control-Expose-Headers:[Authorization] Content-Disposition:[attachment] Content-Length:[4] Content-Type:[application/octet-stream] Last-Modified:[Wed, 14 Aug 2019 03:09:06 GMT]] | 401.005μs | 192.168.196.129 | GET | 200 |/group1/default/20190814/11/09/7/1.txt
^C
[root@centos7 log]# 
[root@centos7 log]# tail fileserver.log 
2019-08-14 11:06:00 [INF] [fileserver.go:3394] [main.init.0] succes init log access
2019-08-14 11:06:00 [INF] [fileserver.go:386] [main.ParseConfig] {:8080 [http://192.168.196.129:8080] group1 false true [] 1800 true  true [] [] default {abc@163.com abc smtp.163.com:25}  false 600 0 true http://192.168.196.129:8080 md5 7 false [127.0.0.1] false false true false true false  false true true 0}
2019-08-14 11:06:00 [INF] [fileserver.go:388] [main.ParseConfig] config parse success
2019-08-14 11:09:06 [INF] [fileserver.go:2077] [main.(*Server).SaveUploadFile] upload: files/default/20190814/11/09/7/1.txt
2019-08-14 11:12:29 [INF] [fileserver.go:2077] [main.(*Server).SaveUploadFile] upload: files/default/20190814/11/12/7/1.txt
[root@centos7 log]# 
[root@centos7 log]# tail -f tusd.log 
^C
[root@centos7 log]# 

如果只是單純查看文件上傳的記錄,只需要看fileserver.log即可。

查看相關(guān)配置

[root@centos7 go-fastdfs]# cd conf/
[root@centos7 conf]# ls
cfg.json
[root@centos7 conf]# vim cfg.json 
[root@centos7 conf]# cat cfg.json 
{
    "綁定端號": "端口",
    "addr": ":8080",
    "PeerID": "集群內(nèi)唯一,請使用0-9的單字符莉给,默認自動生成",
    "peer_id": "7",
    "本主機地址": "本機http地址,默認自動生成(注意端口必須與addr中的端口一致)廉沮,必段為內(nèi)網(wǎng)滞时,自動生成不為內(nèi)網(wǎng)請自行修改遥皂,下同",
    "host": "http://192.168.196.129:8080",
    "集群": "集群列表,注意為了高可用演训,IP必須不能是同一個,同一不會自動備份样悟,且不能為127.0.0.1,且必須為內(nèi)網(wǎng)IP窟她,默認自動生成",
    "peers": ["http://192.168.196.129:8080"],
    "組號": "用于區(qū)別不同的集群(上傳或下載)與support_group_manage配合使用,帶在下載路徑中",
    "group": "group1",
    "是否支持按組(集群)管理,主要用途是Nginx支持多集群": "默認不支持,不支持時路徑為http://10.1.5.4:8080/action,支持時為http://10.1.5.4:8080/group(配置中的group參數(shù))/action,action為動作名震糖,如status,delete,sync等",
    "support_group_manage": false,
    "是否合并小文件": "默認不合并,合并可以解決inode不夠用的情況(當(dāng)前對于小于1M文件)進行合并",
    "enable_merge_small_file": false,
    "允許后綴名": "允許可以上傳的文件后綴名吊说,如jpg,jpeg,png等。留空允許所有雅宾。",
    "extensions": [],
    "重試同步失敗文件的時間": "單位秒",
    "refresh_interval": 1800,
    "是否自動重命名": "默認不自動重命名,使用原文件名",
    "rename_file": false,
    "是否支持web上傳,方便調(diào)試": "默認支持web上傳",
    "enable_web_upload": true,
    "是否支持非日期路徑": "默認支持非日期路徑,也即支持自定義路徑,需要上傳文件時指定path",
    "enable_custom_path": true,
    "下載域名": "用于外網(wǎng)下載文件的域名,不包含http://",
    "download_domain": "",
    "場景列表": "當(dāng)設(shè)定后贯吓,用戶指的場景必項在列表中宣决,默認不做限制(注意:如果想開啟場景認功能尊沸,格式如下:'場景名:googleauth_secret' 如 default:N7IET373HB2C5M6D ",
    "scenes": [],
    "默認場景": "默認default",
    "default_scene": "default",
    "是否顯示目錄": "默認顯示,方便調(diào)試用,上線時請關(guān)閉",
    "show_dir": true,
    "郵件配置": "",
    "mail": {
        "user": "abc@163.com",
        "password": "abc",
        "host": "smtp.163.com:25"
    },
    "告警接收郵件列表": "接收人數(shù)組",
    "alarm_receivers": [],
    "告警接收URL": "方法post,參數(shù):subject,message",
    "alarm_url": "",
    "下載是否需帶token": "真假",
    "download_use_token": false,
    "下載token過期時間": "單位秒",
    "download_token_expire": 600,
    "是否自動修復(fù)": "在超過1億文件時出現(xiàn)性能問題,取消此選項屁商,請手動按天同步蜡镶,請查看FAQ",
    "auto_repair": true,
    "文件去重算法md5可能存在沖突,默認md5": "sha1|md5",
    "file_sum_arithmetic": "md5",
    "管理ip列表": "用于管理集的ip白名單,",
    "admin_ips": ["127.0.0.1"],
    "是否啟用遷移": "默認不啟用",
    "enable_migrate": false,
    "文件是否去重": "默認去重",
    "enable_distinct_file": true,
    "是否開啟跨站訪問": "默認開啟",
    "enable_cross_origin": true,
    "是否開啟Google認證,實現(xiàn)安全的上傳屯伞、下載": "默認不開啟",
    "enable_google_auth": false,
    "認證url": "當(dāng)url不為空時生效,注意:普通上傳中使用http參數(shù) auth_token 作為認證參數(shù), 在斷點續(xù)傳中通過HTTP頭Upload-Metadata中的auth_token作為認證參數(shù),認證流程參考認證架構(gòu)圖",
    "auth_url": "",
    "下載是否認證": "默認不認證(注意此選項是在auth_url不為空的情況下生效)",
    "enable_download_auth": false,
    "默認是否下載": "默認下載",
    "default_download": true,
    "本機是否只讀": "默認可讀可寫",
    "read_only": false,
    "是否開啟斷點續(xù)傳": "默認開啟",
    "enable_tus": true,
    "同步單一文件超時時間(單位秒)": "默認為0,程序自動計算,在特殊情況下末融,自已設(shè)定",
    "sync_timeout": 0
}
    [root@centos7 conf]# 

可以看到配置項還是挺多的,不過目前的需求就是能夠上傳、下載文件即可酪刀,所以其他配置有需要的時候上github倉庫中查閱配置即可眼滤。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末荧库,一起剝皮案震驚了整個濱河市场刑,隨后出現(xiàn)的幾起案子牵现,更是在濱河造成了極大的恐慌邀桑,老刑警劉巖丑慎,帶你破解...
    沈念sama閱讀 221,406評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件照弥,死亡現(xiàn)場離奇詭異悔常,居然都是意外死亡,警方通過查閱死者的電腦和手機残邀,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,395評論 3 398
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人扼菠,你說我怎么就攤上這事。” “怎么了浦楣?”我有些...
    開封第一講書人閱讀 167,815評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長弱贼。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,537評論 1 296
  • 正文 為了忘掉前任聂受,我火速辦了婚禮,結(jié)果婚禮上炮叶,老公的妹妹穿的比我還像新娘碗旅。我一直安慰自己,他們只是感情好镜悉,可當(dāng)我...
    茶點故事閱讀 68,536評論 6 397
  • 文/花漫 我一把揭開白布祟辟。 她就那樣靜靜地躺著,像睡著了一般侣肄。 火紅的嫁衣襯著肌膚如雪旧困。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,184評論 1 308
  • 那天稼锅,我揣著相機與錄音吼具,去河邊找鬼。 笑死矩距,一個胖子當(dāng)著我的面吹牛拗盒,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播锥债,決...
    沈念sama閱讀 40,776評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼陡蝇,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了哮肚?” 一聲冷哼從身側(cè)響起登夫,我...
    開封第一講書人閱讀 39,668評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎允趟,沒想到半個月后恼策,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,212評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡拼窥,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,299評論 3 340
  • 正文 我和宋清朗相戀三年戏蔑,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鲁纠。...
    茶點故事閱讀 40,438評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡总棵,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出改含,到底是詐尸還是另有隱情情龄,我是刑警寧澤,帶...
    沈念sama閱讀 36,128評論 5 349
  • 正文 年R本政府宣布,位于F島的核電站骤视,受9級特大地震影響鞍爱,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜专酗,卻給世界環(huán)境...
    茶點故事閱讀 41,807評論 3 333
  • 文/蒙蒙 一睹逃、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧祷肯,春花似錦沉填、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,279評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蒋纬,卻和暖如春猎荠,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蜀备。 一陣腳步聲響...
    開封第一講書人閱讀 33,395評論 1 272
  • 我被黑心中介騙來泰國打工关摇, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人琼掠。 一個月前我還...
    沈念sama閱讀 48,827評論 3 376
  • 正文 我出身青樓拒垃,卻偏偏與公主長得像,于是被迫代替她去往敵國和親瓷蛙。 傳聞我的和親對象是個殘疾皇子悼瓮,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,446評論 2 359

推薦閱讀更多精彩內(nèi)容