【Java實(shí)戰(zhàn)項(xiàng)目】Migo商城2.0 圖片服務(wù)器的搭建與使用 五

來(lái)源:一葉知秋
作者:知秋

這里簡(jiǎn)單說(shuō)下fastdfs的說(shuō)明搭建使用丐重,回頭專門出附章來(lái)講這塊的api和各種配置,這里就來(lái)過(guò)簡(jiǎn)易版的拱层,能進(jìn)行開(kāi)發(fā)就可弥臼。

什么是FastDFS

FastDFS是一個(gè)開(kāi)源的輕量級(jí)分布式文件系統(tǒng)。它解決了大數(shù)據(jù)量存儲(chǔ)和負(fù)載均衡等問(wèn)題根灯。特別適合以中小文件(建議范圍:4KB< file_size <500MB)為載體的在線服務(wù)径缅,如相冊(cè)網(wǎng)站、視頻網(wǎng)站等等烙肺。

FastDFS是用c語(yǔ)言編寫的一款開(kāi)源的分布式文件系統(tǒng)纳猪。FastDFS為互聯(lián)網(wǎng)量身定制,充分考慮了冗余備份桃笙、負(fù)載均衡氏堤、線性擴(kuò)容等機(jī)制,并注重高可用、高性能等指標(biāo)鼠锈,使用FastDFS很容易搭建一套高性能的文件服務(wù)器集群提供文件上傳拘悦、下載等服務(wù)。

FastDFS的設(shè)計(jì)理念

和現(xiàn)有的類Google FS分布式文件系統(tǒng)相比黔姜,FastDFS的架構(gòu)和設(shè)計(jì)理念有其獨(dú)到之處耘柱,主要體現(xiàn)在輕量級(jí)分組方式對(duì)等結(jié)構(gòu)三個(gè)方面同欠。

輕量級(jí)

FastDFS只有兩個(gè)角色:Tracker serverStorage server样傍。Tracker server作為中心結(jié)點(diǎn),其主要作用是負(fù)載均衡和調(diào)度铺遂。

Tracker server在內(nèi)存中記錄分組Storage server的狀態(tài)等信息衫哥,不記錄文件索引信息,占用的內(nèi)存量很少襟锐。另外撤逢,客戶端(應(yīng)用)和Storage server訪問(wèn)Tracker server時(shí),Tracker server掃描內(nèi)存中的分組和Storage server信息捌斧,然后給出應(yīng)答笛质。由此可以看出Tracker server非常輕量化,不會(huì)成為系統(tǒng)瓶頸捞蚂。

FastDFS中的Storage server在其他文件系統(tǒng)中通常稱作Trunk serverDataserver妇押。Storage server直接利用OS的文件系統(tǒng)存儲(chǔ)文件。FastDFS不會(huì)對(duì)文件進(jìn)行分塊存儲(chǔ)姓迅,客戶端上傳的文件和Storage server上的文件一一對(duì)應(yīng)敲霍。

眾所周知,大多數(shù)網(wǎng)站都需要存儲(chǔ)用戶上傳的文件丁存,如圖片肩杈、視頻、電子文檔等解寝。出于降低帶寬和存儲(chǔ)成本的考慮扩然,網(wǎng)站通常都會(huì)限制用戶上傳的文件大小,例如圖片文件不能超過(guò)5MB聋伦、視頻文件不能超過(guò)100MB等夫偶。我認(rèn)為,對(duì)于互聯(lián)網(wǎng)應(yīng)用觉增,文件分塊存儲(chǔ)沒(méi)有多大的必要兵拢。它既沒(méi)有帶來(lái)多大的好處,又增加了系統(tǒng)的復(fù)雜性逾礁。FastDFS不對(duì)文件進(jìn)行分塊存儲(chǔ)说铃,與支持文件分塊存儲(chǔ)的DFS相比,更加簡(jiǎn)潔高效,并且完全能滿足絕大多數(shù)互聯(lián)網(wǎng)應(yīng)用的實(shí)際需要腻扇。

