天天看點

fastDFS詳細安裝步驟,分享給小主們

作者:戴宜正

第一步:安裝依賴包和開發工具

yum install vim vim-enhanced wget zip unzip telnet ntsysv compat* apr* pcre* pcre-* nasm* gcc gcc* gcc-c++ ntp make imake cmake automake autoconf zlib zlib-devel glibc glibc-devel glib2 libxml glib2-devel libxml2 libxml2-devel bzip2 bzip2-devel libXpm libXpm-devel libidn libidn-devel libtool libtool-ltdl-devel* libmcrypt libmcrypt-devel libevent-devel libmcrypt* curl curl-devel perl perl-Net-SSLeay pcre pcre-devel ncurses ncurses-devel openssl openssl-devel openldap openldap-devel openldap-clients openldap-servers krb5 krb5-devel e2fsprogs e2fsprogs-devel libjpeg libpng libjpeg-devel libjpeg-6b libjpeg-devel-6b libpng-devel libtiff-devel freetype freetype-devel fontconfig-devel gd gd-devel kernel screen sysstat flex bison nss_ldap pam-devel compat-libstdc++-33 gettext-devel libXft-devel libXtst-devel

注意:第一步的時候,已經把需要的所有程式都安裝了,其他的安裝yum都無需再安裝

第二步:

Tracker 192.168.235.131:22122 CentOS

Group1-Storage11 192.168.235.133:23000 CentOS

fastDFS詳細安裝步驟,分享給小主們

第三步:檔案初始化:

按照我們第一步确認的目标,我們可以現在自由選擇一個路徑,建立一些檔案夾目錄,這些目錄後邊會在配置tracker和storage的過程中被用到。我在用虛拟機建立的時候,是在/opt這個目錄下面建立相關的檔案夾,詳細如下,僅供參考:

1. 配置tracker所需的base_path: /opt/fastdfs_tracker。隻需要mkdir fastdfs_tracker,這樣既可

2. 配置storage所需的日志目錄: /opt/fastdfs_storage_info。 備注: 這個目錄是用來存儲storage之間同步檔案等日志的

3. 配置storage所需的存儲檔案目錄: /opt/fastdfs_storage_data。備注: 這個目錄是用來存儲檔案的

其實,我們在使用過程中并不是每個實體機上都會同時部署tracker和storage,那麼根據自己的實際情況,如果隻部署storage,則就建立storage的那兩個檔案夾;反之則隻建立tracker的那個檔案夾。後邊在解釋配置檔案如何配置的過程中我将會按照上邊的目錄路徑做配置,大家可以比對着看每個路徑對應哪個配置。

第四步:安裝libfastcommon-1.0.7.zip:

  1. 先進入到安裝目錄下; cd /usr/local/src

2、unzip libfastcommon-1.0.7.zip

3、然後進入 解壓後的包libfastcommon

解壓完成後,進入檔案夾,會看到make.sh檔案,執行./make.sh指令,可能會報沒有安裝gcc和perl的錯誤,截圖如下:

fastDFS詳細安裝步驟,分享給小主們

4、 為了解決2中的問題,安裝gcc和perl:

a. 執行 yum -y install gcc 和 yum -y install gcc-c++ 這了兩個指令安裝

b. 安裝perl時,我們可以直接用wget指令安裝,我這裡安裝的版本是perl-5.20.2。

可以參考這篇文章安裝perl http://blog.sina.com.cn/s/blog_68158ebf0100ndes.html 

wget http://www.cpan.org/src/5.0/perl-5.20.2.tar.gz

tar zxvf perl-5.20.2.tar.gz

mkdir /usr/local/perl

./Configure -des -Dprefix=/usr/local/perl -Dusethreads -Uversiononly

make

make install

perl -version

5、 安裝完perl後,重新依次執行 ./make.sh 和 ./make.sh install 這兩個指令,完成libfastcommon的安裝。

fastDFS詳細安裝步驟,分享給小主們

