前言
FastDFS 是用 c 語言編寫的一款開源的分布式文件系統(tǒng)。FastDFS 為互聯(lián)網(wǎng)量身定制, 充分考慮了冗余備份、負(fù)載均衡、線性擴(kuò)容等機(jī)制,并注重高可用、高性能等指標(biāo),使用 FastDFS 很容易搭建一套高性能的文件服務(wù)器集群提供文件上傳、下載等服務(wù)。
FastDFS 架構(gòu)包括 Tracker server 和 Storage server??蛻舳苏埱?Tracker server 進(jìn)行文 件上傳、下載,通過 Tracker server 調(diào)度最終由 Storage server 完成文件上傳和下載。
Tracker server 作用是負(fù)載均衡和調(diào)度,通過 Tracker server 在文件上傳時可以根據(jù)一些 策略找到 Storage server 提供文件上傳服務(wù)??梢詫?tracker 稱為追蹤服務(wù)器或調(diào)度服務(wù) 器。
Storage server 作用是文件存儲,客戶端上傳的文件最終存儲在 Storage 服務(wù)器上, Storageserver 沒有實現(xiàn)自己的文件系統(tǒng)而是利用操作系統(tǒng) 的文件系統(tǒng)來管理文件??梢詫?storage 稱為存儲服務(wù)器。
我使用的是Ubantu安裝的FastDFS,并且是在剛剛裝的虛擬機(jī)上安裝,期間出現(xiàn)了很多的問題,請過多方面查找原因,終于將FastDFS與Nginx安裝并測試成功,下面我就將我的步驟和出現(xiàn)的錯誤完整的記錄下來。
一、安裝Git
我使用git下載安裝的一些依賴包。
apt-get install git
二、克隆libfastcommon依賴庫
我都將下載下來的庫統(tǒng)一先放到了/home/user/下載/中了,這樣便于我查找這些文件。
git clone https://github.com/happyfish100/libfastcommon.git
如果是下載下來的需要對libfastcommon-master.zip這個文件進(jìn)行解壓縮。
unzip libfastcommon-master.zip
三、安裝 libfastcommon依賴庫
首先進(jìn)入下載好的libfastcommon依賴庫目錄。
cd /home/user/下載/libfastcommon
然后:
./make.sh
我這里直接編譯成功了沒有出現(xiàn)問題,再然后:
./make.sh install
編譯通過后,在32位Ubantu中會安裝在/usr/lib/中,在64位會在/usr/lib64/,我的是64位,所以在/usr/lib64/中。

四、配置環(huán)境變量和軟鏈接
軟鏈接就是在另一個位置建立一個同步的鏈接,然后根據(jù)自己的操作系統(tǒng),需要執(zhí)行以下命令:
export LD_LIBRARY_PATH=/usr/lib64/
ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so
五、安裝FastDFS
如果不用Git下載的話也可以直接去下載FastDFS。

