1. 程式人生 > >【Fastdfs】Fastdfs分散式檔案系統的安裝部署使用,結合nginx訪問圖片,fastdfs連線池connectionpool編寫使用,文末有github連結

【Fastdfs】Fastdfs分散式檔案系統的安裝部署使用,結合nginx訪問圖片,fastdfs連線池connectionpool編寫使用,文末有github連結

環境:centos 7.X

預編譯安裝元件

yum install gcc gcc-c++ automake pcre pcre-devel zlip zlib-devel openssl openssl-devel libevent-dev git -y

 

以上安裝完,後續的各個元件都可以成功編譯安裝了

libfastcommon安裝

 

git clone https://github.com/cwtree/libfastcommon.git --depth 1

cd libfastcommon/

./make.sh && ./make.sh install

 

這裡我是把原始碼都fork到我的github倉庫裡了,以後都直接clone我自己的倉庫,為了遮蔽源地址更新帶來的風險。

fastdfs安裝

git clone https://github.com/cwtree/fastdfs.git --depth=1

 

在fastdfs目錄下./make.sh && ./make.sh install

安裝完成之後,注意以下兩個目錄:

fastDFS命令目錄:/usr/bin

fastDFS配置檔案目錄:/etc/fdfs

將官網的配置資料夾下的所有配置拷貝到/etc/fdfs目錄下

 

https://github.com/cwtree/fastdfs/tree/master/conf

 

tracker配置啟動

 

vim /etc/fdfs/tracker.conf #需要修改的內容如下

port=22122 # tracker伺服器埠(預設22122,一般不修改)

base_path=/data/fastdfs # 儲存日誌和資料的根目錄

啟停

/etc/init.d/fdfs_trackerd start #啟動tracker服務

/etc/init.d/fdfs_trackerd restart #重啟動tracker服務

/etc/init.d/fdfs_trackerd stop #停止tracker服務

chkconfig fdfs_trackerd on #自啟動tracker服務

 

storage配置啟動

 

vim /etc/fdfs/storage.conf #需要修改的內容如下

port=23000 # storage服務埠(預設23000,一般不修改)

base_path=/home/dfs # 資料和日誌檔案儲存根目錄

store_path0=/home/dfs # 第一個儲存目錄

tracker_server=192.168.52.2:22122 # 伺服器1

tracker_server=192.168.52.3:22122 # 伺服器2

tracker_server=192.168.52.4:22122 # 伺服器3

http.server_port=8888 # http訪問檔案的埠(預設8888,看情況修改,和nginx中保持一致)

 

檢測叢集資訊

/usr/bin/fdfs_monitor /etc/fdfs/storage.conf # 會顯示會有幾臺伺服器 有3臺就會 顯示 Storage 1-Storage 3的詳細資訊

 

 

啟停

/etc/init.d/fdfs_storaged start #啟動storage服務

/etc/init.d/fdfs_storaged restart #重動storage服務

/etc/init.d/fdfs_storaged stop #停止動storage服務

chkconfig fdfs_storaged on #自啟動storage服務

 

安裝fastdfs-nginx-module

 

git clone https://github.com/cwtree/fastdfs-nginx-module.git --depth 1

cp /usr/local/src/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs

cp /xxx/mod_fastdfs.conf /etc/fdfs/

 

編譯安裝nginx

官網下載安裝包

http://nginx.org/en/download.html

將上面的fastdfs-nginx-module模組編譯到nginx裡

./configure --add-module=/home/fastdfs/fastdfs-nginx-module/src/ --prefix=/home/nginx/install && make && make install

 

修改fastdfs-nginx-module的配置檔案

vim /etc/fdfs/mod_fastdfs.conf #需要修改的內容如下

tracker_server=192.168.52.2:22122 # 伺服器1

tracker_server=192.168.52.3:22122 # 伺服器2

tracker_server=192.168.52.4:22122 # 伺服器3

url_have_group_name=true

store_path0=/home/dfs

nginx配置

#配置nginx.config

vim /usr/local/nginx/conf/nginx.conf

#新增如下配置

 

nginx啟停

啟動命令,指定自定義配置檔案啟動

/usr/local/nginx/sbin/nginx -c xxx.conf

/usr/local/nginx/sbin/nginx -t -c xxx.conf檢查配置檔案語法正確性

 

/usr/local/nginx/sbin/nginx #啟動

nginx /usr/local/nginx/sbin/nginx -s reload #重啟

nginx /usr/local/nginx/sbin/nginx -s stop #停止nginx

 

將fastdfs-nginx模組編譯安裝nginx裡可能會遇到問題

/root/fastdfs-nginx-module-master/src/common.c:1245: error: 'FDFSHTTPParams' has no member named 'support_multi_range'

 root/fastdfs-nginx-module/src//common.c:21:25: fatal error: fdfs_define.h: No such file or directory

/usr/src/fastdfs-nginx-module/src/common.c:21:25:致命錯誤:fdfs_define.h:沒有那個檔案或目錄
             #include "fdfs_define.h" 

解決如下:

 

ngx_module_incs="/usr/include/fastdfs /usr/include/fastcommon/"

CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"

 

sed -i 's#(pContext->range_count > 1 && !g_http_params.support_multi_range))#(pContext->range_count > 1))#g' /home/fastdfs/fastdfs-nginx-module/src/common.c | grep '(pContext->range_count > 1))'

 

圖片訪問測試

圖片地址類似這種,每次上傳完畢,會返回fileid,自己儲存
http://172.28.72.81:8888/group1/M00/00/00/rBxIUVwSVT-ABrjpAACJf1xkvK0026.jpg

 

FASTDFS連線池 pool

fastdfspool連線池的實現,大家可以參照我的github

https://github.com/cwtree/fastdfspool.git

親測可用