FastDFS中债热,客戶端上傳文件時(shí),文件ID不是由客戶端指定衙解,而是由Storage server生成后返回給客戶端的阳柔。文件ID中包含了組名焰枢、文件相對(duì)路徑文件名蚓峦,Storage server可以根據(jù)文件ID直接定位到文件。因此FastDFS集群中根本不需要存儲(chǔ)文件索引信息济锄,這是FastDFS比較輕量級(jí)的一個(gè)例證暑椰。而其他文件系統(tǒng)則需要存儲(chǔ)文件索引信息,這樣的角色通常稱作NameServer荐绝。其中mogileFS采用MySQL數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)文件索引以及系統(tǒng)相關(guān)的信息,其局限性顯而易見(jiàn)召夹,MySQL將成為整個(gè)系統(tǒng)的瓶頸。

FastDFS輕量級(jí)的另外一個(gè)體現(xiàn)是代碼量較小婶溯。最新的V2.0包括了C客戶端API褐筛、FastDHT客戶端APIPHP extension等渔扎,代碼行數(shù)不到5.2萬(wàn)行晃痴。

分組方式

Google FS都支持文件冗余備份愧旦,例如Google FS笤虫、TFS的備份數(shù)是3酬凳。一個(gè)文件存儲(chǔ)到哪幾個(gè)存儲(chǔ)結(jié)點(diǎn)宁仔,通常采用動(dòng)態(tài)分配的方式。采用這種方式煎谍,一個(gè)文件存儲(chǔ)到的結(jié)點(diǎn)是不確定的呐粘。舉例說(shuō)明,文件備份數(shù)是3五芝,集群中有A谤辜、B、C脯倚、D四個(gè)存儲(chǔ)結(jié)點(diǎn)推正。文件1可能存儲(chǔ)在A植榕、B炒瘸、C三個(gè)結(jié)點(diǎn)顷扩,文件2可能存儲(chǔ)在B隘截、C婶芭、D三個(gè)結(jié)點(diǎn),文件3可能存儲(chǔ)在A、B贵扰、D三個(gè)結(jié)點(diǎn)。

FastDFS采用了分組存儲(chǔ)方式舞丛。集群由一個(gè)或多個(gè)組構(gòu)成,集群存儲(chǔ)總?cè)萘繛榧褐兴薪M的存儲(chǔ)容量之和吨凑。一個(gè)組由一臺(tái)或多臺(tái)存儲(chǔ)服務(wù)器組成鸵钝,同組內(nèi)的多臺(tái)Storage server之間是互備關(guān)系,同組存儲(chǔ)服務(wù)器上的文件是完全一致的韧献。文件上傳锤窑、下載渊啰、刪除等操作可以在組內(nèi)任意一臺(tái)Storage server上進(jìn)行。類似木桶短板效應(yīng)嚷那,一個(gè)組的存儲(chǔ)容量為該組內(nèi)存儲(chǔ)服務(wù)器容量最小的那個(gè)魏宽,由此可見(jiàn)組內(nèi)存儲(chǔ)服務(wù)器的軟硬件配置最好是一致的队询。采用分組存儲(chǔ)方式的好處是靈活、可控性較強(qiáng)。比如上傳文件時(shí)丑蛤,可以由客戶端直接指定上傳到的組叠聋。一個(gè)分組的存儲(chǔ)服務(wù)器訪問(wèn)壓力較大時(shí),可以在該組增加存儲(chǔ)服務(wù)器來(lái)擴(kuò)充服務(wù)能力(縱向擴(kuò)容)盏阶。當(dāng)系統(tǒng)容量不足時(shí)晒奕,可以增加組來(lái)擴(kuò)充存儲(chǔ)容量(橫向擴(kuò)容)。采用這樣的分組存儲(chǔ)方式名斟,可以使用FastDFS對(duì)文件進(jìn)行管理脑慧,使用主流的Web serverApache、nginx等進(jìn)行文件下載。

對(duì)等結(jié)構(gòu)

FastDFS集群中的Tracker server也可以有多臺(tái),Tracker serverStorage server均不存在單點(diǎn)問(wèn)題。Tracker server之間是對(duì)等關(guān)系,組內(nèi)的Storage server之間也是對(duì)等關(guān)系斥赋。傳統(tǒng)的Master-Slave結(jié)構(gòu)中的Master是單點(diǎn)蹬挤,寫操作僅針對(duì)Master蹋嵌。如果Master失效,需要將Slave提升為Master船响,實(shí)現(xiàn)邏輯會(huì)比較復(fù)雜篷帅。和Master-Slave結(jié)構(gòu)相比,對(duì)等結(jié)構(gòu)中所有結(jié)點(diǎn)的地位是相同的,每個(gè)結(jié)點(diǎn)都是Master瘾杭,不存在單點(diǎn)問(wèn)題

