FastDFS(Fast Distributed File System)是一款開源輕量級分佈式文件系統,本文不講解原理和架構,只是在我的使用部署過程當中耗費了好長時間和精力,遇到了不少的坑,因而總結成了一篇詳細的部署文檔分享給你們。nginx
獲取libfastcommon安裝包:git
wget https://github.com/happyfish100/libfastcommon/archive/V1.0.38.tar.gz
解壓安裝包:tar -zxvf V1.0.38.tar.gzgithub
進入目錄:cd libfastcommon-1.0.38vim
執行編譯:./make.shcentos
安裝:./make.sh install
瀏覽器
可能遇到的問題:ruby
-bash: make: command not found -bash: gcc: command not found
解決方案:debian經過apt-get install gcc make安裝 centos經過yum -y install gcc make安裝
獲取fdfs安裝包:bash
wget https://github.com/happyfish100/fastdfs/archive/V5.11.tar.gz
解壓安裝包:tar -zxvf V5.11.tar.gz服務器
進入目錄:cd fastdfs-5.11架構
執行編譯:./make.sh
安裝:./make.sh install
查看可執行命令:ls -la /usr/bin/fdfs*
編輯tracker.conf:vi tracker.conf,修改相關參數
base_path=/home/mm/fastdfs/tracker #tracker存儲data和log的跟路徑,必須提早建立好 port=23000 #tracker默認23000 http.server_port=80 #http端口,須要和nginx相同
啓動tracker(支持start|stop|restart):
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf start
查看tracker啓動日誌:進入剛剛指定的base_path(/home/mm/fastdfs/tracker)中有個logs目錄,查看tracker.log文件
查看端口狀況:netstat -apn|grep fdfs
可能遇到的報錯:
解決方案:創建libfastcommon.so軟連接/usr/bin/fdfs_trackerd: error while loading shared libraries: libfastcommon.so: cannot open shared object file: No such file or directoryln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so ln -s /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so
編輯storage.conf:vi storage.conf,修改相關參數:
base_path=/home/mm/fastdfs/storage #storage存儲data和log的跟路徑,必須提早建立好 port=23000 #storge默認23000,同一個組的storage端口號必須一致 group_name=group1 #默認組名,根據實際狀況修改 store_path_count=1 #存儲路徑個數,須要和store_path個數匹配 store_path0=/home/mm/fastdfs/storage #若是爲空,則使用base_path tracker_server=10.122.149.211:22122 #配置該storage監聽的tracker的ip和port
啓動storage(支持start|stop|restart):
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf start
查看storage啓動日誌:進入剛剛指定的base_path(/home/mm/fastdfs/storage)中有個logs目錄,查看storage.log文件
此時再查看tracker日誌:發現已經開始選舉,而且做爲惟一的一個tracker,被選舉爲leader
查看端口狀況:netstat -apn|grep fdfs
經過monitor來查看storage是否成功綁定:
/usr/bin/fdfs_monitor /etc/fdfs/storage.conf

下載Nginx安裝包
wget http://nginx.org/download/nginx-1.15.2.tar.gz
下載fastdfs-nginx-module安裝包
wget https://github.com/happyfish100/fastdfs-nginx-module/archive/V1.20.tar.gz
解壓nginx:tar -zxvf nginx-1.15.2.tar.gz
解壓fastdfs-nginx-module:tar -xvf V1.20.tar.gz
進入nginx目錄:cd nginx-1.10.1
安裝依賴的庫
apt-get update apt-get install libpcre3 libpcre3-dev openssl libssl-dev libperl-dev
配置,並加載fastdfs-nginx-module模塊:
./configure --prefix=/usr/local/nginx --add-module=/usr/local/src/fastdfs-nginx-module-1.20/src/
編譯安裝:
make make install
查看安裝路徑:whereis nginx
啓動、中止:
cd /usr/local/nginx/sbin/ ./nginx ./nginx -s stop #此方式至關於先查出nginx進程id再使用kill命令強制殺掉進程 ./nginx -s quit #此方式中止步驟是待nginx進程處理任務完畢進行中止 ./nginx -s reload
驗證啓動狀態:wget "http://127.0.0.1"
查看此時的nginx版本:發現fastdfs模塊已經安裝好了
可能的報錯:
解決方案:修改fastdfs-nginx-module-1.20/src/config文件,而後從新第7步開始/usr/include/fastdfs/fdfs_define.h:15:27: fatal error: common_define.h: No such file or directoryngx_module_incs="/usr/include/fastdfs /usr/include/fastcommon/" CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
配置mod-fastdfs.conf,並拷貝到/etc/fdfs文件目錄下
cd fastdfs-nginx-module-1.20/src/ cp mod_fastdfs.conf /etc/fdfs
進入/etc/fdfs修改mod-fastdfs.conf:
base_path=/home/mm/fastdfs tracker_server=10.122.149.211:22122 #tracker的地址 url_have_group_name=true #url是否包含group名稱 storage_server_port=23000 #須要和storage配置的相同 store_path_count=1 #存儲路徑個數,須要和store_path個數匹配 store_path0=/home/mm/fastdfs/storage #文件存儲的位置
配置nginx,80端口server增長location如圖:
cd /usr/local/nginx/conf/ vi nginx.conf

最後須要拷貝fastdfs解壓目錄中的http.conf和mime.types:
cd /usr/local/src/fastdfs-5.11/conf cp mime.types http.conf /etc/fdfs/
修改client.conf相關配置:
base_path=/home/mm/fastdfs/tracker //tracker服務器文件路徑 tracker_server=10.122.149.211:22122 //tracker服務器IP地址和端口號 http.tracker_server_port=80 # tracker服務器的http端口號,必須和tracker的設置對應起來
新建一個測試文檔1.txt,內容爲abc
命令:
/usr/bin/fdfs_upload_file <config_file> <local_filename>
示例:
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf 1.txt

組名:group1 磁盤:M00 目錄:00/00 文件名稱:CnqV01trmeyAbAN0AAAABLh3frE677.txt
查看結果,進入storage的data目錄:
經過wget和瀏覽器方式訪問成功:
wget http://10.122.149.211/group1/M00/00/00/CnqV01trmeyAbAN0AAAABLh3frE677.txt

命令:
/usr/bin/fdfs_download_file <config_file> <file_id> [local_filename]
示例:
/usr/bin/fdfs_download_file /etc/fdfs/client.conf group1/M00/00/00/CnqV01trmeyAbAN0AAAABLh3frE677.txt a.txt
查看結果:
命令:
/usr/bin/fdfs_delete_file <config_file> <file_id>
示例:
/usr/bin/fdfs_delete_file /etc/fdfs/client.conf group1/M00/00/00/CnqV01trmeyAbAN0AAAABLh3frE677.txt
查看結果,進入storage的data目錄文件不存在,經過wget再次獲取404: