Linux-安裝FastDFS

1.創(chuàng)建fastdfs安裝目錄棒仍,我的是在etc/fastdfs。
首先在etc目錄下的hosts文件添加一行IP地址
192.168.1.14 file.gaci.com
如果要本機(jī)訪問(wèn)虛擬機(jī)军拟,在C:\Windows\System32\drivers\etc\hosts中同樣增加一行
2.下載安裝libfastcommon
我這邊使用的是wget命令:
wget https://github.com/happyfish100/libfastcommon/archive/V1.0.7.tar.gz
如果遇到wget未找到命令,
使用命令:yum -y install wget
再次使用上面的wget命令下載安裝包

image.png

image.png

接下來(lái)解壓安裝包到當(dāng)前目錄下
image.png

解壓成功,接下來(lái)就是編譯,安裝
image.png

使用./make.sh命令可能會(huì)出現(xiàn)如下錯(cuò)誤
image.png

使用如下的命令
yum -y install zlib zlib-devel pcre pcre-devel gcc gcc-c++ openssl openssl-devel libevent libevent-devel perl unzip net-tools wget
image.png

然后再使用./make.sh命令
image.png

使用./make.sh install進(jìn)行安裝
image.png

libfastcommon.so 安裝到/usr/lib64/libfastcommon.so姐仅,但是FastDFS主程序設(shè)置的lib目錄是/usr/local/lib,所以需要?jiǎng)?chuàng)建軟鏈接刻盐。

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

image.png

3.下載安裝fastDFS
我使用的是wget命令
wget https://github.com/happyfish100/fastdfs/archive/V5.05.tar.gz
image.png

解壓fastdfs
image.png

編譯fastdfs
image.png

安裝fastdfs
image.png

image.png

默認(rèn)安裝方式安裝后的相應(yīng)文件與目錄
  A掏膏、服務(wù)腳本:
/etc/init.d/fdfs_storaged
/etc/init.d/fdfs_tracker
  B、配置文件(這三個(gè)是作者給的樣例配置文件) :
/etc/fdfs/client.conf.sample
/etc/fdfs/storage.conf.sample
/etc/fdfs/tracker.conf.sample
  C敦锌、命令工具在 /usr/bin/ 目錄下:
fdfs_appender_test
fdfs_appender_test1
fdfs_append_file
fdfs_crc32
fdfs_delete_file
fdfs_download_file
fdfs_file_info
fdfs_monitor
fdfs_storaged
fdfs_test
fdfs_test1
fdfs_trackerd
fdfs_upload_appender
fdfs_upload_file
stop.sh
restart.sh

FastDFS 服務(wù)腳本設(shè)置的 bin 目錄是 /usr/local/bin馒疹, 但實(shí)際命令安裝在 /usr/bin/ 下。
  兩種方式:
  》 一是修改FastDFS 服務(wù)腳本中相應(yīng)的命令路徑乙墙,也就是把 /etc/init.d/fdfs_storaged 和 /etc/init.d/fdfs_tracker 兩個(gè)腳本中的 /usr/local/bin 修改成 /usr/bin颖变。
    # vim fdfs_trackerd
    使用查找替換命令進(jìn)統(tǒng)一修改:%s+/usr/local/bin+/usr/bin
    # vim fdfs_storaged
    使用查找替換命令進(jìn)統(tǒng)一修改:%s+/usr/local/bin+/usr/bin


image.png

二是建立 /usr/bin 到 /usr/local/bin 的軟鏈接,我是用這種方式听想。

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

image.png

4.配置FastDFS跟蹤器(Tracker)
FastDFS配置文件詳解
http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=1941456&extra=page%3D1%26filter%3Ddigest%26digest%3D1
目錄進(jìn)入 /etc/fdfs腥刹,復(fù)制 FastDFS 跟蹤器樣例配置文件 tracker.conf.sample,并重命名為 tracker.conf汉买。
image.png

修改tracker.conf文件

配置文件是否不生效衔峰,false 為生效

disabled=false

提供服務(wù)的端口

port=22122

Tracker 數(shù)據(jù)和日志目錄地址(根目錄必須存在,子目錄會(huì)自動(dòng)創(chuàng)建)base_path=/usr/fastdfs/tracker

HTTP 服務(wù)端口http.server_port=80

創(chuàng)建tracker基礎(chǔ)數(shù)據(jù)目錄,即base_path對(duì)應(yīng)的目錄
Mkdir -p /usr/fastdfs/tracker

防火墻打開跟蹤端口
進(jìn)入etc/sysconfig/iptables


image.png