FastDFS的架構(gòu)

FastDFS的系統(tǒng)架構(gòu) 如圖:

從圖中可以看出棘催,Tracker server之間相互獨(dú)立郑叠,不存在直接聯(lián)系。

客戶端和Storage server主動(dòng)連接Tracker serverStorage server主動(dòng)向Tracker server報(bào)告其狀態(tài)信息,包括磁盤剩余空間瓤狐、文件同步狀況批幌、文件上傳下載次數(shù)等統(tǒng)計(jì)信息芬首。Storage server會(huì)連接集群中所有的Tracker server,向他們報(bào)告自己的狀態(tài)。Storage server啟動(dòng)一個(gè)單獨(dú)的線程來(lái)完成對(duì)一臺(tái)Tracker server的連接和定時(shí)報(bào)告。需要說(shuō)明的是定页,一個(gè)組包含的Storage server不是通過(guò)配置文件設(shè)定的押桃,而是通過(guò)Tracker server獲取到的葵萎。

不同組的Storage server之間不會(huì)相互通信,同組內(nèi)的Storage server之間會(huì)相互連接進(jìn)行文件同步唱凯。Storage server采用binlog文件記錄文件上傳羡忘、刪除等更新操作。binlog中只記錄文件名磕昼,不記錄文件內(nèi)容卷雕。
? 文件同步只在同組內(nèi)的Storage server之間進(jìn)行,采用push方式票从,即源頭服務(wù)器同步給目標(biāo)服務(wù)器漫雕。只有源頭數(shù)據(jù)才需要同步,備份數(shù)據(jù)并不需要再次同步峰鄙,否則就構(gòu)成環(huán)路了浸间。有個(gè)例外,就是新增加一臺(tái)Storage server時(shí)吟榴,由已有的一臺(tái)Storage server將已有的所有數(shù)據(jù)(包括源頭數(shù)據(jù)和備份數(shù)據(jù))同步給該新增服務(wù)器魁蒜。
?
Storage server中由專門的線程根據(jù)binlog進(jìn)行文件同步。為了最大程度地避免相互影響以及出于系統(tǒng)簡(jiǎn)潔性考
慮,Storage server對(duì)組內(nèi)除自己以外的每臺(tái)服務(wù)器都會(huì)啟動(dòng)一個(gè)線程來(lái)進(jìn)行文件同步兜看。

文件同步采用增量同步方式锥咸,系統(tǒng)記錄已同步的位置(binlog文件偏移量)到標(biāo)識(shí)文件中。標(biāo)識(shí)文件名格式:
{dest storage IP}_{port}.mark铣减,例如:192.168.1.14_23000.mark她君。

文件上傳和下載的交互過(guò)程
文件上傳流程

接下來(lái)我們一起看一下文件上傳和下載的交互過(guò)程。文件上傳流程的步驟如下

  1. Client詢問(wèn)Tracker server上傳到的Storage server葫哗;
  2. Tracker server返回一臺(tái)可用的Storage server缔刹,返回的數(shù)據(jù)為該Storage server的IP地址和端口;
  3. Client直接和該Storage server建立連接劣针,進(jìn)行文件上傳校镐,Storage server返回新生成的文件ID,文件上傳結(jié)束捺典。

再啰嗦點(diǎn)細(xì)節(jié):

選擇tracker server

當(dāng)集群中不止一個(gè)tracker server時(shí)鸟廓,由于tracker之間是完全對(duì)等的關(guān)系,客戶端在upload文件時(shí)可以任意選擇一個(gè)trakcer襟己。

選擇存儲(chǔ)的group

當(dāng)tracker接收到upload file的請(qǐng)求時(shí)引谜,會(huì)為該文件分配一個(gè)可以存儲(chǔ)該文件的group,支持如下選擇group的規(guī)則: 1. Round robin擎浴,所有的group間輪詢 2. Specified group员咽,指定某一個(gè)確定的group 3. Load balance,剩余存儲(chǔ)空間多多group優(yōu)先

選擇storage server

