FastDFS安裝步驟

FastDFS是用c語言編寫的一款開源的分佈式文件系統,充分考慮了冗餘備份、負載均衡、線性擴容等機制,並注重高可用、高性能等指標,使用FastDFS很容易搭建一套高性能的文件服務器集羣提供文件上傳、下載等服務。

一、FastDFS架構

FastDFS架構包括Tracker serverStorage server。客戶端請求Tracker server進行文件上傳、下載,通過Tracker server調度最終由Storage server完成文件上傳和下載。

圖1

1.Tracker Server

Tracker server作用是負載均衡和調度,通過Tracker server在文件上傳時可以根據一些策略找到Storage server提供文件上傳服務,可以將tracker稱爲追蹤服務器或調度服務器。

2.Storage server

Storage server作用是文件存儲,客戶端上傳的文件最終存儲在Storage服務器上,Storage server沒有實現自己的文件系統而是利用操作系統的文件系統來管理文件。可以將storage稱爲存儲服務器。

二、FastDFS安裝

FastDFS的安裝比較麻煩,需要配置許多的參數,所以要有耐心。本次配置是在Ubuntu系統版本爲16.04.3 LTS下進行的,並且是乾淨的版本,比如gccssh等軟件包都沒有安裝。

下面開始進行環境配置:

1.軟件包

下面是安裝FastDFS的安裝包,也可以下載到:FastDFS,密碼爲:ideg

軟件包 版本
FastDFS v5.05
libfastcommon v1.0.7
fastdfs-nginx-module v1.16
nginx v1.12.1

2.安裝libfastcommon

在編譯libfastcommon之前,要先安裝gcc的編譯器:

sudo apt-get install build-essential

如果提示某些包安裝不上,請先更新apt:

sudo apt-get update

之後再安裝gcc,安裝成功後就可以編譯安裝了:

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

最後,把生成的libfastcommon庫拷貝到/usr/lib目錄下

