任務目标:搭建fastdfs
目标環境:ubuntu1804
安裝環境
安裝libfastcommon
#下載下傳并且解壓 $ wget https://github.com/happyfish100/libfastcommon/archive/master.zip $ unzip master.zip #編譯 $ ./make.sh #安裝 $ ./make.sh install |
建立軟連接配接
# ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so # ln -s /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so # ln -s /usr/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so # ln -s /usr/lib64/libfdfsclient.so /usr/lib/libfdfsclient.so |
安裝FastDFS
#下載下傳并且解壓 $ wget https://github.com/happyfish100/fastdfs/archive/V5.11.zip $ unzip V5.11.zip #編譯 $ ./make.sh #安裝 $ ./make.sh install |
建立軟連結:
# ln -s /usr/bin/fdfs_trackerd /usr/local/bin
# ln -s /usr/bin/fdfs_storaged /usr/local/bin
# ln -s /usr/bin/stop.sh /usr/local/bin
# ln -s /usr/bin/restart.sh /usr/local/bin |
配置服務
建立目錄結構:
配置Tracker、Storage、Client、HTTP服務:
進入/etc/fdfs目錄。會看到三個.sample字尾的檔案,均是作者給我們的示例檔案,我們需要将其中的tracker.conf.sample檔案改為tracker.conf配置檔案并修改它
cd /etc/fdfs ls cp tracker.conf.sample tracker.conf # 配置跟蹤檔案 vi tracker.conf # 進入conf檔案 |
啟動:/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf
配置Storage服務
cd /etc/fdfs cp storage.conf.sample storage.conf # 修改存儲路徑 vi storage.conf # 修改存儲檔案 |
啟動服務,檢視監聽:
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart netstat -unltp|grep fdfs #檢視服務 |
配置Client服務:
cd /etc/fdfs cp client.conf.sample client.conf #修改用戶端路徑檔案 vi client.conf |
配置HTTP服務:
測試Tracker 和 Storage 服務通信:
/usr/bin/fdfs_monitor /etc/fdfs/storage.conf |
安裝nginx
配置nginx
[email protected]:/software/nginx-1.10.1# ls auto CHANGES CHANGES.ru conf configure contrib html LICENSE Makefile man objs README src [email protected]:/software/nginx-1.10.1# ./configure --add-module=/software/fastdfs-nginx-module-master/src |
編譯:
[email protected]:/software/nginx-1.10.1# make |
出錯:
cc1: all warnings being treated as errors objs/Makefile:467: recipe for target 'objs/src/core/ngx_murmurhash.o' failed make[1]: *** [objs/src/core/ngx_murmurhash.o] Error 1 make[1]: Leaving directory '/software/nginx-1.10.1' Makefile:8: recipe for target 'build' failed make: *** [build] Error 2 |
解決:[email protected]:/software/nginx-1.10.1# vi objs/Makefile
出錯:
/usr/include/fastdfs/fdfs_define.h:15:27: fatal error: common_define.h: No such file or directory |
解決:
[email protected]:/software/nginx-1.10.1# vi ../fastdfs-nginx-module-master/src/config
編譯成功:
安裝:
[email protected]:/software/nginx-1.10.1# make install |
安裝目錄:
啟動nginx:
檢視nginx程序:
配置mod-fastdfs.conf,并拷貝到/etc/fdfs檔案目錄下:
以下是編輯内容:
把fastdfs-5.05下面的配置中還沒有存在/etc/fdfs中的拷貝進去:
配置Nginx,編輯nginx.config
由于我們配置了group1/M00的通路,我們需要建立一個group1檔案夾,并建立M00到data的軟連結。
重新開機nginx:
測試上傳圖檔及浏覽器顯示
補充修改(更換項目目錄以及IP位址)
目錄:
storage.conf
mod_fastdfs.conf
Nginx.conf
常用指令
啟動:
$ sudo /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf
$ sudo /usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
關閉fastdfs:
killall fdfs_trackered
killall fdfs_storaged
檢視運作狀态:$ sudo netstat -unltp|grep fdfs
監控狀态:fdfs_monitor /etc/fdfs/storage.conf
上傳檔案:/usr/bin/fdfs_upload_file /etc/fdfs/client.conf /opt/02.jpg
啟動nginx:$ sudo /usr/local/nginx/sbin/nginx
測試上傳:fdfs_test /etc/fdfs/client.conf upload test.txt
概念
什麼是主從檔案
主從檔案是指檔案ID有關聯的檔案,一個主檔案可以對應多個從檔案。
主檔案ID = 主檔案名 + 主檔案擴充名
從檔案ID = 主檔案名 + 從檔案字尾名 + 從檔案擴充名
使用主從檔案的一個典型例子:以圖檔為例,主檔案為原始圖檔,從檔案為該圖檔的一張或多張縮略圖。
FastDFS中的主從檔案隻是在檔案ID上有聯系。FastDFS server端沒有記錄主從檔案對應關系,是以删除主檔案,FastDFS不會自動删除從檔案。
删除主檔案後,從檔案的級聯删除,需要由應用端來實作。
主檔案及其從檔案均存放到同一個group中。
主從檔案的生成順序:
1)先上傳主檔案(如原檔案),得到主檔案ID
2)然後上傳從檔案(如縮略圖),指定主檔案ID和從檔案字尾名(當然還可以同時指定從檔案擴充名),得到從檔案ID
Python & fastdfs
安裝(https://github.com/jefforeilly/fdfs_client-py)
- $ git clone https://github.com/jefforeilly/fdfs_client-py.git
- $ sudo python3 setup.py install
- $ pip3 install mutagen
- 測試
1. import fdfs_client.client module 2. instantiate class Fdfs_client 3. call memeber functions >>> from fdfs_client.client import * >>> client = Fdfs_client('/etc/fdfs/client.conf') >>> ret = client.upload_by_filename('test') |