CentOS 7.0 之 FastDFS安裝

微笑面對生活發表於2018-10-08

FastDFS是一個開源的輕量級分散式檔案系統,它對檔案進行管理,功能包括:檔案儲存、檔案同步、檔案訪問(檔案上傳、檔案下載)等,解決了大容量儲存和負載均衡的問題。特別適合以檔案為載體的線上服務,如相簿網站、視訊網站等等。 FastDFS為網際網路量身定製,充分考慮了冗餘備份、負載均衡、線性擴容等機制,並注重高可用、高效能等指標,使用FastDFS很容易搭建一套高效能的檔案伺服器叢集提供檔案上傳、下載等服務。

1. 下載安裝 libfastcommon

libfastcommon是從 FastDFS 和 FastDHT 中提取出來的公共 C 函式庫,基礎環境,安裝即可 。

1.1 下載:
wget https://github.com/happyfish100/libfastcommon/archive/V1.0.7.tar.gz
複製程式碼
1.2 解壓:
tar -zxvf V1.0.7.tar.gz
複製程式碼
1.3 安裝:
cd libfastcommon-1.0.7
./make.sh
./make.sh install
複製程式碼
1.4 複製檔案:

解決FastDFS中lib配置檔案路徑問題。

cp /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so
cp /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so
複製程式碼

2. 下載安裝FastDFS

2.1 下載:
wget https://github.com/happyfish100/fastdfs/archive/V5.05.tar.gz
複製程式碼
2.2 解壓:
tar -zxvf V5.05.tar.gz
複製程式碼
2.3 安裝:
cd fastdfs-5.05
./make.sh   
./make.sh install
複製程式碼

安裝完成後,預設配置檔案目錄為:/etc/fdfs/,預設命令放在/usr/bin/中,以fdfs_開頭。

3. 配置FastDFS

首先將配置檔案複製到/etc/fdfs目錄下。

cd /home/fantj/download/fastdfs-5.05/conf
cp * /etc/fdfs/ 

如下:
[root@s168 conf]# cd /etc/fdfs/
[root@s168 fdfs]# ls
anti-steal.jpg  client.conf.sample  mime.types    storage.conf.sample  tracker.conf
client.conf     http.conf           storage.conf  storage_ids.conf     tracker.conf.sample
複製程式碼

3.1. 配置tracker.conf

FastDFS跟蹤器

修改如下配置:

#Tracker 資料和日誌目錄地址(根目錄必須存在,子目錄會自動建立)
base_path=/fastdfs/tracker
port=22122
複製程式碼
3.1.1 建立該目錄:

mkdir -p /fastdfs/tracker

3.1.2 啟動/關閉:

fdfs_trackerd /etc/fdfs/tracker.conf start/stop

預設使用/etc/fdfs下的配置檔案,如有指定配置可在後面追加引數。如有防火牆,開放防火牆規則。

3.1.3 設定開機啟動:
# systemctl enable fdfs_trackerd

或者:
# vim /etc/rc.d/rc.local
加入配置:
/etc/init.d/fdfs_trackerd start 
複製程式碼
3.1.4 tracker server 目錄及檔案結構 :

Tracker服務啟動成功後,會在base_path下建立data、logs兩個目錄。目錄結構如下:

${base_path}
  |__data
  |   |__storage_groups.dat:儲存分組資訊
  |   |__storage_servers.dat:儲存伺服器列表
  |__logs
  |   |__trackerd.log: tracker server 日誌檔案 
複製程式碼

3.2. 配置storage

下面只是基本配置,如有更細微的需要,則請檢視所有配置。

group_name=fantj     #組名
base_path=/fastdfs/storage   #日誌目錄
store_path0=/fastdfs/storage     #儲存目錄
tracker_server=192.168.27.168:22122    #tracker節點
http.server_port=8888    #埠
複製程式碼
3.2.1 啟動
可以用這種方式啟動
fdfs_storaged /etc/fdfs/storage.conf start

也可以用這種方式,後面都用這種
# service fdfs_storaged start
複製程式碼
3.2.2 檢查程式

netstat -unltp|grep fdfs

3.2.3 Storage 開機啟動
# systemctl enable fdfs_storaged

或者:
# vim /etc/rc.d/rc.local
加入配置:
/etc/init.d/fdfs_storaged start
複製程式碼
3.2.4 Storage 目錄

Storage 啟動成功後,在base_path 下建立了data、logs目錄,記錄著 Storage Server 的資訊。

在 store_path0 目錄下,建立了N*N個子目錄:

[root@s168 data]# pwd
/fastdfs/storage/data
[root@s168 data]# ls
00  07  0E  15  1C  23  2A  31  38  3F  46  4D  54  5B  62  69  70  77  7E  85  8C  93  9A  A1  A8  AF  B6  BD  C4  CB  D2  D9  E0  E7  EE  F5  FC
01  08  0F  16  1D  24  2B  32  39  40  47  4E  55  5C  63  6A  71  78  7F  86  8D  94  9B  A2  A9  B0  B7  BE  C5  CC  D3  DA  E1  E8  EF  F6  FD
02  09  10  17  1E  25  2C  33  3A  41  48  4F  56  5D  64  6B  72  79  80  87  8E  95  9C  A3  AA  B1  B8  BF  C6  CD  D4  DB  E2  E9  F0  F7  fdfs_storaged.pid
03  0A  11  18  1F  26  2D  34  3B  42  49  50  57  5E  65  6C  73  7A  81  88  8F  96  9D  A4  AB  B2  B9  C0  C7  CE  D5  DC  E3  EA  F1  F8  FE
04  0B  12  19  20  27  2E  35  3C  43  4A  51  58  5F  66  6D  74  7B  82  89  90  97  9E  A5  AC  B3  BA  C1  C8  CF  D6  DD  E4  EB  F2  F9  FF
05  0C  13  1A  21  28  2F  36  3D  44  4B  52  59  60  67  6E  75  7C  83  8A  91  98  9F  A6  AD  B4  BB  C2  C9  D0  D7  DE  E5  EC  F3  FA  storage_stat.dat
06  0D  14  1B  22  29  30  37  3E  45  4C  53  5A  61  68  6F  76  7D  84  8B  92  99  A0  A7  AE  B5  BC  C3  CA  D1  D8  DF  E6  ED  F4  FB  sync
複製程式碼