當(dāng)選定group后贮预,tracker會(huì)在group內(nèi)選擇一個(gè)storage server給客戶端贝室,支持如下選擇storage的規(guī)則: 1. Round robin,在group內(nèi)的所有storage間輪詢 2. First server ordered by ip仿吞,按ip排序 3. First server ordered by priority滑频,按優(yōu)先級(jí)排序(優(yōu)先級(jí)在storage上配置)

選擇storage path

當(dāng)分配好storage server后,客戶端將向storage發(fā)送寫文件請(qǐng)求唤冈,storage將會(huì)為文件分配一個(gè)數(shù)據(jù)存儲(chǔ)目錄峡迷,支持如下規(guī)則: 1. Round robin,多個(gè)存儲(chǔ)目錄間輪詢 2. 剩余存儲(chǔ)空間最多的優(yōu)先

生成Fileid

選定存儲(chǔ)目錄之后你虹,storage會(huì)為文件生一個(gè)Fileid凉当,由storage server ip、文件創(chuàng)建時(shí)間售葡、文件大小、文件crc32和一個(gè)隨機(jī)數(shù)拼接而成忠藤,然后將這個(gè)二進(jìn)制串進(jìn)行base64編碼挟伙,轉(zhuǎn)換為可打印的字符串。

選擇兩級(jí)目錄

當(dāng)選定存儲(chǔ)目錄之后,storage會(huì)為文件分配一個(gè)fileid尖阔,每個(gè)存儲(chǔ)目錄下有兩級(jí)256*256的子目錄贮缅,storage會(huì)按文件fileid進(jìn)行兩次hash(猜測(cè)),路由到其中一個(gè)子目錄介却,然后將文件以fileid為文件名存儲(chǔ)到該子目錄下谴供。

生成文件名

當(dāng)文件存儲(chǔ)到某個(gè)子目錄后,即認(rèn)為該文件存儲(chǔ)成功齿坷,接下來(lái)會(huì)為該文件生成一個(gè)文件名桂肌,文件名由group、存儲(chǔ)目錄永淌、兩級(jí)子目錄崎场、fileid、文件后綴名(由客戶端指定遂蛀,主要用于區(qū)分文件類型)拼接而成谭跨。

客戶端上傳文件后存儲(chǔ)服務(wù)器將文件ID返回給客戶端,此文件ID用于以后訪問(wèn)該文件的索引信息李滴。文件索引信息包括:組名螃宙,虛擬磁盤路徑,數(shù)據(jù)兩級(jí)目錄所坯,文件名谆扎。

文件同步

寫文件時(shí),客戶端將文件寫至group內(nèi)一個(gè)storage server即認(rèn)為寫文件成功包竹,storage server寫完文件后燕酷,會(huì)由后臺(tái)線程將文件同步至同group內(nèi)其他的storage server

每個(gè)storage寫文件后周瞎,同時(shí)會(huì)寫一份binlog苗缩,binlog里不包含文件數(shù)據(jù),只包含文件名等元信息声诸,這份binlog用于后臺(tái)同步酱讶,storage會(huì)記錄向group內(nèi)其他storage同步的進(jìn)度,以便重啟后能接上次的進(jìn)度繼續(xù)同步彼乌;進(jìn)度以時(shí)間戳的方式進(jìn)行記錄泻肯,所以最好能保證集群內(nèi)所有server的時(shí)鐘保持同步。

storage的同步進(jìn)度會(huì)作為元數(shù)據(jù)的一部分匯報(bào)到tracker上慰照,tracker在選擇讀storage的時(shí)候會(huì)以同步進(jìn)度作為參考灶挟。

比如一個(gè)group內(nèi)有A、B毒租、C三個(gè)storage server稚铣,A向C同步到進(jìn)度為T1 (T1以前寫的文件都已經(jīng)同步到B上了),B向C同步到時(shí)間戳為T2(T2 > T1),tracker接收到這些同步進(jìn)度信息時(shí)惕医,就會(huì)進(jìn)行整理耕漱,將最小的那個(gè)做為C的同步時(shí)間戳,本例中T1即為C的同步時(shí)間戳為T1(即所有T1以前寫的數(shù)據(jù)都已經(jīng)同步到C上了)抬伺;同理螟够,根據(jù)上述規(guī)則,tracker會(huì)為A峡钓、B生成一個(gè)同步時(shí)間戳妓笙。

