nginx,FastDFS 分佈式文件系統的安裝與使用(單節點)

FastDFS 分佈式文件系統的安裝與使用(單節點) 
 


跟蹤服務器:192.168.4.121 (edu-dfs-tracker-01) 
存儲服務器:192.168.4.125 (edu-dfs-storage-01) 
環境:CentOS 6.6 
用戶:root   
數據目錄:/fastdfs (注:數據目錄按你的數據盤掛載路徑而定) 
安裝包: 

FastDFS v5.05 
libfastcommon-master.zip(是從 FastDFS 和FastDHT 中提取出來的公共 C 函數庫) 
fastdfs-nginx-module_v1.16.tar.gz 
nginx-1.6.2.tar.gz 
fastdfs_client_java._v1.25.tar.gz 

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

 


 一、所有跟蹤服務器和存儲服務器均執行如下操作 ,兩臺服務器都同樣的操作


1、編譯和安裝所需的依賴包: 
# yum install make cmake gcc gcc-c++ 
 
2、安裝 libfastcommon: 
(1)上傳或下載 libfastcommon-master.zip 到/usr/local/src 目錄 
(2)解壓 
# cd /usr/local/src/ 
# unzip libfastcommon-master.zip 
# cd libfastcommon-master 

 
(3) 編譯、安裝 
# ./make.sh 
# ./make.sh install 

libfastcommon 默認安裝到了 
/usr/lib64/libfastcommon.so 
/usr/lib64/libfdfsclient.so 

(4)因爲 FastDFS 主程序設置的 lib 目錄是/usr/local/lib,所以需要創建軟鏈接. 
# 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 

 
3、安裝 FastDFS 
(1)上傳或下載 FastDFS 源碼包(FastDFS_v5.05.tar.gz)到 /usr/local/src 目錄 
(2)解壓 
# cd /usr/local/src/ 
# tar -zxvf FastDFS_v5.05.tar.gz 
# cd FastDFS 

 
(3)編譯、安裝(編譯前要確保已經成功安裝了 libfastcommon) 
# ./make.sh 
# ./make.sh install 


採用默認安裝的方式安裝,安裝後的相應文件與目錄: 
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 

 
(4)因爲 FastDFS 服務腳本設置的 bin 目錄是/usr/local/bin,但實際命令安裝在/usr/bin,可以進入 
/user/bin 目錄使用以下命令查看 fdfs 的相關命令: 
   # cd /usr/bin/ 
   # ls | grep fdfs 

 
因此需要修改 FastDFS 服務腳本中相應的命令路徑,也就是把/etc/init.d/fdfs_storaged 
和/etc/init.d/fdfs_tracker 兩個腳本中的/usr/local/bin 修改成/usr/bin: 
# vi fdfs_trackerd 
使用查找替換命令進統一修改:%s+/usr/local/bin+/usr/bin 
# vi fdfs_storaged 
使用查找替換命令進統一修改:%s+/usr/local/bin+/usr/bin 
 


二、配置 FastDFS 跟蹤器(192.168.4.121) 

 


1、 複製 FastDFS 跟蹤器樣例配置文件,並重命名: 
# cd /etc/fdfs/ 


# cp tracker.conf.sample tracker.conf 
 