sudo cp /usr/lib64/* /usr/lib/

3.編譯FastDFS

解壓FastDFS_v5.05.tar.gz,然後編譯安裝FastDFS:

tar zxf FastDFS_v5.05.tar.gz
./make.sh
sudo ./make.sh install

安裝成功後將目錄conf內的文件拷貝到/etc/fdfs目錄下:

sudo cp conf/* /etc/fdfs/

4.安裝tracker

進入/etc/fdfs目錄,修改tracker.conf文件。如果不存在,就拷貝tracker.conf.sample文件爲tracker.conf,然後再修改:

base_path=/home/yuqing/fastdfs >>> base_path=/home/kelvin/data/fastdfs

http.server_port=8080 >>> http.server_port=80

其中,/home/kelvin/data/fastdfs目錄如果不存在,就創建一個。

之後,就啓動tracker,並查看是啓動成功(出現如下提示,表示啓動成功):

$ fdfs_trackerd /etc/fdfs/tracker.conf start
$ netstat -unltp | grep tracker
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 0.0.0.0:22122           0.0.0.0:*               LISTEN      7281/fdfs_trackerd

5.安裝storage

修改storage.conf文件。如果不存在,就拷貝storage.conf.sample文件爲storage.conf,然後再修改:

base_path=/home/yuqing/fastdfs >>> base_path=/home/kelvin/data/fastdfs/storage
store_path0=/home/yuqing/fastdfs >>> store_path0=/home/kelvin/data/fastdfs/storage
tracker_server=192.168.209.121:22122 >>> tracker_server=192.168.2.231:22122

其中,如果/home/kelvin/data/fastdfs/storage不存在,就創建該目錄

然後,就啓動storage,並查看是否成功(出現如下提示,表示啓動成功):

$ fdfs_storaged /etc/fdfs/storage.conf start
$ netstat -unltp | grep storage
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 0.0.0.0:23000           0.0.0.0:*               LISTEN      7348/fdfs_storaged

最後,查看trackerstorage是不是在通信:

$ fdfs_monitor /etc/fdfs/storage.conf
...
current trunk file id = 0

    Storage 1:
        id = 192.168.2.231
        ip_addr = 192.168.2.231  ACTIVE
...

如上提示,出現ACTIVE,表示二者均正常啓動,至此就可以進行上傳文件測試了。

6.安裝Nginx

首先解壓fastdfs-nginx-module_v1.16.tar.gz,然後把解壓後的文件目錄整個拷貝到/usr/local/src目錄下。

然後配置nginx,加入fastdfs-nginx-module模塊:

$ sudo ./configure --add-module=/usr/local/src/fastdfs-nginx-module/src/

如果出現如下錯誤,

error: the HTTP rewrite module requires the PCRE library

請安裝libpcre3ssh的庫

$ sudo apt-get install libpcre3 libpcre3-dev
$ sudo apt-get install openssl libssl-dev

之後再執行configure配置,完成後進行安裝:

sudo make

如果出現如下錯誤:

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

則需要再添加如下配置:

1.把/usr/lib64/libfdfsclient.so庫拷貝到/usr/lib/目錄下:

$ sudo cp /usr/lib64/libfdfsclient.so /usr/lib/

2.配置/usr/local/src/fastdfs-nginx-module/src/目錄下的config文件,把CORE_INCSCORE_LIBS的所有路徑都修改爲/usr/include/usr/lib

$ sudo vi /usr/local/src/fastdfs-nginx-module/src/config
...
CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
CORE_LIBS="$CORE_LIBS -L/usr/lib -lfastcommon -lfdfsclient"
...

之後就可以執行編譯和安裝了:

$ sudo make && sudo make install

完成之後,可以查看fastdfs-nginx-module是否配置成功(下面提示表示配置成功):

$ /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.12.1
built by gcc 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4) 
configure arguments: --add-module=/usr/local/src/fastdfs-nginx-module/src

7.整合fastdfs-nginx-module 和 Nginx

首先到/usr/local/src/fastdfs-nginx-module-master/src/目錄下,拷貝mod_fastdfs.conf文件到/etc/fdfs目錄下,然後進行如下配置:

base_path=/home/kelvin/data/fastdfs
tracker_server=192.168.2.231:22122
url_have_group_name = true
store_path0=/home/kelvin/data/fastdfs/storage

然後配置Nginx,添加如下內容:

    server {
        listen       80;
        server_name  localhost;

        ...

         # 配置fastdfs的訪問路徑
        location /group1/M00 {
            ngx_fastdfs_module;
        }
        ...
    }

之後啓動nginx:

$ sudo /usr/local/nginx/sbin/nginx 
ngx_http_fastdfs_set pid=23238

上傳測試

在進行測試之前,我們還需要先配置一下client.conf文件,該文件在/etc/fdfs目錄下,配置如下:

$ sudo vi /etc/fdfs/cli
...
base_path=/home/kelvin/data/fastdfs
tracker_server=192.168.2.231:22122
...

然後,創建一個test.txt文件,隨便輸入一些內容,再進行上傳:

$ echo HelloWorld > ~/test.txt
$ fdfs_test /etc/fdfs/client.conf upload ~/test.txt
...
[2017-09-23 20:12:00] DEBUG - base_path=/home/kelvin/data/fastdfs, connect_timeout=30, network_timeout=60, tracker_server_count=1, anti_steal_token=0, anti_steal_secret_key length=0, use_connection_pool=0, g_connection_pool_max_idle_time=3600s, use_storage_id=0, storage server id count: 0

tracker_query_storage_store_list_without_group: 
    server 1. group_name=, ip_addr=192.168.2.231, port=23000

group_name=group1, ip_addr=192.168.2.231, port=23000
storage_upload_by_filename
group_name=group1, remote_filename=M00/00/00/wKgC51nHIoCACtpSAAAAC5KLpvs082.txt
source ip address: 192.168.2.231
file timestamp=2017-09-23 20:12:00
file size=11
file crc32=2458625787
example file url: http://192.168.2.231/group1/M00/00/00/wKgC51nHIoCACtpSAAAAC5KLpvs082.txt
...

最後,在瀏覽器裏輸入http://192.168.2.231/group1/M00/00/00/wKgC51nHIoCACtpSAAAAC5KLpvs082.txt,即可訪問到test.txt的文件內容:

圖2


以上就是Fastdfs的安裝過程,如有錯誤,歡迎指出,共同進步。(文中部分圖片來自互聯網,版權歸原作者所有)

參考資料

FastDFS安裝全過程記錄

FastDFS安裝部署操作手冊

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