一婿失、FastDFS簡介
FastDFS是由淘寶余慶先生所開發(fā),是一個輕量級啄寡、高性能的開源分布式文件系統(tǒng)豪硅,用純C語言開發(fā),包括文件存儲挺物、文件同步懒浮、文件訪問(上傳下載)、存取負(fù)載均衡识藤、在線擴(kuò)容砚著、相同內(nèi)容只存儲一份等功能次伶,適合有大容量存儲需求的應(yīng)用或系統(tǒng),同類的分布式文件系統(tǒng)有谷歌的GFS稽穆、HDFS(Hadoop)冠王、TFS(淘寶)等。
二秧骑、FastDFS上傳流程
1版确、client詢問tracker上傳到的storage,不需要附加參數(shù)
2、tracker返回一臺可用的storage
3乎折、client直接和storage相連完成文件的上傳
三绒疗、FastDFS下載流程
1、client詢問tracker上傳到的storage,參數(shù)為文件標(biāo)識(組名和文件名)
2骂澄、tracker返回一臺可用的storage
3吓蘑、client直接和storage相連完成文件下載
四、FastDFS的單節(jié)點安裝前準(zhǔn)備
1坟冲、操作系統(tǒng):ubuntu 16.04(我的系統(tǒng)已經(jīng)配置ftp服務(wù)磨镶,ssh服務(wù))
2、安裝包:
libfastcommon-master.zip:從fastdfs提取出來的C函數(shù)庫
fastdfs-nginx-module-master.zip:storage節(jié)點http服務(wù)nginx模塊
fastdfs-master.zip:fastdfs 源碼包
fastdfs-client-java-master.zip:客戶端
nginx-1.10.0.tar.gz:nginx包
3健提、安裝包下載路徑
鏈接:https://pan.baidu.com/s/1TKAbL0ZEcExEOn0gh6Lmxg&shfl=sharepset
提取碼:92xg
五琳猫、開始安裝
1、環(huán)境搭建及核心包安裝
上傳所有安裝包至主機(jī)私痹,我習(xí)慣放在/srv/ftp
下載所需的依賴包脐嫂、工具包
#依賴包
apt-get install -y make cmake gcc g++
#解壓zip的工具包
apt-get install -y unzip
安裝libfastcommon
#解壓到 /usr/local 目錄下
unzip libfastcommon-master.zip -d /usr/local/
#編譯
cd /usr/local/libfastcommon-master
./make.sh
./make.sh install
安裝fastdfs
#解壓到/usr/local
unzip fastdfs-master.zip -d /usr/local/
#編譯
cd /usr/local/fastdfs-master
./make.sh
./make.sh install
采取默認(rèn)安裝方式,相應(yīng)的文件及目錄如下:
配置文件
2账千、配置tracker服務(wù)器
復(fù)制tracker配置文件
cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf
修改/etc/fdfs/tracker.conf
vim /etc/fdfs/tracker.conf
#修改內(nèi)容如下
disabled=false
port=22122
base_path=/fastdfs/tracker
創(chuàng)建base_path指定的目錄
mkdir -p /fastdfs/tracker
啟動tracker節(jié)點
/etc/init.d/fdfs_trackerd start
#如果顯示Starting FastDFS tracker server: 則啟動成功,否則檢查以上所有步驟是否正確
初次啟動會在/fastdfs/tracker
下創(chuàng)建log暗膜、data目錄
通過ps -ef | grep fdfs_trackerd
查看tracker進(jìn)程是否啟動
3匀奏、配置storage服務(wù)器
復(fù)制storage配置文件并重命名
cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf
修改storage.conf
配置文件
#啟用配置文件
disabled=false
#storage端口
port=23000
#數(shù)據(jù)和日志存儲的根目錄
base_path=/fastdfs/storage
#第一個存儲目錄
store_path0=/fastdfs/storage
#tracker服務(wù)器的ip和端口
tracker_server=192.168.0.129:22122
#http訪問端口,此時需要和后面的 nginx監(jiān)聽器端口一致
http.server_port=8888
http.server_port=8888
務(wù)必記住学搜,后面配置nginx要用到
創(chuàng)建storage數(shù)據(jù)目錄
mkdir -p /fastdfs/storage
啟動storage節(jié)點
/etc/init.d/fdfs_storaged start
#如果顯示Starting FastDFS storage server: 則啟動成功娃善,否則檢查以上所有步驟是否正確
初次啟動會在/fastdfs/storage
下創(chuàng)建log、data目錄
通過ps -ef | grep fdfs_storaged
查看storage進(jìn)程是否啟動
4瑞佩、文件上傳測試
修改tracker節(jié)點客戶端配置文件
cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf
修改client.conf
文件
base_path=/fastdfs/tracker
tracker_server=192.168.0.129:22122
執(zhí)行文件上傳命令
#進(jìn)入fastdfs-master目錄下
cd /usr/local/fastdfs-master
#執(zhí)行命令会放,我放了一張圖片在/srv/ftp下
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf /srv/ftp/shinelon.jpg
返回一個路徑,group1/M00/00/00/wKgAgV1hRhmAFPa1AAhfXWePhdo571.jpg
表示上傳成功
5钉凌、安裝fastdfs-nginx-module
解壓fastdfs-nginx-module-master.zip
unzip fastdfs-nginx-module-master.zip -d /usr/local/
安裝nginx(此處極易出錯務(wù)必小心謹(jǐn)慎)
解壓nginx到/usr/local
tar -xzvf nginx-1.10.0.tar.gz -C /usr/local/
此時編譯nginx會報錯,需要安裝pcre工具和zlib工具包
#我是將所有工具包下載并放置在/srv/ftp下
wget https://ftp.pcre.org/pub/pcre/pcre-8.40.tar.gz
wget http://zlib.net/zlib-1.2.11.tar.gz
將上述兩個工具包解壓至/usr/local/
tar -xzvf pcre-8.40.tar.gz -C /usr/local/
tar -xzvf zlib-1.2.11.tar.gz -C /usr/local/
進(jìn)入pcre-8.40
并編譯
cd /usr/local/pcre-8.40
#編譯1
./configure
#編譯2
make && make install
進(jìn)入zlib-1.2.11
并編譯
cd /usr/local/zlib-1.2.11
#編譯1
./configure
#編譯2
make && make install
安裝編譯時需要用到的庫和工具
apt-get install build-essential libtool gcc automake autoconf make
編譯nginx(需要將fastdfs-nginx-module-master源碼作為模塊編譯進(jìn)去)
注意:進(jìn)入nginx-1.10.0目錄執(zhí)行以下命令咧最,執(zhí)行完后會生成nginx目錄,并不是命令寫錯了
cd /usr/local/nginx-1.10.0/
./configure --prefix=/usr/local/nginx --sbin-path=/usr/bin/nginx --add-module=/usr/local/fastdfs-nginx-module-master/src
make && make install
未報錯即為編譯成功
執(zhí)行
make && make install
編譯復(fù)制
fastdfs-nginx-module
源碼中的配置文件到/etc/fdfs
并修改
cp /usr/local/fastdfs-nginx-modulemaster/src/mod_fastdfs.conf /etc/fdfs/
vim /etc/fdfs/mod_fastdfs.conf
#修改如下
#客戶端訪問文件超時(單位:秒)
connect_timeout=10
#臨時目錄
base_path=/tmp
#tracker節(jié)點IP和端口
tracker_server=192.168.0.129:22122
#storage節(jié)點端口
storage_server_port=23000
#組名
group_name=group1
#訪問鏈接前綴加上組名
url_have_group_name=true
#文件真實存儲路徑
store_path0=/fastdfs/storage
復(fù)制fastdfs部分配置文件到/etc/fdfs
目錄
cd /usr/local/fastdfs-master/conf
cp http.conf mime.types /etc/fdfs/
在/fastdfs/storage
文件存儲目錄下創(chuàng)建軟連接,將其鏈接到實際存儲數(shù)據(jù)的目錄
shell
ln -s /fastdfs/storage/data/ /fastdfs/storage/data/M00
配置nginx訪問storage文件
vim /usr/local/nginx/conf/nginx.conf
注意將#user nobody;修改為user root防止后面運(yùn)行出錯
#修改處1
user root;
worker_processes 1;
#修改處2矢沿,前面提過務(wù)必記住的端口號
server {
listen 8888;
server_name localhost;
#修改處3滥搭, 添加以下代碼
location ~/group([0-9])/M00 {
ngx_fastdfs_module;
}
啟動nginx服務(wù)
/usr/bin/nginx
#返回ngx_http_fastdfs_set pid=xxx,即為成功
測試fastdfs訪問文件
http://192.168.0.129:8888/group1/M00/00/00/wKgAgV1hRhmAFPa1AAhfXWePhdo571.jpg
自此捣鲸,單機(jī)版FastDFS分布式文件系統(tǒng)搭建成功瑟匆,下一篇介紹java操作FastDFS