文件下載流程
  1. Client詢問(wèn)Tracker server可以下載指定文件的Storage server,參數(shù)為文件ID(包含組名和文件名)椒楣;
  2. Tracker server返回一臺(tái)可用的Storage server给郊;
  3. Client直接和該Storage server建立連接,完成文件下載
文件同步延遲問(wèn)題的提出

客戶端將一個(gè)文件上傳到一臺(tái)Storage server后捧灰,文件上傳工作就結(jié)束了淆九。由該Storage server根據(jù)binlog中的上傳記錄將這個(gè)文件同步到同組的其他Storage server。這樣的文件同步方式是異步方式毛俏,異步方式帶來(lái)了文件同步延遲的問(wèn)題炭庙。新上傳文件后,在尚未被同步過(guò)去的Storage server上訪問(wèn)該文件煌寇,會(huì)出現(xiàn)找不到文件的現(xiàn)象焕蹄。

FastDFS是如何解決文件同步延遲這個(gè)問(wèn)題的呢?

文件的訪問(wèn)分為兩種情況:文件更新和文件下載阀溶。文件更新包括設(shè)置文件附加屬性和刪除文件腻脏。文件的附加屬性包括文件大小、圖片寬度银锻、圖片高度等永品。FastDFS中,文件更新操作都會(huì)優(yōu)先選擇源Storage server击纬,也就是該文件被上傳到的那臺(tái)Storage server鼎姐。這樣的做法不僅避免了文件同步延遲的問(wèn)題,而且有效地避免了在多臺(tái)Storage server上更新同一文件可能引起的時(shí)序錯(cuò)亂的問(wèn)題更振。

那么文件下載是如何解決文件同步延遲這個(gè)問(wèn)題的呢炕桨?

要回答這個(gè)問(wèn)題,需要先了解文件名中包含了什么樣的信息肯腕。Storage server生成的文件名中献宫,包含了源Storage server的IP地址和文件創(chuàng)建時(shí)間等字段。文件創(chuàng)建時(shí)間為UNIX時(shí)間戳实撒,后面稱為文件時(shí)間戳遵蚜。從文件名或文件ID中帖池,可以反解出這兩個(gè)字段。然后我們?cè)賮?lái)看一下吭净,Tracker server是如何準(zhǔn)確地知道一個(gè)文件已被同步到一臺(tái)Storage server上的。前面已經(jīng)講過(guò)肴甸,文件同步采用主動(dòng)推送的方式寂殉。另外,每臺(tái)storage server都會(huì)定時(shí)向tracker server報(bào)告它向同組的其他storage server同步到的文件時(shí)間戳原在。當(dāng)tracker server收到一臺(tái)storage server的文件同步報(bào)告后友扰,它會(huì)依次找出該組內(nèi)各個(gè)storage server(后稱作為S)被同步到的文件時(shí)間戳最小值,作為S的一個(gè)屬性記錄到內(nèi)存中庶柿。

FastDFS對(duì)文件同步延遲問(wèn)題的解決方案

下面我們來(lái)看一下FastDFS采取的解決方法村怪。

一個(gè)最簡(jiǎn)單的解決辦法,和文件更新一樣浮庐,優(yōu)先選擇源Storage server下載文件即可甚负。這可以在Tracker server的配置文件中設(shè)置,對(duì)應(yīng)的參數(shù)名為download_server审残。

另外一種選擇Storage server的方法是輪流選擇(round-robin)梭域。當(dāng)Client詢問(wèn)Tracker server有哪些Storage server可以下載指定文件時(shí),Tracker server返回滿足如下四個(gè)條件之一的Storage server:

  1. 該文件上傳到的源Storage server搅轿,文件直接上傳到該服務(wù)器上的病涨;

  2. 文件創(chuàng)建時(shí)間戳 < Storage server被同步到的文件時(shí)間戳,這意味著當(dāng)前文件已經(jīng)被同步過(guò)來(lái)了璧坟;

  3. 文件創(chuàng)建時(shí)間戳=Storage server被同步到的文件時(shí)間戳既穆,且(當(dāng)前時(shí)間—文件創(chuàng)建時(shí)間戳) > 一個(gè)文件同步完成需要的最大時(shí)間(如5分鐘);

    (當(dāng)前時(shí)間—文件創(chuàng)建時(shí)間戳) > 文件同步延遲閾值雀鹃,比如我們把閾值設(shè)置為1天幻工,表示文件同步在一天內(nèi)肯定可以完成。