添加如下端口行:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22122 -j ACCEPT
重啟防火墻:

啟動(dòng)tracker
可以用這種方式啟動(dòng)

/etc/init.d/fdfs_trackerd start

也可以用這種方式啟動(dòng),前提是上面創(chuàng)建了軟鏈接垫卤,后面都用這種方式

service fdfs_trackerd start

查看 FastDFS Tracker 是否已成功啟動(dòng) 威彰,22122端口正在被監(jiān)聽,則算是Tracker服務(wù)安裝成功葫男。


image.png

關(guān)閉Tracker命令:
service fdfs_trackerd stop
設(shè)置Tracker開機(jī)啟動(dòng)

chkconfig fdfs_trackerd on

或者:

vim /etc/rc.d/rc.local

加入配置:
/etc/init.d/fdfs_trackerd start

tracker server 目錄及文件結(jié)構(gòu)
Tracker服務(wù)啟動(dòng)成功后抱冷,會(huì)在base_path下創(chuàng)建data、logs兩個(gè)目錄梢褐。目錄結(jié)構(gòu)如下:
${base_path}
|__data
| |__storage_groups.dat:存儲(chǔ)分組信息
| |__storage_servers.dat:存儲(chǔ)服務(wù)器列表
|__logs
| |__trackerd.log: tracker server 日志文件

5.配置FastDFS 存儲(chǔ) (Storage)
進(jìn)入 /etc/fdfs 目錄旺遮,復(fù)制 FastDFS 存儲(chǔ)器樣例配置文件 storage.conf.sample,并重命名為 storage.conf


image.png

編輯storage.conf文件

配置文件是否不生效盈咳,false 為生效

disabled=false

指定此 storage server 所在 組(卷)

group_name=group1

storage server 服務(wù)端口

port=23000

心跳間隔時(shí)間耿眉,單位為秒 (這里是指主動(dòng)向 tracker server 發(fā)送心跳)

heart_beat_interval=30

Storage 數(shù)據(jù)和日志目錄地址(根目錄必須存在,子目錄會(huì)自動(dòng)生成)base_path=/usr/fastdfs/storage

存放文件時(shí) storage server 支持多個(gè)路徑鱼响。這里配置存放文件的基路徑數(shù)目鸣剪,通常只配一個(gè)目錄。

store_path_count=1

逐一配置 store_path_count 個(gè)路徑丈积,索引號(hào)基于 0筐骇。

如果不配置 store_path0,那它就和 base_path 對(duì)應(yīng)的路徑一樣江滨。store_path0=/usr/fastdfs/file

FastDFS 存儲(chǔ)文件時(shí)铛纬,采用了兩級(jí)目錄。這里配置存放文件的目錄個(gè)數(shù)唬滑。

如果本參數(shù)只為 N(如: 256)告唆,那么 storage server 在初次運(yùn)行時(shí),會(huì)在 store_path 下自動(dòng)創(chuàng)建 N * N 個(gè)存放文件的子目錄晶密。

subdir_count_per_path=256

tracker_server 的列表 擒悬,會(huì)主動(dòng)連接 tracker_server

有多個(gè) tracker server 時(shí),每個(gè) tracker server 寫一行tracker_server=file.gaci.com:22122

允許系統(tǒng)同步的時(shí)間段 (默認(rèn)是全天) 稻艰。一般用于避免高峰同步產(chǎn)生一些問(wèn)題而設(shè)定懂牧。

sync_start_time=00:00
sync_end_time=23:59

訪問(wèn)端口

http.server_port=80
創(chuàng)建Storage基礎(chǔ)數(shù)據(jù)目錄,對(duì)應(yīng)base_path目錄


image.png

防火墻中打開存儲(chǔ)器端口(默認(rèn)的 23000)
vi /etc/sysconfig/iptables

添加如下端口行:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 23000 -j ACCEPT

重啟防火墻:

啟動(dòng)storage
注意:?jiǎn)?dòng)Storage前確保Tracker是啟動(dòng)的连锯。初次啟動(dòng)成功归苍,會(huì)在 /ljzsg/fastdfs/storage 目錄下創(chuàng)建 data、 logs 兩個(gè)目錄运怖。
可以用這種方式啟動(dòng)

/etc/init.d/fdfs_storaged start

也可以用這種方式,后面都用這種

service fdfs_storaged start

查看 Storage 是否成功啟動(dòng)夏伊,23000 端口正在被監(jiān)聽摇展,就算 Storage 啟動(dòng)成功。
netstat -unltp|grep fdfs


image.png

關(guān)閉Storage命令:
service fdfs_storaged stop

