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
unzip libfastcommon-master.zip cd libfastcommon-master ./make.sh ./make.sh installlibfastcommon 預設安裝到了
/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.conf2、配置(保留預設即可)
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/fastdfs4、防火牆中開啟跟蹤器埠(預設為 22122)
vi /etc/sysconfig/iptables
新增如下埠行:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22122 -j ACCEPT重啟防火牆
service iptables restart5、啟動 Tracker:
/etc/init.d/fdfs_trackerd start
(初次成功啟動,會在/fastdfs/tracker 目錄下建立 data、logs 兩個目錄)
檢視 FastDFS Tracker 是否已成功啟動:
ps -ef | grep fdfs6、 關閉 Tracker:
# /etc/init.d/fdfs_trackerd stop7、 設定 FastDFS 跟蹤器開機啟動:
vi /etc/rc.d/rc.local
新增以下內容:
## FastDFS Tracker /etc/init.d/fdfs_trackerd start
配置 FastDFS 儲存
1、檢視storage
vi /etc/fdfs/storage.conf2、編輯
修改的內容如下:
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/fastdfs4、 防火牆中開啟儲存器埠(預設為 23000):
vi /etc/sysconfig/iptables新增如下埠行:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 23000 -j ACCEPT重啟防火牆:
service iptables restart5、 啟動 Storage:
/etc/init.d/fdfs_storaged start
(初次成功啟動,會在/fastdfs/storage 目錄下建立 data、logs 兩個目錄)
檢視 FastDFS Storage 是否已成功啟動
ps -ef | grep fdfs6、 關閉 Storage:
/etc/init.d/fdfs_storaged stop7、 設定 FastDFS 儲存器開機啟動:
vi /etc/rc.d/rc.local新增:
## FastDFS Storage /etc/init.d/fdfs_storaged start
最後,檔案上傳測試
1、修改 Tracker 伺服器中的客戶端配置檔案:
vi /etc/fdfs/client.confbase_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,說明檔案上傳成功)