圖片服務(wù)器的搭建

因?yàn)殚_(kāi)發(fā)所用褐澎,這里就搭建個(gè)單機(jī)版

安裝環(huán)境 CentOS6.8 64位

需要gcc的編譯環(huán)境

需要libevent的包会钝。

yum install -y zlib zlib-devel pcre pcre-devel gcc gcc-c++ openssl openssl-devel libevent libevent-devel perl unzip

安裝步驟

Tracker的安裝

第一步:把源碼包上傳到linux系統(tǒng)。

第二步:解壓縮libfastcommonV1.0.7.tar.gz包工三。

第三步:進(jìn)入/root/libfastcommon-1.0.7文件夾執(zhí)行./make.sh迁酸、./make.sh install

安裝libfastcommon

下載最新版本: libfastcommon
wget https://github.com/happyfish100/libfastcommon/archive/master.zip
unzip master.zip
cd libfastcommon-master/
./make.sh
./make.sh install

第四步:把/usr/lib64/libfastcommon.so文件向/usr/lib文件夾下復(fù)制一份。(32位系統(tǒng)可這么做俭正,64位不需要)

第五步:把FastDFS_v5.05.tar.gz解壓縮奸鬓。

第六步:進(jìn)入/root/FastDFS目錄執(zhí)行:./make.sh、./make.sh install