3.3. 配置client

vim client.conf

tracker_server=192.168.27.168:22122   #tracker節點
base_path=/fastdfs/client   #日誌路徑
複製程式碼

3.4. 本地圖片上傳測試

[root@s168 fdfs]# fdfs_upload_file /etc/fdfs/client.conf /home/test.png 
fantj/M00/00/00/wKgbqFu7T7iAJh7lAABDYbhAMC4812.png

或者:
[root@s168 fdfs]# fdfs_test /etc/fdfs/client.conf /home/test.png 
This is FastDFS client test program v5.05

Copyright (C) 2008, Happy Fish / YuQing

FastDFS may be copied only under the terms of the GNU General
Public License V3, which may be found in the FastDFS source kit.
Please visit the FastDFS Home Page http://www.csource.org/ 
for more detail.

[2018-5-08 20:41:15] DEBUG - base_path=/fastdfs/client, 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

invalid operation: /home/test.png

複製程式碼

4. 安裝nginx

之前有寫過nginx的安裝文章,在這裡不重複。沒有安裝過的請點選:

yum安裝(不推薦,因為還是需要用原始碼重新編譯nginx):點選檢視我的文章:nginx安裝

tar包安裝:

wget http://nginx.org/download/nginx-1.12.2.tar.gz
tar zxvf nginx-1.12.2.tar.gz
cd nginx-1.12.2
執行命令:./configure
make
make install
mkdir -p /var/tmp/nginx/client/
cp /usr/local/nginx/sbin/nginx /usr/sbin/
#啟動
nginx 
複製程式碼

5. FastDFS 配置 Nginx 模組

fastdfs-nginx-module 可以重定向檔案連結到源伺服器取檔案,避免客戶端由於複製延遲導致的檔案無法訪問錯誤。

5.1 下載安裝
wget https://github.com/happyfish100/fastdfs-nginx-module/archive/5e5f3566bbfa57418b5506aaefbe107a42c9fcb1.zip
unzip 5e5f3566bbfa57418b5506aaefbe107a42c9fcb1.zip
mv fastdfs-nginx-module-5e5f3566bbfa57418b5506aaefbe107a42c9fcb1/ fastdfs-nginx-module
複製程式碼
5.2 配置Nginx
ngix -s stop
cd nginx-1.12.1
#新增模組
./configure --add-module=../fastdfs-nginx-module/src
(如果你是yum安裝的nginx,找不到configure這個檔案,則執行yum -y install pcre* 新增依賴)
#重新編譯和安裝
make
make install

#拷貝配置檔案
[root@s168 src]# pwd
/home/fantj/download/fastdfs-nginx-module/src
[root@s168 src]# cp mod_fastdfs.conf /etc/fdfs/
複製程式碼

配置 /etc/fdfs/mod_fastdfs.conf檔案

#配置 /etc/fdfs/mod_fastdfs.conf檔案

base_path=/fastdfs/tmp  #日誌目錄
store_path0=/fastdfs/storage
tracker_server=192.168.27.168:22122
# the group name of the local storage server
group_name=fantj   #和storage的groupname一一對應
url_have_group_name = true   #開啟url中附帶group_name
複製程式碼

配置nginx

# 配置nginx
[root@s168 fdfs]# cd /usr/local/nginx/conf/
[root@s168 conf]# vim nginx.conf
#新增如下配置
server {
    listen 88;
    server_name 192.168.27.168;

    location /fantj/M00{
            ngx_fastdfs_module;
    }
}

# 進入/usr/local/nginx/sbin目錄執行配置檢測
[root@s168 sbin]# ./nginx  -t
ngx_http_fastdfs_set pid=6431
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
# 啟動nginx
[root@s168 sbin]# ./nginx 
ngx_http_fastdfs_set pid=6436
複製程式碼

服務重啟並測試

在服務重啟前,需要再確認一下所用到的目錄已建立。mkdir -p /fastdfs/{tmp,tracker,storage,client},如果沒有tmp目錄,nginx將啟動成功但是並不能訪問,也沒有錯誤日誌!

[root@s168 fdfs]# fdfs_trackerd tracker.conf restart
waiting for pid [1202] exit ...
starting ...
[root@s168 fdfs]# fdfs_storaged storage.conf restart
waiting for pid [1211] exit ...
starting ...
[root@s168 fdfs]# /usr/local/nginx/sbin/nginx -s reload
ngx_http_fastdfs_set pid=6463
複製程式碼

6. 配置成功測試

CentOS 7.0 之 FastDFS安裝

相關文章