1. 程式人生 > >FastDFS安裝與使用(單節點)

FastDFS安裝與使用(單節點)

FastDFS 分散式檔案系統的安裝與使用(單節點)

本文tracker、storage都在一臺機器上!本機tracker和storage是放在一起的。

需要準備的包

FastDFS_v5.08.tar.gz
libfastcommon-master.zip  (是從 FastDFS 和 FastDHT 中提取出來的公共 C 函式庫)

原始碼地址:https://github.com/happyfish100/ 
下載地址:http://sourceforge.net/projects/fastdfs/files/ 
官方論壇:http://bbs.chinaunix.net/forum-240-1.html

如果沒有GCC編譯器,先安裝GCC

yum install make cmake gcc gcc-c++

1、解壓 FastDFS_v5.08.tar.gz

tar -zxvf FastDFS_v5.08.tar.gz
cd FastDFS

2、編譯、安裝

./make.sh
./make.sh install
出現錯誤
cc -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o ../common/fdfs_global.o ../common/fdfs_global.c  -I../common -I/usr/include/fastcommon
../common/fdfs_global.c:20:20: 錯誤:logger.h:沒有那個檔案或目錄
在包含自 ../common/fdfs_global.c:21 的檔案中:
../common/fdfs_global.h:14:27: 錯誤:common_define.h:沒有那個檔案或目錄
../common/fdfs_global.h:16:29: 錯誤:connection_pool.h:沒有那個檔案或目錄
In file included from ../common/fdfs_global.c:21:
../common/fdfs_global.h:26: 錯誤:‘MAX_PATH_SIZE’ 未宣告 (不在函式內)
../common/fdfs_global.h:27: 錯誤:expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘g_fdfs_version’
../common/fdfs_global.h:28: 錯誤:expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘g_use_connection_pool’
../common/fdfs_global.h:29: 錯誤:expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘g_connection_pool’
../common/fdfs_global.c:23: 錯誤:‘DEFAULT_CONNECT_TIMEOUT’ 未宣告 (不在函式內)
../common/fdfs_global.c:24: 錯誤:‘DEFAULT_NETWORK_TIMEOUT’ 未宣告 (不在函式內)
../common/fdfs_global.c:26: 錯誤:expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘g_fdfs_version’
../common/fdfs_global.c:27: 錯誤:expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘g_use_connection_pool’
../common/fdfs_global.c:28: 錯誤:expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘g_connection_pool’
../common/fdfs_global.c: In function ‘fdfs_check_data_filename’:
../common/fdfs_global.c:39: 警告:隱式宣告函式 ‘logError’
../common/fdfs_global.c:45: 警告:隱式宣告函式 ‘IS_UPPER_HEX’
make: *** [../common/fdfs_global.o] 錯誤 1
cc -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o ../common/fdfs_global.o ../common/fdfs_global.c  -I. -Itrunk_mgr -I../common -I../tracker -I../client -Ifdht_client -I/usr/include/fastcommon
../common/fdfs_global.c:20:20: 錯誤:logger.h:沒有那個檔案或目錄
在包含自 ../common/fdfs_global.c:21 的檔案中:
../common/fdfs_global.h:14:27: 錯誤:common_define.h:沒有那個檔案或目錄
../common/fdfs_global.h:16:29: 錯誤:connection_pool.h:沒有那個檔案或目錄
In file included from ../common/fdfs_global.c:21:
../common/fdfs_global.h:26: 錯誤:‘MAX_PATH_SIZE’ 未宣告 (不在函式內)
../common/fdfs_global.h:27: 錯誤:expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘g_fdfs_version’
../common/fdfs_global.h:28: 錯誤:expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘g_use_connection_pool’
../common/fdfs_global.h:29: 錯誤:expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘g_connection_pool’
../common/fdfs_global.c:23: 錯誤:‘DEFAULT_CONNECT_TIMEOUT’ 未宣告 (不在函式內)
../common/fdfs_global.c:24: 錯誤:‘DEFAULT_NETWORK_TIMEOUT’ 未宣告 (不在函式內)
../common/fdfs_global.c:26: 錯誤:expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘g_fdfs_version’
../common/fdfs_global.c:27: 錯誤:expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘g_use_connection_pool’
../common/fdfs_global.c:28: 錯誤:expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘g_connection_pool’
../common/fdfs_global.c: In function ‘fdfs_check_data_filename’:
../common/fdfs_global.c:39: 警告:隱式宣告函式 ‘logError’
../common/fdfs_global.c:45: 警告:隱式宣告函式 ‘IS_UPPER_HEX’
make: *** [../common/fdfs_global.o] 錯誤 1
cc -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o ../common/fdfs_global.o ../common/fdfs_global.c  -I../common -I../tracker -I/usr/include/fastcommon
../common/fdfs_global.c:20:20: 錯誤:logger.h:沒有那個檔案或目錄
在包含自 ../common/fdfs_global.c:21 的檔案中:
../common/fdfs_global.h:14:27: 錯誤:common_define.h:沒有那個檔案或目錄
../common/fdfs_global.h:16:29: 錯誤:connection_pool.h:沒有那個檔案或目錄
In file included from ../common/fdfs_global.c:21:
../common/fdfs_global.h:26: 錯誤:‘MAX_PATH_SIZE’ 未宣告 (不在函式內)
../common/fdfs_global.h:27: 錯誤:expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘g_fdfs_version’
../common/fdfs_global.h:28: 錯誤:expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘g_use_connection_pool’
../common/fdfs_global.h:29: 錯誤:expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘g_connection_pool’
../common/fdfs_global.c:23: 錯誤:‘DEFAULT_CONNECT_TIMEOUT’ 未宣告 (不在函式內)
../common/fdfs_global.c:24: 錯誤:‘DEFAULT_NETWORK_TIMEOUT’ 未宣告 (不在函式內)
../common/fdfs_global.c:26: 錯誤:expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘g_fdfs_version’
../common/fdfs_global.c:27: 錯誤:expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘g_use_connection_pool’
../common/fdfs_global.c:28: 錯誤:expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘g_connection_pool’
../common/fdfs_global.c: In function ‘fdfs_check_data_filename’:
../common/fdfs_global.c:39: 警告:隱式宣告函式 ‘logError’
../common/fdfs_global.c:45: 警告:隱式宣告函式 ‘IS_UPPER_HEX’
是因為沒有安裝 libfastcommon 

