【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
親測可用