wget http://sourceforge.net/projects/fastdfs/files/FastDFS%20Server%20Source%20Code/FastDFS%20Server%20with%20PHP%20Extension%20Source%20Code%20V5.05/FastDFS_v5.05.tar.gz
tar zxf FastDFS_v5.05.tar.gz && cd FastDFS
./make.sh
./make.sh install
\cp -pa conf/*.conf /etc/fdfs/
cd /etc/fdfs/
rm -rf *.sample

第七步:配置trackerServer掸读。

1串远、 把/root/FastDFS/conf目錄下的所以的文件復(fù)制到/etc/fdfs目錄下宏多。

2、 編輯/etc/fdfs/tracker.conf

第八步:?jiǎn)?dòng)tracker服務(wù)

/usr/bin/fdfs_trackerd/etc/fdfs/tracker.conf restart

Storage服務(wù)的安裝

如果storage和tracker不在同一臺(tái)服務(wù)上需要重復(fù)執(zhí)行Tracker的安裝的第一步到第六步

配置Storage服務(wù):

需要修改/etc/fdfs/storage.conf文件

啟動(dòng)服務(wù):

[root@localhost fdfs]#/usr/bin/fdfs_storaged /etc/fdfs/storage.conf

測(cè)試上傳服務(wù)

修改客戶端的配置文件/etc/fdfs/client.conf

上傳文件:

/usr/bin/fdfs_testclient.conf upload xxx.jpg

訪問(wèn)圖片

使用FastDFS的Nginx插件和Nginx配合澡罚,實(shí)現(xiàn)圖片的訪問(wèn)伸但。Nginx需要安裝到storage服務(wù)所在的服務(wù)器

安裝步驟:

第一步:把插件包解壓縮。fastdfs-nginx-module_v1.16.tar.gz

第二步:編輯/root/fastdfs-nginx-module/src/config文件留搔。刪除其中的local字樣

wget http://nginx.org/download/nginx-1.8.0.tar.gz
http://sourceforge.net/projects/fastdfs/files/FastDFS%20Nginx%20Module%20Source%20Code/fastdfs-nginx-module_v1.16.tar.gz/download

tar zxf fastdfs-nginx-module_v1.16.tar.gz && tar zxf nginx-1.8.0.tar.gz 

#修改模塊中對(duì)應(yīng)的路徑更胖,要不然模塊不能正確安裝加載
cd fastdfs-nginx-module/src
vi conf   #更改如下, 去掉local隔显,并指定lib64(64系統(tǒng))
CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
CORE_LIBS="$CORE_LIBS -L/usr/lib64 -lfastcommon -lfdfsclient"

第三步:把/root/fastdfs-nginx-module/src/mod_fastdfs.conf文件復(fù)制到/etc/fdfs目錄下却妨。

第四步:把/usr/lib64/libfdfsclient.so文件復(fù)制到/usr/lib目錄下(32位系統(tǒng),64位系統(tǒng)不需要)

第五步:編譯Nginx

對(duì)Nginx進(jìn)行config

./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi \
--add-module=/root/fastdfs-nginx-module/src

第六步:配置Nginx

第七步:編輯Nginx插件的配置文件:

修改/etc/fdfs/mod_fastdfs.conf文件

第八步:?jiǎn)?dòng)Nginx

最後括眠,再多說(shuō)一點(diǎn) 這是之前自己 筆記的一點(diǎn)心得彪标,貼出來(lái)

nginx通過(guò)插件fastdfs-nginx-module_v1.16.tar管理訪問(wèn)/group1/M00/過(guò)來(lái)的路徑
這是插件的日志路徑
# the base path to store log files
base_path=/tmp
這里接收管理storage存放路徑
# store_path#, based 0, if store_path0 not exists, it's value is base_path
# the paths must be exist
# must same as storage.conf 注意看這些注釋,然后就知道怎么配了
store_path0=/home/fastdfs/storage
通過(guò)下面來(lái)和索引器聯(lián)系起來(lái)
# valid only when load_fdfs_parameters_from_tracker is true
tracker_server=192.168.42.129:22122

忘說(shuō)了:
啟動(dòng)測(cè)試前掷豺,開(kāi)放端口號(hào)端口給瀏覽器訪問(wèn)

/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 22 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 22122 -j ACCEPT
#然后保存:
/etc/rc.d/init.d/iptables save
#重啟防火墻以便改動(dòng)生效:(或者直接重啟系統(tǒng))
/etc/init.d/iptables restart

往期回顧:


更多內(nèi)容請(qǐng)關(guān)注:極樂(lè)科技

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末捞烟,一起剝皮案震驚了整個(gè)濱河市萌业,隨后出現(xiàn)的幾起案子坷襟,更是在濱河造成了極大的恐慌,老刑警劉巖生年,帶你破解...
    沈念sama閱讀 221,635評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件婴程,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡抱婉,警方通過(guò)查閱死者的電腦和手機(jī)档叔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)蒸绩,“玉大人衙四,你說(shuō)我怎么就攤上這事』家冢” “怎么了传蹈?”我有些...
    開(kāi)封第一講書人閱讀 168,083評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)步藕。 經(jīng)常有香客問(wèn)我惦界,道長(zhǎng),這世上最難降的妖魔是什么咙冗? 我笑而不...
    開(kāi)封第一講書人閱讀 59,640評(píng)論 1 296
  • 正文 為了忘掉前任沾歪,我火速辦了婚禮,結(jié)果婚禮上雾消,老公的妹妹穿的比我還像新娘灾搏。我一直安慰自己挫望,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布狂窑。 她就那樣靜靜地躺著媳板,像睡著了一般。 火紅的嫁衣襯著肌膚如雪泉哈。 梳的紋絲不亂的頭發(fā)上拷肌,一...
    開(kāi)封第一講書人閱讀 52,262評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音旨巷,去河邊找鬼。 笑死添忘,一個(gè)胖子當(dāng)著我的面吹牛采呐,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播搁骑,決...
    沈念sama閱讀 40,833評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼斧吐,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了仲器?” 一聲冷哼從身側(cè)響起煤率,我...
    開(kāi)封第一講書人閱讀 39,736評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎乏冀,沒(méi)想到半個(gè)月后蝶糯,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,280評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡辆沦,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評(píng)論 3 340
  • 正文 我和宋清朗相戀三年昼捍,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片肢扯。...
    茶點(diǎn)故事閱讀 40,503評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡妒茬,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蔚晨,到底是詐尸還是另有隱情乍钻,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布铭腕,位于F島的核電站银择,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏谨履。R本人自食惡果不足惜欢摄,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望笋粟。 院中可真熱鬧怀挠,春花似錦析蝴、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,340評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至吞滞,卻和暖如春佑菩,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背裁赠。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,460評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工殿漠, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人佩捞。 一個(gè)月前我還...
    沈念sama閱讀 48,909評(píng)論 3 376
  • 正文 我出身青樓绞幌,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親一忱。 傳聞我的和親對(duì)象是個(gè)殘疾皇子莲蜘,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容