1、安裝檔案下載下傳
作者的GitHub位址:https://github.com/happyfish100
fastdfs-5.11.zip
libfastcommon-master.zip
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICdzFWRoRXdvN1LclHdpZXYyd2LcBzNvwVZ2x2bzNXak9CX90TQNNkRrFlQKBTSvwFbslmZvwFMwQzLcVmepNHdu9mZvwFVywUNMZTY18CX052bm9CX9UEVPVzYU90MjpXTmJEViZXUYpVd1kmYr50MZV3YyI2cKJDT29GRjBjUIF2LcRHelR3LcJzLctmch1mclRXY39TNzgDMzcDN2EzNxYDM3EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
把下載下傳的檔案複制到centOS上,我的存放目錄是:/usr/local/fastdfs
先安裝類庫
一定要先安裝,否則後面或報錯
yum -y install zlib zlib-devel pcre pcre-devel gcc gcc-c++ openssl openssl-devel libevent libevent-devel perl unzip net-tools wget
2、安裝libfastcommon-master
libfastcommon-master.zip是一款從FastDFS項目中剝離出來的C基礎庫。libfastcommon是一款開源的C基礎庫,她是從FastDFS項目中剝離出來的C基礎庫。 這個庫非常簡單穩定。 函數包括:字元串,記錄器,鍊,散列,套接字,ini檔案讀取器,base64編碼/解碼,url編碼/解碼,快速定時器,skiplist,對象池等詳細資訊請看c頭檔案。fastDFS是C語言開發的,是以需要先安裝 此庫。
由于我的centOS7是最小化安裝,我裡面沒有安裝zip解壓。
先安裝 :libfastcommon-master.zip
yum -y install unzip zip
安裝成功後解壓libfastcommon-master.zip
unzip libfastcommon-master.zip
進入我們剛剛解壓的目錄:
cd libfastcommon-master
用yum安裝gcc:
yum指令相當好用,是RedHad和CentOS從指定伺服器下載下傳RPM包并自動安裝。我個人比較喜歡。
yum -y install gcc-c++
分别執行一下兩個指令安裝:
./make.sh
./make.sh install
libfastcommon預設會被安裝到/usr/lib64/libfastcommon.so但是FastDFS的主程式卻在/usr/local/lib目錄下
這個時候我們就要建立一個軟連結了,實際上也相當于windows上的快捷方式。
ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so
ln -s /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so
ln -s /usr/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so
ln -s /usr/lib64/libfdfsclient.so /usr/lib/libfdfsclient.so
注意:libfdfsclient.so可能招不到,是以建立軟連接配接的過程可以等到安裝完fastdfs後再執行,安裝了fastdfs後再/usr/lib64目錄下會出現libfdfsclient.so檔案。
2、安裝FastDFS
解壓FastDFS安裝包
unzip fastdfs-5.11.zip
進到剛解壓的目錄:
cd fastdfs-5.11
./make.sh
./make.sh install
如果沒有報錯那麼就成功了。安裝log中會提示FastDFS安裝到了/etc/fdfs目錄下。
成功後檢視安裝目錄:
[[email protected] ftp]# cd /etc/fdfs/
[[email protected] fdfs]# ll
-rw-r--r-- 1 root root 1461 Jun 8 21:56 client.conf.sample
-rw-r--r-- 1 root root 7927 Jun 8 21:56 storage.conf.sample
-rw-r--r-- 1 root root 7389 Jun 8 21:56 tracker.conf.sample
我們需要把這三個示例檔案複制一份,去掉.sample。
cp client.conf.sample client.conf
cp storage.conf.sample storage.conf
cp tracker.conf.sample tracker.conf
FastDFS安裝結束。
3、安裝tracker
該步驟主要建立tracker的工作目錄,并把建立的目錄配置到tracker.conf檔案中
3.1、建立tracker工作目錄:
我建立的目錄為:
/usr/local/fastdfs/dev/fastdfs_tracker
3.2、配置tracker:
cd /etc/fdfs
vim tracker.conf
打開後重點關注下面4個配置:
disabled=false #預設開啟
port=22122 #預設端口号
base_path=/usr/local/fastdfs/dev/fastdfs_tracker #我剛剛建立的目錄
http.server_port=6666 #預設端口是8080
3.2、啟動tracker
儲存配置後啟動tracker,指令如下:
[[email protected] fastdfs_tracker]# service fdfs_trackerd start
Starting FastDFS tracker server:
[[email protected] fastdfs_tracker]#
啟動成功!進行剛剛建立的tracker目錄,發現目錄中多了data和log兩個目錄。
如果要停止,請執行:service fdfs_trackerd stop指令
4、安裝storage
storage的安裝與tracker很類似;
與tracker不現的是,由于storage還需要一個目錄用來存儲資料,是以我另外多建了一個fasdfs_storage_data
4.1、為storage配置工作目錄
下面是我的目錄結構:
drwxr-xr-x. 4 root root 4096 11月 5 01:20 fastdfs_storage
drwxr-xr-x. 3 root root 4096 11月 5 01:22 fastdfs_storage_data
drwxr-xr-x. 4 root root 4096 11月 5 00:39 fastdfs_tracker
[[email protected] dev]# pwd
/usr/local/fastdfs/dev
4.2、修改storage配置檔案
修改storage.conf
vim /etc/fdfs/storage.conf
disabled=false
group_name=group1 #組名,根據實際情況修改
port=23000 #設定storage的端口号,預設是23000,同一個組的storage端口号必須一緻
base_path=/usr/local/fastdfs/dev/fastdfs_storage #設定storage資料檔案和日志目錄
store_path_count=1 #存儲路徑個數,需要和store_path個數比對
store_path0=/usr/local/fastdfs/dev/fastdfs_storage_data #實際檔案存儲路徑
tracker_server=192.168.0.89:22122 #把storage注冊到tracker_server中,如果有多個,則服務多行
http.server_port=8888 #設定 http 端口号
修改儲存後建立軟引用
ln -s /usr/bin/fdfs_storaged /usr/local/bin
4.3 啟動storage
[[email protected] dev]# service fdfs_storaged start
Starting FastDFS storage server:
[[email protected] dev]#
5、加入開機自啟動
加入權限:
chmod +x /etc/rc.d/rc.local
分别把strackerd和storaged的啟動指令加入:vim /etc/rc.d/rc.local
#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.
touch /var/lock/subsys/local
service fdfs_trackerd start
service fdfs_storaged start
檢視服務是否啟動
[[email protected] dev]# netstat -unltp | grep fdfs
tcp 0 0 0.0.0.0:23000 0.0.0.0:* LISTEN 5382/fdfs_storaged
tcp 0 0 0.0.0.0:22122 0.0.0.0:* LISTEN 19866/fdfs_trackerd
[[email protected] dev]#
服務已正常啟動。
6、驗證是否正常
[[email protected] dev]# /usr/bin/fdfs_monitor /etc/fdfs/storage.conf
[2019-11-06 00:18:43] DEBUG - base_path=/usr/local/fastdfs/dev/fastdfs_storage, connect_timeout=10, 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
server_count=1, server_index=0
tracker server is 192.168.0.89:22122
group count: 1
Group 1:
group name = group1
disk total space = 15756 MB
disk free space = 2872 MB
trunk free space = 0 MB
storage server count = 1
active server count = 1
storage server port = 23000
storage HTTP port = 8888
store path count = 1
subdir count per path = 256
current write server index = 0
current trunk file id = 0
Storage 1:
id = 192.168.0.89
ip_addr = 192.168.0.89 (anantes-651-1-49-net.w2-0.abo.wanadoo.fr) ACTIVE
http domain =
version = 6.01
join time = 2019-11-05 01:22:36
up time = 2019-11-06 00:10:37
total storage = 15756 MB
free storage = 2872 MB
upload priority = 10
store_path_count = 1
subdir_count_per_path = 256
storage_port = 23000
storage_http_port = 8888
current_write_path = 0
source storage id =
if_trunk_server = 0
connection.alloc_count = 256
connection.current_count = 0
connection.max_count = 0
total_upload_count = 99
success_upload_count = 99
total_append_count = 0
success_append_count = 0
total_modify_count = 0
success_modify_count = 0
total_truncate_count = 0
success_truncate_count = 0
total_set_meta_count = 4
success_set_meta_count = 4
total_delete_count = 0
success_delete_count = 0
total_download_count = 3
success_download_count = 3
total_get_meta_count = 1
success_get_meta_count = 1
total_create_link_count = 0
success_create_link_count = 0
total_delete_link_count = 0
success_delete_link_count = 0
total_upload_bytes = 957160135
success_upload_bytes = 957160135
total_append_bytes = 0
success_append_bytes = 0
total_modify_bytes = 0
success_modify_bytes = 0
stotal_download_bytes = 70076196
success_download_bytes = 70076196
total_sync_in_bytes = 0
success_sync_in_bytes = 0
total_sync_out_bytes = 0
success_sync_out_bytes = 0
total_file_open_count = 103
success_file_open_count = 103
total_file_read_count = 271
success_file_read_count = 271
total_file_write_count = 3687
success_file_write_count = 3687
last_heart_beat_time = 2019-11-06 00:18:36
last_source_update = 2019-11-05 23:17:00
last_sync_update = 1970-01-01 08:00:00
last_synced_timestamp = 1970-01-01 08:00:00
[[email protected] dev]#
6.1、配置用戶端
同樣的,需要修改用戶端的配置檔案:
vim /etc/fdfs/client.conf
base_path=/usr/local/fastdfs/dev/fastdfs_tracker #tracker伺服器檔案路徑
tracker_server=192.168.0.89:22122 #tracker伺服器IP位址和端口号
http.tracker_server_port=6666 # tracker 伺服器的 http端口号,必須和tracker的設定對應起來
6.2 模拟上傳
确定圖檔位置後,我們輸入上傳圖檔指令:
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf /usr/yong.cao/ftp/593d8f1eN5b3b8133.jpg #這後面放的是圖檔的位置
成功後會傳回圖檔的路徑:
[[email protected] ~]# /usr/bin/fdfs_upload_file /etc/fdfs/client.conf /usr/yong.cao/ftp/593d8f1eN5b3b8133.jpg
group1/M00/00/00/wKiAg1lE9WqAWu_ZAAFaL_xdW_s943.jpg
組名:group1
磁盤:M00
目錄:00/00
檔案名稱:wKiAg1lE9WqAWu_ZAAFaL_xdW_s943.jpg
我們上傳的圖檔會被上傳到我們建立的storage_data目錄下,讓我們去看看:
果然通過剛剛傳回的路徑,我們成功找到了圖檔。
我們仔細看一下,實際檔案存儲路徑下有建立好的多級目錄。data下有256個1級目錄,每級目錄下又有256個2級子目錄,總共65536個檔案,新寫的檔案會以hash的方式被路由到其中某個子目錄下,然後将檔案資料直接作為一個本地檔案存儲到該目錄中。