FastDFS和Nginx實現分散式檔案伺服器

SIMBA1949發表於2018-02-07

FastDFS和Nginx實現分散式檔案伺服器

FastDFS是一個開源的輕量級分散式檔案系統,它對檔案進行管理,功能包括:檔案儲存、檔案同步、檔案訪問(檔案上傳、檔案下載)等,解決了大容量儲存和負載均衡的問題。特別適合以檔案為載體的線上服務,如相簿網站、視訊網站等等。

FastDFS為網際網路量身定製,充分考慮了冗餘備份、負載均衡、線性擴容等機制,並注重高可用、高效能等指標,使用FastDFS很容易搭建一套高效能的檔案伺服器叢集提供檔案上傳、下載等服務。

1.下載

FastDFS下載地址:https://sourceforge.net/projects/fastdfs/

FastDFS的github下載地址:https://github.com/happyfish100/fastdfs

libfastcommon的下載地址:https://sourceforge.net/projects/libfastcommon/

libfastcommon的github下載地址:https://github.com/happyfish100/libfastcommon

FastDFS-nginx-module的下載地址:https://sourceforge.net/projects/fastdfs/files/FastDFS%20Nginx%20Module%20Source%20Code/

FastDFS-nginx-module的github下載地址:https://github.com/happyfish100/fastdfs-nginx-module

Nginx下載地址:http://nginx.org/en/download.html

Nginx的github下載地址:https://github.com/nginx/nginx

2.架構圖

3.FastDFS-tracker安裝

3.1 FastDFS安裝環境

FastDFS是C語言開發,建議在linux上執行。

安裝FastDFS需要先將官網下載的原始碼進行編譯,編譯依賴gcc環境

yum install gcc-c++

3.2 安裝libevent

FastDFS依賴libevent庫

yum -y install libevent

這裡寫圖片描述

3.3 安裝libfastcommon

libfastcommon是FastDFS官方提供的,libfastcommon包含了FastDFS執行所需要的一些基礎庫。

上傳到linux,並解壓

這裡寫圖片描述

解壓後的目錄

這裡寫圖片描述

進入解壓目錄,進行編譯,安裝

編譯命令

[root@root libfastcommon-1.0.7]# ./make.sh

這裡寫圖片描述

安裝命令

[root@root libfastcommon-1.0.7]# ./make.sh install

這裡寫圖片描述
libfastcommon安裝好後會自動將庫檔案拷貝至/usr/lib64下,由於FastDFS程式引用usr/lib目錄所以需要將/usr/lib64下的庫檔案拷貝至/usr/lib下。

[root@root lib64]# cp libfastcommon.so /usr/lib

3.4 tracker編譯安裝

上傳FastDFS.tar.gz檔案,並解壓

[root@root fastdfs]# tar -zxvf FastDFS_v5.05.tar.gz

進入解壓的目錄,進行編譯,安裝

編譯命令

[root@root FastDFS]# ./make.sh

安裝命令

[root@root FastDFS]# ./make.sh install

安裝成功後,將安裝目錄下的conf下的檔案拷貝到/etc/fdfs/下

[root@root FastDFS]# cd conf/
[root@root conf]# cp * /etc/fdfs/

這裡寫圖片描述

這裡寫圖片描述

3.5 配置

安裝成功後進入/etc/fdfs目錄,修改tracker.conf

修改 base_path=/home/yuqing/fastdfs 為 base_path=/home/fastdfs

這裡寫圖片描述

3.6 啟動

啟動命令

[root@root fdfs]# /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart

這裡寫圖片描述

設定開機自動啟動

[root@root fdfs]# vi /etc/rc.d/rc.local

將執行命令新增進檔案

/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart

如圖

這裡寫圖片描述

4.FastDFS-storage的安裝

4.1 安裝libevent

同tracker安裝。(如果是一臺虛擬機器安裝Tracker和Storage,這裡可以省略)

FastDFS依賴libevent庫

yum -y install libevent

這裡寫圖片描述

4.2 安裝libfastcommon

同tracker安裝。(如果是一臺虛擬機器安裝Tracker和Storage,這裡可以省略)

libfastcommon是FastDFS官方提供的,libfastcommon包含了FastDFS執行所需要的一些基礎庫。

上傳到linux,並解壓

這裡寫圖片描述

解壓後的目錄

這裡寫圖片描述

進入解壓目錄,進行編譯,安裝

編譯命令

[root@root libfastcommon-1.0.7]# ./make.sh

這裡寫圖片描述

安裝命令

[root@root libfastcommon-1.0.7]# ./make.sh install

這裡寫圖片描述

libfastcommon安裝好後會自動將庫檔案拷貝至/usr/lib64下,由於FastDFS程式引用usr/lib目錄所以需要將/usr/lib64下的庫檔案拷貝至/usr/lib下。

[root@root lib64]# cp libfastcommon.so /usr/lib

4.3 storage編譯安裝

同tracker編譯安裝。(如果是一臺虛擬機器安裝Tracker和Storage,這裡可以省略)