5. 注意,上述安裝的路徑在/usr/lib64/,但是FastDFS主程式設定的lib目錄是/usr/local/lib,是以需要建立軟連接配接如下:

sudo ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so

sudo ln -s /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so

sudo ln -s /usr/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so

sudo ln -s /usr/lib64/libfdfsclient.so /usr/lib/libfdfsclient.so

  1. 安裝fastDFS;解壓縮後cd到目錄檔案後 ./make.sh 會報錯
fastDFS詳細安裝步驟,分享給小主們

這是因為沒有正确的安裝libfastcomm,需要重新安裝, 用zip壓縮版的 ,不要用tar.gz 用tar.gz出這樣的錯誤。

重新解壓然後安裝後 進行fastDFS的安裝

前 邊幾步如果安裝的都正确的話,這一步就比較簡單了,解壓縮fastdfs-5.05.tar.gz,然後依次執行 ./make.sh 和 ./make.sh install 這兩個指令,過程中沒有報錯,并且打開 /etc/fdfs 這個目錄發現有配置檔案存在,就說明安裝成功了。

fastDFS詳細安裝步驟,分享給小主們
fastDFS詳細安裝步驟,分享給小主們

有這三個檔案表名建立成功

第七步,配置tracker:

前 邊的這六步無論是配置tracker還是配置storage都是必須的,而tracker和storage的差別主要是在安裝完fastdfs之後的配置 過程中。我們在第一步确認目标時,計劃在192.168.224.20這台虛拟機上配置tracker,是以我們就在這台機器上示範。

1. 進入/etc/fdfs檔案夾,執行指令:

cp tracker.conf.sample tracker.comnf

2. 編輯tracker.conf,執行指令: vi tracker.conf ,将以下幾個選項進行編輯:

a. disabled=false #啟用配置檔案

b. port=22122 #設定tracker的端口号,一般采用22122這個預設端口

c. base_path=/opt/fastdfs_tracker #設定tracker的資料檔案和日志目錄(預先建立)

d. http.server_port=8080 #設定http端口号 注意,這個配置在fastdfs5.05這個版本中已經不用配置,不用管這個!

fastDFS詳細安裝步驟,分享給小主們

3. 啟動tracker,執行如下指令: /usr/local/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart

注意,一般fdfs_trackerd等指令在/usr/local/bin中沒有,而是在/usr/bin路徑下,是以指令修改如下:

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

4. 啟動完畢後,可以通過以下兩個方法檢視tracker是否啟動成功:

a. netstat -unltp|grep fdfs,檢視22122端口監聽情況

b. 通過以下指令檢視tracker的啟動日志,看是否有錯誤: tail -100f /opt/fastdfs_tracker/logs/trackerd.log

5. 如果啟動沒有問題,可以通過以下步驟,将tracker的啟動添加到伺服器的開機啟動中:

a. 打開檔案 vi /etc/rc.d/rc.local

b. 将如下指令添加到該檔案中 /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart

第八步,配置storage:

其實配置storage和配置tracker類似,隻不過配置檔案和配置内容不一樣。我們以配置192.168.224.29配置storage為例。

1. 進入/etc/fdfs檔案夾,執行指令:

cp storage.conf.sample storage.conf

2. 編輯storage.conf,執行指令: vi storage.conf ,将以下幾個選項進行編輯:

a. disabled=false #啟用配置檔案

b. group_name=group2 #組名,根據實際情況修改

c. port=23001 #設定storage的端口号,預設是23000,同一個組的storage端口号必須一緻

d. base_path=/opt/fastdfs_storage_info #設定storage的日志目錄(需預先建立)

e. store_path_count=1 #存儲路徑個數,需要和store_path個數比對

f. store_path0=/opt/fastdfs_storage_data #存儲路徑

g. tracker_server=192.168.224.20:22122 #tracker伺服器的IP位址和端口号(注意的是這個和虛拟機的IP位址一樣)

h. http.server_port=8080 #設定http端口号 注意,這個配置在fastdfs5.05這個版本中已經不用配置,不用管這個!