查看Storage和Tracker是否在通信:
/usr/bin/fdfs_monitor /etc/fdfs/storage.conf


image.png

設(shè)置 Storage 開機(jī)啟動(dòng)

chkconfig fdfs_storaged on

或者:

vim /etc/rc.d/rc.local

加入配置:
/etc/init.d/fdfs_storaged start
6.文件上傳測(cè)試
修改 Tracker 服務(wù)器中的客戶端配置文件

cd /etc/fdfs

cp client.conf.sample client.conf

vi client.conf

修改如下配置即可溺忧,其它默認(rèn)

Client 的數(shù)據(jù)和日志目錄

base_path=/usr/fastdfs/client

Tracker端口

tracker_server=file.gaci.com:22122

創(chuàng)建/usr/fastdfs下的client文件


image.png

上傳測(cè)試
在linux內(nèi)部執(zhí)行如下命令上傳 name.jpg 圖片
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf /usr/name.jpg


image.png

group1/M00/00/00/wKgBEl4LBr2ADhGoAAAw9HW8yuU088.jpg
返回的文件ID由group咏连、存儲(chǔ)目錄盯孙、兩級(jí)子目錄、fileid祟滴、文件后綴名(由客戶端指定振惰,主要用于區(qū)分文件類型)拼接而成骑晶。
image.png

上面將文件上傳成功了仔雷,但我們無(wú)法下載惕稻。因此安裝Nginx作為服務(wù)器以支持Http方式訪問(wèn)文件肘迎。同時(shí)宋梧,后面安裝FastDFS的Nginx模塊也需要Nginx。
安裝步驟見:Linux-安裝nginx
7.FastDFS 配置 Nginx 模塊
fastdfs-nginx-module 模塊說(shuō)明
FastDFS 通過(guò) Tracker 服務(wù)器,將文件放在 Storage 服務(wù)器存儲(chǔ), 但是同組存儲(chǔ)服務(wù)器之間需要進(jìn)行文件復(fù)制, 有同步延遲的問(wèn)題。
  假設(shè) Tracker 服務(wù)器將文件上傳到了 192.168.51.128,上傳成功后文件 ID已經(jīng)返回給客戶端。
  此時(shí) FastDFS 存儲(chǔ)集群機(jī)制會(huì)將這個(gè)文件同步到同組存儲(chǔ) 192.168.51.129,在文件還沒(méi)有復(fù)制完成的情況下,客戶端如果用這個(gè)文件 ID 在 192.168.51.129 上取文件,就會(huì)出現(xiàn)文件無(wú)法訪問(wèn)的錯(cuò)誤。
而 fastdfs-nginx-module 可以重定向文件鏈接到源服務(wù)器取文件,避免客戶端由于復(fù)制延遲導(dǎo)致的文件無(wú)法訪問(wèn)錯(cuò)誤。
1.安裝配置nginx模塊
下載 fastdfs-nginx-module、解壓
這里為啥這么長(zhǎng)一串呢据某,因?yàn)樽钚掳娴膍aster與當(dāng)前nginx有些版本問(wèn)題扳还。

wget https://github.com/happyfish100/fastdfs-nginx-module/archive/5e5f3566bbfa57418b5506aaefbe107a42c9fcb1.zip

解壓

unzip 5e5f3566bbfa57418b5506aaefbe107a42c9fcb1.zip

重命名

mv fastdfs-nginx-module-5e5f3566bbfa57418b5506aaefbe107a42c9fcb1 fastdfs-nginx-module-master

使用wget命令下載


image.png

解壓


image.png

重命名
image.png

配置nginx
在nginx中添加模塊
先停掉nginx服務(wù)
/usr/local/nginx/sbin/nginx -s stop

進(jìn)入nginx解壓包目錄


image.png

添加模塊


image.png

重新編譯,安裝
make && make install

查看Nginx的模塊
/usr/local/nginx/sbin/nginx -V


image.png

復(fù)制 fastdfs-nginx-module 源碼中的配置文件到/etc/fdfs 目錄寡喝, 并修改


image.png

修改如下配置糙俗,其它默認(rèn)

連接超時(shí)時(shí)間

connect_timeout=10

Tracker Server

tracker_server=file.gaci.com:22122

StorageServer 默認(rèn)端口

storage_server_port=23000

如果文件ID的uri中包含/group**,則要設(shè)置為true

url_have_group_name = true

Storage 配置的store_path0路徑预鬓,必須和storage.conf中的一致store_path0=/usr/fastdfs/file

復(fù)制 FastDFS 的部分配置文件到/etc/fdfs 目錄

cd /usr/fastdfs/fastdfs-5.05/conf