上傳FastDFS.tar.gz檔案,並解壓

[root@root fastdfs]# tar -zxvf FastDFS_v5.05.tar.gz

進入解壓的目錄,進行編譯,安裝

編譯命令

[root@root FastDFS]# ./make.sh

安裝命令

[root@root FastDFS]# ./make.sh install

安裝成功後,將安裝目錄下的conf下的檔案拷貝到/etc/fdfs/下

[root@root FastDFS]# cd conf/
[root@root conf]# cp * /etc/fdfs/

這裡寫圖片描述
這裡寫圖片描述

4.4 配置

安裝成功後進入/etc/fdfs目錄

修改storage.conf檔案

將 base_path=/home/yuqing/fastdfs 改為:base_path=/home/fastdfs
將 store_path0=/home/yuqing/fastdfs 改為:store_path0=/home/fastdfs/fdfs_storage

這裡寫圖片描述

#如果有多個掛載磁碟則定義多個store_path,如下

#store_path1=...
#store_path2=...

這裡寫圖片描述

配置tracker伺服器ip

這裡寫圖片描述

4.5 啟動

啟動命令

[root@root fdfs]# /usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart

設定開機自動啟動
這裡寫圖片描述

5.上傳圖片測試

5.1 通過fdfs_test程式

FastDFS安裝成功可通過/usr/bin/fdfs_test測試上傳和下載等操作

修改/etc/fdfs/client.conf檔案

[root@root fdfs]# vi /etc/fdfs/client.conf

這裡寫圖片描述

上傳檔案使用格式

/usr/bin/fdfs_test 客戶端配置檔案地址 upload 上傳檔案

比如將/usr/local/application目錄下的1.png圖片上傳到FastDFS中

這裡寫圖片描述

上傳檔案的目錄下:

這裡寫圖片描述

由於現在還沒有和nginx整合無法使用http下載。

6.FastDFS 和 Nginx整合

6.1 在tracker上安裝Nginx

在每個tracker上安裝Nginx,目的是做負載均衡及實現高可用

……

6.2 在storage上安裝Nginx

6.2.1 FastDFS-nginx-module

上傳,並解壓

[root@root fastdfs-nginx-module]# tar -zxvf fastdfs-nginx-module_v1.16.tar.gz

進入fastdfs-nginx-module/src/目錄下,編輯config配置檔案

這裡寫圖片描述

將fastdfs-nginx-module/src/下的mod_fastdfs.conf檔案拷貝至/etc/fdfs/下

[root@root src]# cp mod_fastdfs.conf /etc/fdfs/

修改/etc/fdfs/mod_fastdfs.conf的內容

將 base_path=/tmp 修改為 base_path=/home/fastdfs

這裡寫圖片描述

這裡寫圖片描述

將 /usr/lib64/libfdfsclient.so拷貝至/usr/lib下

[root@root lib64]# cp /usr/lib64/libfdfsclient.so /usr/lib

建立nginx/client目錄

[root@root lib64]# mkdir -p /var/temp/nginx/client

6.2.2 nginx安裝

安裝環境

安裝pcre庫

[root@root lib64]# yum -y install pcre-devel

安裝zlib庫

[root@root lib64]# yum install -y zlib-devel

上傳Nginx,並解壓

[root@root nginx]# tar -zxvf nginx-1.7.7.tar.gz

新增fastDFS-nginx-module模組,進入解壓目錄,執行命令

[root@root nginx-1.7.7]# ./configure \
> --prefix=/usr/local/nginx \
> --pid-path=/var/run/nginx/nginx.pid \
> --lock-path=/var/lock/nginx.lock \
> --error-log-path=/var/log/nginx/error.log \
> --http-log-path=/var/log/nginx/access.log \
> --with-http_gzip_static_module \
> --http-client-body-temp-path=/var/temp/nginx/client \
> --http-proxy-temp-path=/var/temp/nginx/proxy \
> --http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
> --http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
> --http-scgi-temp-path=/var/temp/nginx/scgi \
> --add-module=/usr/local/application/fastdfs/fastdfs-nginx-module/fastdfs-nginx-module/src

–prefix=/usr/local/nginx \ :是安裝目錄

配置成功如下圖

這裡寫圖片描述

進入nginx的解壓目錄,編譯並安裝

[root@root nginx-1.7.7]# make
[root@root nginx-1.7.7]# make install

6.2.3 nginx配置檔案

修改nginx安裝目錄下的配置檔案conf/nginx.conf

這裡寫圖片描述

6.3 啟動

啟動Nginx

[root@root conf]# /usr/local/nginx/sbin/nginx

設定開機自動開啟

[root@root conf]# vi /etc/rc.d/rc.local

將執行命令新增進檔案,如下圖

這裡寫圖片描述

6.4 測試

訪問上傳的圖片

[root@root 00]# /usr/bin/fdfs_test /etc/fdfs/client.conf upload /usr/local/application/love.jpg 

返回訪問路徑

這裡寫圖片描述

訪問

這裡寫圖片描述

這裡寫圖片描述

相關文章