fastDFS詳細安裝步驟,分享給小主們
fastDFS詳細安裝步驟,分享給小主們
fastDFS詳細安裝步驟,分享給小主們

3. 啟動storage,執行如下指令: /usr/local/bin/fdfs_storage /etc/fdfs/storage.conf restart

注意,一般fdfs_storage等指令在/usr/local/bin中沒有,而是在/usr/bin路徑下,是以指令修改如下:

/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart

4. 啟動完畢後,如果第一次啟動不成功,先把防火牆關了,再重新把指令粘貼啟動下:

/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart

可以通過以下兩個方法檢視storage是否啟動成功:

a. netstat -unltp|grep fdfs,檢視23001端口監聽情況

b. 通過以下指令檢視storage的啟動日志,看是否有錯誤: tail -100f /opt/fastdfs_storage_info/logs/storage.log

5. 啟動成功後,可以通過fdfs_monitor檢視叢集的情況,即storage是否已經注冊到tracker伺服器中

/usr/bin/fdfs_monitor /etc/fdfs/storage.conf

檢視192.168.224.29:23001 是ACTIVE狀态即可

6. 如果啟動沒有問題,可以通過以下步驟,将storage的啟動添加到伺服器的開機啟動中:

a. 打開檔案 vi /etc/rc.d/rc.local

b. 将如下指令添加到該檔案中

/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart

=============================================================== 長長的分割 線=================================================================

下面可以進行上傳檔案的測試了:

首先第一步:先把防火牆關閉,不然會連不上

關閉虛拟機防火牆:

關閉指令: service iptables stop

永久關閉防火牆:chkconfig iptables off

兩個指令同時運作,運作完成後檢視防火牆關閉狀态

service iptables status

1 關閉防火牆-----service iptables stop

2 啟動防火牆-----service iptables start

3 重新開機防火牆-----service iptables restart

4 檢視防火牆狀态--service iptables status

5 永久關閉防火牆--chkconfig iptables off

6 永久關閉後啟用--chkconfig iptables on

這是如何對待防火牆的指令。

這些做完後,就可以用Java做用戶端進行檔案上傳了

使用方法:

1、把FastDFS提供的jar包添加到工程中

2、初始化全局配置。加載一個配置檔案。

3、建立一個TrackerClient對象。

4、建立一個TrackerServer對象。

5、聲明一個StorageServer對象,null。

6、獲得StorageClient對象。

7、直接調用StorageClient對象方法上傳檔案即可。

Java裡的代碼如下

Client.conf 中的配置

storage server port = 23001

storage HTTP port = 8888

#連結tracker的url

tracker_server = 192.168.235.132:22122

#tracker_server = 192.168.0.119:22122

測試 代碼

public class TestFastDFS {

@Test

public void testFastDfsClient() throws Exception {

// 1、把FastDFS提供的jar包添加到工程中

// 2、初始化全局配置。加載一個配置檔案。

ClientGlobal.init("D:\\MyEclipseWorkSpace\\fastDfsDemo\\src\\main\\resources\\fdfs_client.conf");

// 3、建立一個TrackerClient對象。

TrackerClient trackerClient = new TrackerClient();

// 4、建立一個TrackerServer對象。

TrackerServer trackerServer = trackerClient.getConnection();

// 5、聲明一個StorageServer對象,null。

StorageServer storageServer = null;

// 6、獲得StorageClient對象。

StorageClient storageClient = new StorageClient(trackerServer, storageServer);

// 7、直接調用StorageClient對象方法上傳檔案即可。

String[] strings = storageClient.upload_file("C:\\Users\\T430\\Desktop\\1.png", "png", null);

/* for (String string : strings) {

System.out.println(string);

}*/

}

// FastDFSClient client = new FastDFSClient("D:\\MyEclipseWorkSpace\\fastDfsDemo\\src\\main\\resources\\fdfs_client.conf");

// String uploadFile = client.uploadFile("C:\\Users\\T430\\Desktop", "png", null);

// System.out.println(uploadFile);

}