cp anti-steal.jpg http.conf mime.types /etc/fdfs/

配置nginx巧骚,修改nginx.conf
vi /usr/local/nginx/conf/nginx.conf

修改配置,其它的默認(rèn)
在80端口下添加fastdfs-nginx模塊
location ~/group([0-9])/M00 {
ngx_fastdfs_module;
}


image.png

在/usr/fastdfs/file 文件存儲(chǔ)目錄下創(chuàng)建軟連接格二,將其鏈接到實(shí)際存放數(shù)據(jù)的目錄劈彪,這一步可以省略。
ln -s /usr/fastdfs/file/data/ /usr/fastdfs/file/data/M00


image.png

啟動(dòng)nginx
打印處如下就算配置成功
image.png

8.JavaAPI
待續(xù)...
9.權(quán)限控制

前面使用nginx支持http方式訪問(wèn)文件顶猜,但所有人都能直接訪問(wèn)這個(gè)文件服務(wù)器了沧奴,所以做一下權(quán)限控制。
FastDFS的權(quán)限控制是在服務(wù)端開啟token驗(yàn)證长窄,客戶端根據(jù)文件名滔吠、當(dāng)前unix時(shí)間戳、秘鑰獲取token挠日,在地址中帶上token參數(shù)即可通過(guò)http方式訪問(wèn)文件疮绷。

服務(wù)端開啟token驗(yàn)證
修改http.conf

vi /etc/fdfs/http.conf

設(shè)置為true表示開啟token驗(yàn)證http.anti_steal.check_token=true
設(shè)置token失效的時(shí)間單位為秒(s)
http.anti_steal.token_ttl=1800
密鑰,跟客戶端配置文件的fastdfs.http_secret_key保持一致http.anti_steal.secret_key=FASTDFS147258369
如果token檢查失敗肆资,返回的頁(yè)面http.anti_steal.token_check_fail=/gaci/fastdfs/page/403.html
記得重啟服務(wù)矗愧。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市郑原,隨后出現(xiàn)的幾起案子唉韭,更是在濱河造成了極大的恐慌,老刑警劉巖犯犁,帶你破解...
    沈念sama閱讀 221,576評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件属愤,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡酸役,警方通過(guò)查閱死者的電腦和手機(jī)住诸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門驾胆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人贱呐,你說(shuō)我怎么就攤上這事丧诺。” “怎么了奄薇?”我有些...
    開封第一講書人閱讀 168,017評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵驳阎,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我馁蒂,道長(zhǎng)呵晚,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,626評(píng)論 1 296
  • 正文 為了忘掉前任沫屡,我火速辦了婚禮饵隙,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘沮脖。我一直安慰自己金矛,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,625評(píng)論 6 397
  • 文/花漫 我一把揭開白布倘潜。 她就那樣靜靜地躺著绷柒,像睡著了一般。 火紅的嫁衣襯著肌膚如雪涮因。 梳的紋絲不亂的頭發(fā)上废睦,一...
    開封第一講書人閱讀 52,255評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音养泡,去河邊找鬼嗜湃。 笑死,一個(gè)胖子當(dāng)著我的面吹牛澜掩,可吹牛的內(nèi)容都是我干的购披。 我是一名探鬼主播,決...
    沈念sama閱讀 40,825評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼肩榕,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼刚陡!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起株汉,我...
    開封第一講書人閱讀 39,729評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤筐乳,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后乔妈,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蝙云,經(jīng)...
    沈念sama閱讀 46,271評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,363評(píng)論 3 340
  • 正文 我和宋清朗相戀三年路召,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了勃刨。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片波材。...
    茶點(diǎn)故事閱讀 40,498評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖身隐,靈堂內(nèi)的尸體忽然破棺而出廷区,到底是詐尸還是另有隱情,我是刑警寧澤抡医,帶...
    沈念sama閱讀 36,183評(píng)論 5 350
  • 正文 年R本政府宣布躲因,位于F島的核電站,受9級(jí)特大地震影響忌傻,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜搞监,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,867評(píng)論 3 333
  • 文/蒙蒙 一水孩、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧琐驴,春花似錦俘种、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,338評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至牢酵,卻和暖如春悬包,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背馍乙。 一陣腳步聲響...
    開封第一講書人閱讀 33,458評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工布近, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人丝格。 一個(gè)月前我還...
    沈念sama閱讀 48,906評(píng)論 3 376
  • 正文 我出身青樓撑瞧,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親显蝌。 傳聞我的和親對(duì)象是個(gè)殘疾皇子预伺,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,507評(píng)論 2 359