2、 編輯跟蹤器配置文件: 
# vi /etc/fdfs/tracker.conf 
修改的內容如下: 
disabled=false    
port=
22122 
base_path=
/fastdfs/tracker 
(其它參數保留默認配置,具體配置解釋請參考官方文檔說明: 
http://bbs.chinaunix.net/thread-1941456-1-1.html ) 
 
3、 創建基礎數據目錄(參考基礎目錄 base_path 配置): 
# mkdir -p /fastdfs/tracker 
 
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 存儲(192.168.4.125) 

 


1、 複製 FastDFS 存儲器樣例配置文件,並重命名: 
# cd /etc/fdfs/ 
 
# cp storage.conf.sample storage.conf 

2、 編輯存儲器樣例配置文件: 
# vi /etc/fdfs/storage.conf 
修改的內容如下: 
disabled=false 
port=23000 
base_path=/fastdfs/storage 
store_path0=/fastdfs/storage 
tracker_server=192.168.4.121:22122 
http.server_port=8888 

(其它參數保留默認配置,具體配置解釋請參考官方文檔說明: 
http://bbs.chinaunix.net/thread-1941456-1-1.html ) 
 
3、 創建基礎數據目錄(參考基礎目錄 base_path 配置): 
# mkdir -p /fastdfs/storage 
 
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 

 


四、文件上傳測試(192.168.4.121) 

 


1、修改 Tracker 服務器中的客戶端配置文件: 
  # cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf 
  # vi /etc/fdfs/client.conf 
  base_path=/fastdfs/tracker 
tracker_server=192.168.4.121:22122 

 
2、執行如下文件上傳命令: 
  # /usr/bin/fdfs_upload_file /etc/fdfs/client.conf /usr/local/src/FastDFS_v5.05.tar.gz 
  返回 ID 號:group1/M00/00/00/wKgEfVUYNYeAb7XFAAVFOL7FJU4.tar.gz 
  (能返回以上文件 ID,說明文件上傳成功) 
 

六、在每個存儲節點上安裝 nginx 

 


1、fastdfs-nginx-module 作用說明 
FastDFS 通過 Tracker 服務器,將文件放在 Storage 服務器存儲,但是同組存儲服務器之間需要進入
文件複製,有同步延遲的問題。假設 Tracker 服務器將文件上傳到了 192.168.4.125,上傳成功後文件 ID
已經返回給客戶端。此時 FastDFS 存儲集羣機制會將這個文件同步到同組存儲 192.168.4.126,在文件還
沒有複製完成的情況下,客戶端如果用這個文件 ID 在 192.168.4.126 上取文件,就會出現文件無法訪問的
錯誤。而 fastdfs-nginx-module 可以重定向文件連接到源服務器取文件,避免客戶端由於複製延遲導致的
文件無法訪問錯誤。(解壓後的 fastdfs-nginx-module在 nginx 安裝時使用) 
 
2、上傳 fastdfs-nginx-module_v1.16.tar.gz 到/usr/local/src 
 
3、解壓 
# cd /usr/local/src/ 
# tar -zxvf fastdfs-nginx-module_v1.16.tar.gz 

 
4、修改 fastdfs-nginx-module 的 config 配置文件 
# cd fastdfs-nginx-module/src 
  # vi config 
CORE_INCS="$CORE_INCS /usr/local/include/fastdfs /usr/local/include/fastcommon/" 
修改爲: 
CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/" 

  (注意:這個路徑修改是很重要的,不然在 nginx 編譯的時候會報錯的) 
 
5、上傳當前的穩定版本 Nginx(nginx-1.6.2.tar.gz)到/usr/local/src 目錄 
 
6、安裝編譯 Nginx 所需的依賴包 
  # yum install gcc gcc-c++ make automake autoconf libtool pcre* zlib openssl openssl-devel 
 
7、編譯安裝 Nginx(添加fastdfs-nginx-module 模塊) 
  # cd /usr/local/src/ 
  # tar -zxvf nginx-1.6.2.tar.gz 
# cd nginx-1.6.2 
# ./configure --add-module=/usr/local/src/fastdfs-nginx-module/src 
  # make && make install 

 
8、複製 fastdfs-nginx-module 源碼中的配置文件到/etc/fdfs 目錄,並修改    
# cp /usr/local/src/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/ 
  # vi /etc/fdfs/mod_fastdfs.conf 
  修改以下配置: 
connect_timeout=
10 
base_path=/tmp 
tracker_server=
192.168.4.121:22122 
  storage_server_port=23000 
  group_name=group1 
  url_have_group_name =
true 
store_path0=/fastdfs/storage
 
 
9、複製 FastDFS 的部分配置文件到/etc/fdfs 目錄 
  # cd /usr/local/src/FastDFS/conf 
# cp http.conf mime.types /etc/fdfs/ 

 
10、在/fastdfs/storage 文件存儲目錄下創建軟連接,將其鏈接到實際存放數據的目錄 
  # ln -s /fastdfs/storage/data/ /fastdfs/storage/data/M00 
 
11、配置Nginx 
簡潔版 nginx 配置樣例: 
user  root
worker_processes  1; 
events { 
    worker_connections  1024; 

http { 
    include       mime.types; 
    default_type  application/octet-stream; 
    sendfile        on; 
    keepalive_timeout  65; 
    server { 
        listen      
8888
        server_name  localhost; 
       
location ~/group([0-9])/M00 { 
            #alias /fastdfs/storage/data; 
            ngx_fastdfs_module; 
        } 

        error_page   500 502 503 504  /50x.html; 
        location = /50x.html { 
            root   html; 
        } 
    } 

注意、說明:  


A、8888 端口值是要與/etc/fdfs/storage.conf 中的 http.server_port=8888 相對應, 
因爲 http.server_port 默認爲 8888,如果想改成 80,則要對應修改過來。 
B、Storage 對應有多個group的情況下,訪問路徑帶 group 名,如/group1/M00/00/00/xxx, 
對應的 Nginx 配置爲: 
location ~/group([0-9])/M00 { 
    ngx_fastdfs_module; 

C、如查下載時如發現老報 404,將 nginx.conf 第一行 user nobody 修改爲user root 後重新啓動。 
 
12、防火牆中打開Nginx 的8888 端口 
  # vi /etc/sysconfig/iptables 
  添加: 
  -A INPUT -m state --state NEW -m tcp -p tcp --dport 8888 -j ACCEPT 
  # service iptables restart 
 
13、啓動Nginx 
  # /usr/local/nginx/sbin/nginx 
  ngx_http_fastdfs_set pid=xxx 
  (重啓 Nginx 的命令爲:/usr/local/nginx/sbin/nginx -s reload) 
 
14、通過瀏覽器訪問測試時上傳的文件 
  http://192.168.4.125:8888/group1/M00/00/00/wKgEfVUYNYeAb7XFAAVFOL7FJU4.tar.gz  
 


七、FastDFS 的使用的 Demo 樣例講解與演示: 

 


具體內容請參考樣例代碼和視頻教程 
 
注意:千萬不要使用 kill  -9 命令強殺 FastDFS 進程,否則可能會導致 binlog 數據丟失。  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章