===============================================================================分割線===================================================

以上八步其實已經完成了fastdfs的配置,如果此時你用java等api編輯用戶端,實際上就可以完成檔案的上傳、同步和下載下傳。但是為什麼網上還會有 很多人說需要nginx呢???其實主要原因時因為,我們可以通過配置nginx為下載下傳提供基于http協定的下載下傳等功能。

其實,storage中安裝nginx,主要是為了為提供http的通路服務,同時解決group中storage伺服器的同步延遲問題。而tracker中安裝nginx,主要是為了提供http通路的反向代理、負載均衡以及緩存服務

第九步,安裝nginx的準備:

不管是在tracker中還是storage中安裝nginx,前提都需要安裝一些基礎軟體。一些大公司的伺服器預設都會初始化這些軟體,但是你在配置的時候可能還是最好自己利用指令确認一下。

1. yum install -y gcc 這個前邊在安裝libfastcommon之前已經安裝了

2. yum install -y gcc-c++ 這個前邊在安裝libfastcommon之前已經安裝了

3. yum install -y pcre pcre-devel

4. yum install -y zlib zlib-devel

5. yum install -y openssl openssl-devel

第十步,在storage中安裝nginx:

1. 建立nginx預設的安裝檔案夾: mkdir /usr/local/nginx

2. 提前将 nginx1.7.8.tar.gz 和 fastdfs-nginx-module_v1.16.tar.gz 解壓縮,然後進入nginx1.7.8的檔案夾目錄,執行如下指令:

./configure --prefix=/usr/local/nginx --add-module=/usr/local/src/fastdfs-nginx-module/src

3. 執行完上述指令,如果沒有報錯的話,我們繼續執行 make 指令,此時編譯有可能會報錯,那是因為我們忘了做一項重要的工作,我們可以參考下面這篇文章http://bbs.chinaunix.net/thread-4163021-1-1.html中的解答,其實彙總就是下面兩個意思:

a. 我們在解壓縮fastdfs-nginx-module_v1.16.tar.gz之後,需要進入fastdfs-nginx-module/src目 錄,編輯config檔案,找到包含CORE_INCS這個一行,将路徑中local全部去掉,變為CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"

b. 建立軟連接配接,這個軟連接配接我們在第五步安裝libfastcommon時的最後一個操作就已經建立了,是以此處不用再建立了。

4. 執行完3個步驟後,我們在重複執行2中的指令,

不報錯以後,再輸入 ./configure --prefix=/usr/local/nginx --add-module=/usr/local/src/fastdfs-nginx-module/src 然後回車進行執行,成功後再依次執行 make 和 make install 這兩個指令,沒有報錯誤就是安裝成功了。

5. 執行指令 cd /usr/local/nginx/conf,編輯 nginx.conf 這個檔案,編輯如下:

listen 8080;

在server段中添加:

location ~/group[1-3]/M00{

root /opt/fastdfs_storage_data/data;

ngx_fastdfs_module;

}

具體看下面的示例配置:

注意,如果配置的storage是在group2組,則下面的location應該是 ~/group2/M00

fastDFS詳細安裝步驟,分享給小主們

6. 執行指令 cd /usr/local/src/fastdfs-5.05/conf,即進入fastdfs5.0.5的安裝檔案夾的conf目錄下,将目錄下面的http.conf和mime.types拷貝到/etc/fdfs/下,如果不執行這一步,後邊在啟動nginx時會報錯。

7. 執行指令 cd /usr/local/src/fastdfs-nginx-module/src,即進入 fastdfs-nginx-module_v1.16的安裝檔案夾的src目錄下,将目錄下面的mod_fastdfs.conf這個檔案拷貝到 /etc/fdfs 目錄下。

8. 打開 /etc/fdfs 這個目錄,編輯 mod_fastdfs.conf 這個檔案,如下:

注意以下配置是group2的第二個storage 192.168.224.29的配置,按照第一步确定的叢集目标來配置的,供大家參考。

