1、安装文件下载
作者的GitHub地址:https://github.com/happyfish100
把下载的文件复制到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目录下。
成功后查看安装目录:
[root@localhost ftp]# cd /etc/fdfs/
[root@localhost 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,命令如下:
[root@demo fastdfs_tracker]# service fdfs_trackerd start
Starting FastDFS tracker server:
[root@demo 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
[root@demo 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
[root@demo dev]# service fdfs_storaged start
Starting FastDFS storage server:
[root@demo 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
查看服务是否启动
[root@demo 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
[root@demo dev]#
服务已正常启动。
6、验证是否正常
[root@demo 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
[root@demo 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 #这后面放的是图片的位置
成功后会返回图片的路径:
[root@localhost ~]# /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的方式被路由到其中某个子目录下,然后将文件数据直接作为一个本地文件存储到该目录中。