1 簡(jiǎn)介
Fastdfs的具體介紹看這里:http://www.reibang.com/p/af10e44b0fb6
2 安裝準(zhǔn)備
名稱 | 版本 | 地址 | 作用 |
---|---|---|---|
系統(tǒng) | CentOS-7-x86_64-DVD-1708.iso | 點(diǎn)擊這里 | 系統(tǒng) |
Fastdfs | Fastdfs_v5.11 | 點(diǎn)擊這里 | 分布式系統(tǒng) |
libfastcommon | libfastcommon_1.0.36 | 點(diǎn)擊這里 | 公共 C 函數(shù)庫 |
fastdfs-nginx-module | fastdfs-nginx-module-master | 點(diǎn)擊這里 | storage節(jié)點(diǎn)http服務(wù)nginx模塊 |
nginx | nginx-1.12.2 | 點(diǎn)擊這里 | 反響代理服務(wù)器 |
此處有安裝包集合漓踢,一鍵下載:點(diǎn)擊這里
準(zhǔn)備好虛擬機(jī)和安裝運(yùn)行環(huán)境:根據(jù)實(shí)際情況自行檢查安裝
$yum -y install unzip zip #安裝解壓工具unzip
$systemctl stop firewalld.service #停止firewall
$systemctl disable firewalld.service #禁止firewall開機(jī)啟動(dòng)
備注:簡(jiǎn)單之余就關(guān)閉防火墻
安裝perl環(huán)境羊精,后續(xù)編譯fastdfs會(huì)用到
$yum -y install perl* #yum安裝perl相關(guān)支持)
$yum -y install cpan #perl需要的程序庫,需要cpan的支持
3 安裝Fastdfs
安裝流程
1 安裝依賴包gcc
2 安裝libfatscommon
3 安裝Fastdfs
4 配置Tracker
5 配置Storage
服務(wù)器規(guī)劃
跟蹤服務(wù)器(Tracker Server):192.168.64.31
存儲(chǔ)服務(wù)器(Storage Server):192.168.64.31
數(shù)據(jù)存儲(chǔ)目錄:/opt
解壓目錄:/usr/local/src
Nginx解壓目錄:/usr/local/src
1 安裝依賴包
安裝gcc編譯器,fastdfs是用c語言開發(fā)而來的。
$yum -y install gcc-c++
至此,gcc編譯器安裝OK寞埠!
2 安裝libfatscommon
解壓--->編譯--->安裝
解壓完畢進(jìn)入解壓目錄libfastcommon-1.0.36
$unzip libfastcommon-1.0.36.zip
執(zhí)行編譯和安裝
$./make
$./make install
至此libfastcommon就已經(jīng)安裝ok了,上圖中紅色框標(biāo)注的內(nèi)容---ibfastcommon.so 默認(rèn)安裝到了/usr/lib64/libfastcommon.so焊夸,但是FastDFS主程序設(shè)置的lib目錄是/usr/local/lib仁连,所以此處需要設(shè)置軟鏈接,將lib庫文件添加到usr/local/bin(用戶放置自己的可執(zhí)行程序)中
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
備注 .so -- shared object阱穗,用戶層的動(dòng)態(tài)庫 饭冬。
至此,libfatscommon安裝OK揪阶!
3 安裝Fastdfs
解壓--->編譯--->安裝
#解壓
$unzip fastdfs-5.11.zip
#進(jìn)入解壓目錄
#編譯
$./make
#安裝
$./make install
Fastdfs安裝在/etc/fdfs目錄下昌抠,此目錄如下圖所示:
安裝成功后就會(huì)生成如上的4個(gè).sample文件(示例配置文件),我們?cè)俜謩e拷貝這4個(gè)配置文件以備后用:
$cp client.conf.sample client.conf
$cp storage.conf.sample storage.conf
$cp storage_ids.conf.sample storage_ids.conf
$cp tracker.conf.sample tracker.conf
至此鲁僚,F(xiàn)astdfs安裝OK炊苫!
4 配置Tracker
首先創(chuàng)建Tracker服務(wù)器的文件路徑裁厅,即用于存儲(chǔ)Tracker的數(shù)據(jù)文件和日志文件等。此路徑在后續(xù)的Tracker文件配置中都用到
$mkdir /opt/fastdfs_tracker
編輯上一步copy的/etc/fdfs目錄下的tracker.conf配置文件侨艾,打開文件后依次做如下修改:
disabled=false #啟用配置文件(默認(rèn)啟用)
port=22122 #設(shè)置tracker的端口號(hào)执虹,通常采用22122這個(gè)默認(rèn)端口
base_path=/opt/fastdfs_tracker #設(shè)置tracker的數(shù)據(jù)文件和日志目錄
http.server_port=88 #設(shè)置http端口號(hào),默認(rèn)為8080唠梨,記住此端口號(hào)袋励,對(duì)應(yīng)于后續(xù)nginx的listen端口
配置完畢!
啟動(dòng)tracker服務(wù)器
#啟動(dòng)
$service fdfs_trackerd start
或者
$/etc/init.d/fdfs_trackerd start
關(guān)閉tracker服務(wù)器
#關(guān)閉
$service fdfs_trackerd stop
或者
$/etc/init.d/fdfs_trackerd stop
如果啟動(dòng)命令執(zhí)行成功,那么在剛才創(chuàng)建的tracker文件目錄/opt/fastdfs_tracker中就可以看到啟動(dòng)后新生成的data和logs目錄姻成,tracker服務(wù)的端口也被正常監(jiān)聽
正常啟動(dòng)后,可以將tracker設(shè)置為開機(jī)啟動(dòng)愿棋,打開/etc/rc.d/目錄科展,在rc.local中添加
service fdfs_trackerd start
,并且對(duì)rc.local進(jìn)行授權(quán)糠雨。
$chmod +x /etc/rc.d/rc.local #對(duì)rc.local進(jìn)行授權(quán)
至此才睹,Tracker配置OK!
5 配置Storage
同理甘邀,和Tracker配置流程一致琅攘。創(chuàng)建Storage服務(wù)器的文件目錄fastdfs_storage,同時(shí)比Tracker多建了一個(gè)文件存儲(chǔ)路徑目錄fastdfs_storage_data松邪,用于存放接收的文件坞琴。
$mkdir /opt/fastdfs_storage
$mkdir /opt/fastdfs_storage_data
修改目錄/etc/fdfs/storage.conf配置文件,打開文件后依次做以下修改:
disabled=false #啟用配置文件(默認(rèn)啟用)
group_name=group1 #組名逗抑,根據(jù)實(shí)際情況修改
port=23000 #設(shè)置storage的端口號(hào)剧辐,默認(rèn)是23000,同一個(gè)組的storage端口號(hào)必須一致
base_path=/opt/fastdfs_storage #設(shè)置storage數(shù)據(jù)文件和日志目錄
store_path_count=1 #存儲(chǔ)路徑個(gè)數(shù)邮府,需要和store_path個(gè)數(shù)匹配
store_path0=/opt/fastdfs_storage_data #實(shí)際文件存儲(chǔ)路徑
tracker_server=192.168.64.32:22122 #tracker 服務(wù)器的 IP地址和端口號(hào)荧关,如果是單機(jī)搭建,IP不要寫127.0.0.1褂傀,否則啟動(dòng)不成功(此處的ip是我的CentOS虛擬機(jī)ip)
http.server_port=7777 #設(shè)置 http 端口號(hào)
配置OK忍啤!
啟動(dòng)Storage服務(wù)
$service fdfs_storaged start
或者
$/etc/init.d/fdfs_storaged start
關(guān)閉Storage服務(wù)
$service fdfs_storaged stop
或者
$/etc/init.d/fdfs_storaged stop
備注:啟動(dòng)storage時(shí),要先啟動(dòng)tracker仙辟,不然無法啟動(dòng)監(jiān)視
開啟Tracker和Storage服務(wù)
如上圖同波,此時(shí)已經(jīng)正常監(jiān)聽tracker的22122端口和storage的23000端口。
確定了storage服務(wù)器啟動(dòng)成功后叠国,還有一項(xiàng)工作就是看看storage服務(wù)器是否已經(jīng)登記到 tracker服務(wù)器(也可以理解為tracker與storage是否整合成功)参萄,運(yùn)行以下命令:
$/usr/bin/fdfs_monitor /etc/fdfs/storage.conf
看到**192.168.111.11 ACTIVE **字樣,即可說明storage服務(wù)器已經(jīng)成功登記到了tracker服務(wù)器煎饼。
添加storage服務(wù)開機(jī)啟動(dòng)讹挎,打開/etc/rc.d/rc.local文件追加service fdfs_storaged start
校赤。
至此,storage服務(wù)器配置ok筒溃!
4 初步測(cè)試
測(cè)試時(shí)需要設(shè)置客戶端的配置文件马篮,編輯/etc/fdfs/client.conf文件,打開后依次做如下修改:
base_path=/opt/fastdfs_tracker #tracker服務(wù)器文件路徑
tracker_server=192.168.64.32:22122 #tracker服務(wù)器IP地址和端口號(hào)
http.tracker_server_port=88 # tracker 服務(wù)器的 http 端口號(hào)怜奖,必須和tracker的設(shè)置對(duì)應(yīng)起來
配置完畢就可以上傳文件了浑测。
執(zhí)行客戶端上傳命令:
$/usr/bin/fdfs_upload_file /etc/fdfs/client.conf note.txt
返回的路徑就只文件的存儲(chǔ)目錄,在/opt/fastdfs_storage_data目錄下歪玲,
想在web段查看上次存儲(chǔ)的文件迁央,需要安裝nginx和fastdfs-nginx-module。
至此滥崩,簡(jiǎn)單測(cè)試OK岖圈!
5 安裝fastdfs-nginx-module
fastdfs-nginx-module 作用說明
FastDFS 通過 Tracker 服務(wù)器,將文件放在 Storage 服務(wù)器存儲(chǔ)钙皮,但是同組存儲(chǔ)服務(wù)器之間需要進(jìn)入文件復(fù)制蜂科,有同步延遲的問題。假Tracker 服務(wù)器將文件上傳到了 192.168.64.32短条,上傳成功后文件ID已經(jīng)返回給客戶端导匣。此時(shí) FastDFS 存儲(chǔ)集群機(jī)制會(huì)將這個(gè)文件同步到同組存儲(chǔ) 192.168.64.33,在文件還沒有復(fù)制完成的情況下茸时,客戶端如果用這個(gè)文件 ID 在 192.168.64.33 上取文件贡定,就會(huì)出現(xiàn)文件無法訪問的錯(cuò)誤。而 fastdfs-nginx-module 可以重定向文件連接到源服務(wù)器取文件可都,避免客戶端由于復(fù)制延遲導(dǎo)致的文件無法訪問錯(cuò)誤
5.1 安裝準(zhǔn)備
在安裝nginx之前需要先安裝一些模塊依賴的lib庫:pcre-devel厕氨、zlib-devel、openssl-devel
$yum -y install pcre pcre-devel
$yum -y install zlib zlib-devel
$yum -y install openssl openssl-devel
準(zhǔn)備完畢汹粤,開始分別為tracker和storage安裝配置nginx命斧。
安裝流程
1 解壓fastdfs-nginx-module-master和nginx-1.12.2
2 ./configure配置nginx參數(shù)
3 編譯安裝
4 修改nginx的配置文件nginx.conf
5 copy http.conf和mime.types文件
6 copy mod_fastdfs.conf文件并修改參數(shù)
7 啟動(dòng)nginx
5.2 安裝storage nginx
1 ) 解壓
$unzip fastdfs-nginx-module-master.zip
$tar -zxvf nginx-1.12.2.tar.gz
2 ) ./configure配置
解壓完畢后進(jìn)入nginx目錄,在執(zhí)行./configure配置nginx參數(shù)的時(shí)候嘱兼,需要將fastdfs-nginx-moudle源碼作為模塊編譯進(jìn)去国葬,執(zhí)行以下命令:
$./configure --prefix=/usr/local/src/nginx --add-module=/usr/local/src/fastdfs-nginx-module-master/src
配置成功!
3 )編譯安裝
$make
$make install
安裝完成后再指定路徑/usr/local/src/nginx可查看到安裝的目錄
4 )修改nginx.conf
修改nginx的配置文件芹壕,打開/conf/nginx.conf文件汇四,修改http中server的listen,添加location踢涌, 具體如下:
listen 7777; #注意通孽,此處的listen對(duì)應(yīng)于/etc/fdfs/storage.conf中的http.server_port=7777
#location放在server里面
location ~/group1/M00 {
root /opt/fastdfs_storage_data/data;
ngx_fastdfs_module;
}
5 ) copy http.conf和mime.types
$cp -r /usr/local/src/fastdfs-5.05/conf/http.conf /etc/fdfs/
$cp -r /usr/local/src/fastdfs-5.05/conf/mime.types /etc/fdfs/
6 ) 配置mod_fastdfs.conf文件
將fastdfs-nginx-module-master/src/mod_fastdfs.conf拷貝到/etc/fdfs目錄下
$cp -r /usr/local/src/fastdfs-nginx-module-master/src/mod_fastdfs.conf /etc/fdfs/
編輯剛拷貝的mod_fastdfs.conf文件,打開并按順序依次編譯以下內(nèi)容:
base_path=/opt/fastdfs_storage #保存日志目錄
tracker_server=192.168.64.32:22122 #tracker服務(wù)器的IP地址以及端口號(hào)
storage_server_port=23000 #storage服務(wù)器的端口號(hào)
url_have_group_name = true #文件url中是否有 group 名
store_path0=/opt/fastdfs_storage_data # 存儲(chǔ)路徑
group_count = 3 #設(shè)置組的個(gè)數(shù)睁壁,事實(shí)上這次只使用了group1
設(shè)置group_count = 3背苦,需要在文件尾部追加這3個(gè)group setting
[group1]
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/opt/fastdfs_storage_data
[group2]
group_name=group2
storage_server_port=23000
store_path_count=1
store_path0=/opt/fastdfs_storage_data
[group3]
group_name=group3
storage_server_port=23000
store_path_count=1
store_path0=/opt/fastdfs_storage_data
7 ) 啟動(dòng)nginx
$/usr/local/src/nginx/sbin/nginx #啟動(dòng)
$/usr/local/src/nginx/sbin/nginx -s reload #重新啟動(dòng)
$/usr/local/src/nginx/sbin/nginx -s stop #停止
顯示如下信息說明nginx已啟動(dòng)成功:
通過瀏覽器看到nginx的主頁:端口為7777
5.3 安裝tracker nginx
步驟和安裝storage nginx一樣
$mkdir tracker_nginx
$cd nginx-1.12.2/
$./configure --prefix=/usr/local/src/tracker_nginx --add-module=/usr/local/src/fastdfs-nginx-module-master/src
$make
$make install
#安裝完畢互捌,修改tracker_nginx/conf/nginx.conf的配置文件
#listen端口和tracker.conf的http.server_port=88一致
#添加upstream和location :
#upstream 命令要放在http里面 server外面,location 在server里面,7777對(duì)應(yīng)于storage的server_port
listen 88;
upstream fdfs_group1 {
server 127.0.0.1:7777;
}
#location放在server里面
location /group1/M00 {
proxy_pass http://fdfs_group1;
}
#啟動(dòng)tracker_nginx
$/usr/local/src/tracker_nginx/sbin/nginx
6 HTTP測(cè)試
查看/etc/fdfs/client.conf文件配置是否正確:
base_path=/data/fastdfs_storage #日志存放路徑
tracker_server=192.168.64.32:22122 #tracker 服務(wù)器 IP 地址和端口號(hào)
http.tracker_server_port=88 # tracker 服務(wù)器的 http 端口號(hào)行剂,必須和tracker的設(shè)置對(duì)應(yīng)起來
通過客戶端命令測(cè)試上傳:
$/usr/bin/fdfs_upload_file /etc/fdfs/client.conf data/20170131.jpg
如上圖秕噪,上傳成功,通過HTTP測(cè)試文件訪問厚宰,打開瀏覽器輸入ip地址+文件名看看是否能正常訪問該圖片:
至此腌巾,HTTP測(cè)試OK!
請(qǐng)求Tracker服務(wù)器下載圖片铲觉,其實(shí)請(qǐng)求的是Tracker服務(wù)器上的nginx服務(wù)澈蝙,因?yàn)閚ginx服務(wù)的端口是88端口,而tracker服務(wù)端口是22122撵幽。
tracker上的nginx起到http訪問的反向代理作用灯荧,反向代理到group對(duì)應(yīng)的所有storage上的nginx服務(wù)〔⑵耄客戶端請(qǐng)求tracker上的nginx服務(wù)漏麦,根據(jù)配置的location /group1找到對(duì)應(yīng)的group1下所有的storage服務(wù)器上的nginx服務(wù)的ip和端口(提供下載接口)客税,然后由tracker決定使用哪臺(tái)storage况褪,最后將該storage的ngnix服務(wù)的ip和port返回給客戶端「埽客戶端拿到storage的nginx服務(wù)的ip和端口测垛,去請(qǐng)求這個(gè)nginx服務(wù),根據(jù)請(qǐng)求中的group1/M00與storage的nginx配置的
location ~/group1/M00 {
root /opt/fastdfs_storage_data/data;
ngx_fastdfs_module;
}進(jìn)行匹配秧均,然后獲取到文件的存儲(chǔ)目錄食侮,然后在根據(jù)兩級(jí)目錄和文件名來獲取到文件。
7 總結(jié)
要提前安裝好依賴包和運(yùn)行環(huán)境目胡,關(guān)閉防火墻锯七,做筆記整理資料。
8 參考資料
1.分布式文件系統(tǒng) FastDFS 5.0.5 & Linux CentOS 7 安裝配置
2.FastDFS分布式文件系統(tǒng)安裝與使用(單節(jié)點(diǎn))
3.CENTOS 7 安裝perl環(huán)境
4.Centos7網(wǎng)絡(luò)配置( 網(wǎng)關(guān)誉己、dns眉尸、ip地址配置)
5.FastDFS學(xué)習(xí)筆記
6.Centos7 Linux安裝命令
20171107