a. base_path=/opt/fastdfs_storage_info #儲存日志目錄

b. tracker_server=192.168.224.20:22122 #tracker伺服器的IP位址以及端口号

c. storage_server_port=23001 #storage伺服器的端口号

d. group_name=group2 #目前伺服器的group名

c. url_have_group_name= true #檔案url中是否有group名

d. store_path_count=1 #存儲路徑個數,需要和store_path個數比對

e. store_path0=/opt/fastdfs_storage_data #存儲路徑

f. http.need_find_content_type=true #從檔案擴充名查找檔案類型(nginx時為true) 注意:這個配置網上一般都會列出,但是在fastdfs5.05的版本中是沒有的

h. group_count= 2 #設定組的個數

i. 在檔案的末尾,按照第一步确定的叢集目标,追加如下圖的配置:

fastDFS詳細安裝步驟,分享給小主們

9. 建立建立 M00 至存儲目錄的符号連接配接:

ln -s /opt/fastdfs_storage_data/data /opt/fastdfs_storage_data/data/00

(此處如果出錯的話,試着 sudo ln -s /opt/fastdfs_storage_data/data /opt/fastdfs_storage_data/data/00 )

10. 執行指令啟動nginx:

/usr/local/nginx/sbin/nginx ,如果/usr/local/nginx/logs/error.log中沒有報錯,同時通路192.168.224.29:8080這個url能看到 nginx的歡迎頁面。

測試

cp /ust/local/FastDFS/client.conf.sample /etc/fdfs/client.conf (複制前面的位址不是一直不變的,根據自己安裝後的具體路徑,也有可能就在etc/fdfs這個目錄裡)

vi /etc/fdfs/client.cof.sample

base_path=/opt/fastdfs_storage_data/data

tracker_server=192.168.235.132:22122

建立測試檔案

vi test.txt

輸入内容: hello,this is my first fastdfs test

運作

/usr/bin/fdfs_test /etc/fdfs/client.conf.sample upload test.txt

列印如下内容,說明上傳成功

This is FastDFS client test program v3.06

Copyright (C) 2008, Happy Fish / YuQing

FastDFS may be copied only under the terms of the GNU General

Public License V3, which may be found in the FastDFS source kit.

Please visit the FastDFS Home Page http://www.csource.org/for more detail.

[2012-06-13 17:58:25] INFO - base_path=/tmp, connect_timeout=30, network_timeout=60, tracker_server_count=2, anti_steal_token=0, anti_steal_secret_key

length=0

tracker_query_storage_store_list_without_group:

server 1. group_name=group1, ip_addr=192.168.68.114, port=23000

group_name=group1, ip_addr=192.168.0.62, port=23000

storage_upload_by_filename

group_name=group1, remote_filename=M00/00/00/wKhEck_YZEHqsZRSAAAAJdWuY6w607.txtsource ip address: 192.168.0.62file timestamp=2012-06-13 17:58:25file size=37file crc32=3584975788file url: http://192.168.0.62/group1/M00/00/00/wKhEck_YZEHqsZRSAAAAJdWuY6w607.txt

storage_upload_slave_by_filename

group_name=group1, remote_filename=M00/00/00/wKhEck_YZEHqsZRSAAAAJdWuY6w607_big.txtsource ip address: 192.168.68.114file timestamp=2012-06-13 17:58:25file size=37file crc32=3584975788file url: http://192.168.0.62/group1/M00/00/00/wKhEck_YZEHqsZRSAAAAJdWuY6w607_big.txt

使用浏覽器打開上傳的檔案

http://192.168.235.132:8080/group1/M00/00/00/wKhEck_YZEHqsZRSAAAAJdWuY6w607_big.txt

如果看到檔案内容,說明配置成功!

fastDFS詳細安裝步驟,分享給小主們

上傳檔案成功後,結果顯示的不是我們上傳的圖檔名,那麼我們如何擷取該圖檔呢?

繼續閱讀