下載完后執(zhí)行以下命令:
tar -zxvf fastdfs-5.11.tar.gz
解壓完后進(jìn)入目錄后編譯:
./make.sh
./make.sh install
安裝完成之后默認(rèn)安裝在/etc/fdfs/中,并會生成這四個文件:
tracker.conf.sample
client.conf.sample
storage.conf.sample
storage_ids.conf.sample
之后可以在這個基礎(chǔ)上直接改名,也可以復(fù)制之后再修改這些配置文件。
· 改名,需要先修改配置文件的權(quán)限:
chmod 777 tracker.conf.sample
mv tracker.conf.sample tracker.conf
chmod 777 client.conf.sample
mv client.conf.sample client.conf
chmod 777 storage.conf.sample
mv storage.conf.sample storage.conf
chmod 777 storage_ids.conf.sample
mv storage_ids.conf.sample storage_ids.conf
·復(fù)制文件:
sudo cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf
sudo cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf
sudo cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf
sudo cp /etc/fdfs/storage_ids.conf.sample /etc/fdfs/storage_ids.conf
六、配置跟蹤服務(wù)器的tracker的配置文件
首先建立一個文件夾fastdfs/tracker,我的這個文件夾建立在/home/python/中,這個文件夾其實建立在哪里都行。
mkdir –p /home/python/fastdfs/tracker
然后編輯tracker.conf這個配置文件,如果沒有安裝vim編輯器需要先安裝vim編輯器,在編輯配置文件。
apt install vim
vi tracker.conf
# the base path to store data and log files
base_path=/home/python/fastdfs/tracker
# HTTP port on this tracker server
http.server_port=8090
然后再去修改storage.conf,在/home/python/fastdfs/目錄中創(chuàng)建目錄 storage。
mkdir –p /home/python/fastdfs/storage
然后編輯配置文件,這里先查看當(dāng)前虛擬機(jī)的IP地址。
vi storage.conf
group_name=group1
store_path0=/home/python/fastdfs/storage
base_path=/home/python/fastdfs/storage
tracker_server=自己虛擬機(jī)的IP地址:22122
http.server_port=8888
繼續(xù)修改client.conf
base_path=/home/python/fastdfs/tracker
tracker_server=自己虛擬機(jī)的IP地址:22122
http.tracker_server_port=8888
#include http.conf
注意,#include http.conf 這句,原配置文件中有2個#,刪掉一個。
這里可以先暫時不修改http.conf這個配置文件,如果想改也可以直接改了,這個文件在fastdfs-5.11的安裝路徑中,/home/user/下載/fastdfs-5.11/conf/http.conf。
http.anti_steal.token_check_fail=/home/fastdfs/anti-steal.jpg
之后將下面這兩個文件復(fù)制到etc/fdfs/下。
cp http.conf /etc/fdfs/http.conf
cp mime.types /etc/fdfs/mime.types
七、啟動服務(wù),測試是否安裝成功
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf
# 檢查是否啟動成功, 啟動成功之后會看見
ps aux|grep tracker
ps aux|grep storage

注意上述測試需要配置后相應(yīng)的路徑,如果沒有配置后會報一些錯誤,我這里都配置了所以沒有出現(xiàn)錯誤,如果出錯把相應(yīng)的路徑配置上后再次執(zhí)行一遍就好。
八、上傳文件測試
準(zhǔn)備一張圖片在你的電腦上,位置隨意。
fdfs_test /etc/fdfs/client.conf upload /home/user/下載/1.jpg

上傳成功之后會在這里看到里兩個文件,一個是xxx.jpg,另一個是xxx_big.jpg,類似于
M00/00/00/rBIK6VcaP0aARXXvAAHrUgHEviQ394.jpg,如果看到這個說明上傳成功了。
但這些文件在哪里呢,他在/home/python/fastdfs/storage/data/下,M00/00/00/就是文件的坐標(biāo),進(jìn)入/home/python/fastdfs/storage/data/00/00/就能找到這個文件了。但你會發(fā)現(xiàn)生成了4個文件。

這是因為
fdfs_test和fdfs_test1是FastDFS自帶的測試程序,會對一個文件上傳兩次,分別作為主文件和從文件。返回的文件ID也是兩個。 并且會上傳文件附加屬性,storage server上會生成4個文件。
九、刪除文件
刪除文件需要完整的group_name。
fdfs_delete_file /etc/fdfs/client.conf group1/M00/00/00/wKgSslVkLFOAWOw_AADfP3RIu5Y687_big.jpg
十、關(guān)閉fadtDFS
killall fdfs_trackerd
killall fdfs_storaged
十一、重啟fastDFS
先重啟tracker
/usr/local/bin/.restart.sh /usr/local/bin/fdfs_trackerd /etc/fdfs/tracker.conf
在重啟storage
/usr/local/bin/.restart.sh /usr/local/bin/fdfs_storaged /etc/fdfs/storage.conf
十二、接下來就是配置Nginx了
看下一篇文章吧~
首次在虛擬機(jī)上配置nginx