安裝libfastcommon

unzip libfastcommon-master.zip
cd libfastcommon-master
./make.sh
./make.sh install
libfastcommon 預設安裝到了
/usr/lib64/libfastcommon.so
/usr/lib64/libfdfsclient.so

安裝成功後,繼續安裝FastDFS

採用預設安裝的方式安裝,安裝後的相應檔案與目錄: 

A、服務指令碼在:
         /etc/init.d/fdfs_storaged
         /etc/init.d/fdfs_tracker
B、配置檔案在(樣例配置檔案): 

         /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

進入 /etc/fdfs/

cd /etc/fdfs
複製3份配置檔案
cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf
cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf
cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf

配置 tracker

1、檢視tracker.conf

vi /etc/fdfs/tracker.conf
2、配置(保留預設即可)

disabled=false
port=22122
base_path=/home/zhaosoft/fastdfs
(其它引數保留預設配置,具體配置解釋請參考官方文件說明: 

http://bbs.chinaunix.net/thread-1941456-1-1.html )

3、建立基礎資料目錄(參考基礎目錄 base_path 配置):

mkdir -p /home/zhaosoft/fastdfs
4、防火牆中開啟跟蹤器埠(預設為 22122)
vi /etc/sysconfig/iptables

新增如下埠行:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 22122 -j ACCEPT
重啟防火牆
service iptables restart
5、啟動 Tracker:
/etc/init.d/fdfs_trackerd start

(初次成功啟動,會在/fastdfs/tracker 目錄下建立 data、logs 兩個目錄) 

檢視 FastDFS Tracker 是否已成功啟動:

ps -ef | grep fdfs
6、 關閉 Tracker:
# /etc/init.d/fdfs_trackerd stop
7、 設定 FastDFS 跟蹤器開機啟動:
vi /etc/rc.d/rc.local

新增以下內容:

## FastDFS Tracker 
/etc/init.d/fdfs_trackerd start

配置 FastDFS 儲存

1、檢視storage

vi /etc/fdfs/storage.conf
2、編輯

修改的內容如下:
disabled=false
port=23000
base_path=/home/zhaosoft/fastdfs
store_path0=/home/yuqing/fastdfs 

tracker_server=ip:22122 

http.server_port=8888 

(其它引數保留預設配置,具體配置解釋請參考官方文件說明: 

http://bbs.chinaunix.net/thread-1941456-1-1.html )
3、 建立基礎資料目錄(參考基礎目錄 base_path 配置)

/home/yuqing/fastdfs 
4、 防火牆中開啟儲存器埠(預設為 23000):
vi /etc/sysconfig/iptables
新增如下埠行:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 23000 -j ACCEPT 
重啟防火牆:
service iptables restart
5、 啟動 Storage:
/etc/init.d/fdfs_storaged start

 (初次成功啟動,會在/fastdfs/storage 目錄下建立 data、logs 兩個目錄) 

檢視 FastDFS Storage 是否已成功啟動

ps -ef | grep fdfs
6、 關閉 Storage:
/etc/init.d/fdfs_storaged stop
7、 設定 FastDFS 儲存器開機啟動:
vi /etc/rc.d/rc.local
新增:
## FastDFS Storage
/etc/init.d/fdfs_storaged start

最後,檔案上傳測試

1、修改 Tracker 伺服器中的客戶端配置檔案:

vi /etc/fdfs/client.conf
base_path=/fastdfs/tracker
tracker_server=ip:22122
2、執行如下檔案上傳命令:
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf /home/zhaosoft/FastDFS_v5.05.tar.gz
返回 ID 號:group1/M00/00/00/wKgEfVUYNYeAb7XFAAVFOL7FJU4.tar.gz
(能返回以上檔案 ID,說明檔案上傳成功)