简介

FastDFS 是一个开源的高性能分布式文件系统(Distributed File System),它对文件进行管理,主要功能包括功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,主要解决了海量数据存储问题,特别适合以中小文件(建议范围:4KB < file_size <500MB)为载体的在线服务。

FastDFS 系统有三个角色:跟踪服务器(Tracker Server)、存储服务器(Storage Server)和客户端(Client)。

centos 服务器传文件_CentOS

  • Client:客户端,作为业务请求的发起方,通过专有接口,使用TCP/IP协议与跟踪器服务器或存储节点进行数据交互。
  • Tracker Server:FastDFS的协调者,起到均衡的作用;负责管理所有的 storage server和 group,每个 storage 在启动后会连接 Tracker,告知自己所属 group 等信息,并保持周期性心跳,tracker根据storage的心跳信息,建立group==>[storage serverlist]的映射表。
  • Storage Server:存储服务器,主要提供容量和备份服务;以组(卷,group或volume)为单位组织,一个group内包含多台storage机器,数据互为备份,存储空间以group内容量最小的storage为准,所以建议group内的多个storage尽量配置相同,以免造成存储空间的浪费。

软件

  • CentOS7
  • libfastcommon 1.0.38
  • fastdfs 5.11
  • nginx-1.15.2

注意:软件的版本要一致,否则有可能出现版本不兼容的问题

1.下载安装 libfastcommon

  1. 下载libfastcommon
# wget https://github.com/happyfish100/libfastcommon/archive/V1.0.38.tar.gz
  1. 解压文件
# tar -zxvf V1.0.38.tar.gz
# cd libfastcommon-1.0.38
  1. 编译安装
# ./make.sh
# ./make.sh install
  1. 创建软链接,因为FastDFS主程序设置的lib目录是/usr/local/lib,所以需要我们创建软链接
# 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

2.下载安装FastDFS

  1. 下载FastDFS
# wget https://github.com/happyfish100/fastdfs/archive/V5.11.tar.gz
  1. 解压
# tar -zxvf V5.11.tar.gz
# cd fastdfs-5.11
  1. 编译安装
# ./make.sh
# ./make.sh install
  1. 安装结果
  • 默认安装目录,执行命令cd /etc/init.d可看到:
/etc/init.d/fdfs_storaged
/etc/init.d/fdfs_trackerd
  • 配置文件: cd /etc/fdfs,有四个.sample后缀的文件(自动生成的fdfs模板配置文件)
/etc/fdfs/client.conf.sample
/etc/fdfs/storage.conf.sample
/etc/fdfs/storage_ids.conf.sample
/etc/fdfs/tracker.conf.sample
  • 执行命令:ls -la /usr/bin/fdfs* ,查看命令脚本:
  1. 设置脚本软链接
    FastDFS 服务脚本设置的 bin 目录是 /usr/local/bin, 但实际命令安装在 /usr/bin/ 下,可以通过建立 /usr/bin 到 /usr/local/bin 的软链接
# ln -s /usr/bin/fdfs_trackerd   /usr/local/bin
# ln -s /usr/bin/fdfs_storaged   /usr/local/bin
# ln -s /usr/bin/stop.sh         /usr/local/bin
# ln -s /usr/bin/restart.sh      /usr/local/bin

3.创建fastdfs文件存储目录 /home/hc/fastdfs/

在/home/hc/目录下创建文件夹fastdfs,作为FastDFS的数据存放根目录

4.配置Tracker服务

  1. 进入/etc/fdfs目录,通过cp命令复制tracker.conf.sample,重命名为:tracker.con(删除.sample后缀),作为正式文件
# cd /etc/fdfs/
# cp tracker.conf.sample  tracker.conf
# vi tracker.conf
  1. 编辑tracker.conf:vi tracker.conf,修改相关参数(只需要修改: base_path 和 http.server_port 即可)
# 提供服务的端口,默认:22122
port=22122
# Tracker 存储data和log的根路径,根目录必须存在,子目录会自动创建
base_path=/home/hc/fastdfs


# http端口,需要和nginx相同
http.server_port=80
  1. 启动tracker(支持start|stop|restart):
方式一:
# /etc/init.d/fdfs_trackerd start
方式二:
# service fdfs_trackerd start

成功启动后,会在 /home/lyy/fastdfs(配置的base_path)下创建 data、logs 两个目录。

centos 服务器传文件_FastDFS_02

  1. 查看端口情况,命令:netstat -apn|grep fdfs
  2. centos 服务器传文件_FastDFS_03


如果22122端口正在被监听,则Tracker服务安装成功。
Tracker 关闭命令:service fdfs_trackerd stop

  1. 设置Tracker开机启动
# chkconfig fdfs_trackerd on

5.配置Storage服务

  1. 进入/etc/fdfs目录,有cp命令拷贝storage.conf.sample,重命名为 storage.conf(删除.sample)后缀作为正式文件
# cd /etc/fdfs/
# cp storage.conf.sample storage.conf
# vi storage.conf

3.编辑storage.conf,修改相关参数(base_path、store_path0、tracker_server、http.server_port)

# 配置文件是否不生效,false 为生效
disabled=false 

# 指定此 storage server 所在 组(卷)
group_name=group1

# storage server 服务端口,storge默认23000
port=23000

# 心跳间隔时间,单位为秒 (这里是指主动向 tracker server 发送心跳)
heart_beat_interval=30

# 存储路径个数,需要和store_path个数匹配
store_path_count=1

# storage存储data和log的跟路径,必须提前创建好
base_path=/home/hc/fastdfs

# 如果为空,则使用base_path,此处设置两者一样
store_path0=/home/hc/fastdfs

#如果本参数只为 N(如: 256),那么 storage server 在初次运行时,会在 store_path 下自动创建 N * N 个存放文件的子目录
subdir_count_per_path=256

# 配置该storage监听的tracker的ip和port
#有多个 tracker server 时,每个 tracker server 写一行
tracker_server=172.16.85.139:22122

# 允许系统同步的时间段 (默认是全天) 。一般用于避免高峰同步产生一些问题而设定。
sync_start_time=00:00
sync_end_time=23:59

#访问端口
http.server_port=80

4.启动 Storage

方式一:
# /etc/init.d/fdfs_storaged start
方式二:
# service fdfs_storaged start
  1. 查看端口情况:netstat -apn|grep fdfs
  • 关闭Storage命令:

service fdfs_storaged stop

  • 重新启动Storage命令:

service fdfs_storaged restart

  1. 通过monitor来查看storage是否成功绑定,查看storage和Tracker是否通信成功
/usr/bin/fdfs_monitor /etc/fdfs/storage.conf

centos 服务器传文件_FastDFS_04


7. 设置 Storage 开机启动

# chkconfig fdfs_storaged on

6.配置client

# cd /etc/fdfs
# cp client.conf.sample client.conf
# vi client.conf

修改如下配置
# Client 的数据和日志目录
base_path=/home/hc/client
# Tracker端口
tracker_server=172.16.85.139:22122

7.安装nginx

  1. 下载Nginx安装包:
# wget http://nginx.org/download/nginx-1.15.2.tar.gz
  1. 解压nginx:
# tar -zxvf nginx-1.12.1.tar.gz
  1. 进入nginx目录
# cd nginx-1.15.2
  1. 安装依赖库,安装Nginx需要的相关依赖包:
# yum update

# yum install pcre-devel
# yum install zlib zlib-devel
# yum install openssl openssl-devel

//上面三条命令可用下面一条命令代替:
# yum install pcre-devel zlib zlib-devel openssl openssl-devel

8.安装fastdfs-nginx-module安装包

  1. 下载fastdfs-nginx-module安装包
wget https://github.com/happyfish100/fastdfs-nginx-module/archive/V1.20.tar.gz
# 解压安装包
tar -zxvf V1.20.tar.gz
  1. 修改fastdfs-nginx-module-1.20/src/config文件
ngx_module_incs="/usr/include/fastdfs /usr/include/fastcommon/"
CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
  1. 配置Nginx,
进入nginx目录
#  cd nginx-1.15.2
# 添加模块
# ./configure --add-module=/usr/local/src/fastdfs-nginx-module-1.20/src
  1. 重新编译、安装
# make && make install
  1. 查看nginx版本,命令:/usr/local/nginx/sbin/nginx -V
  2. centos 服务器传文件_文件服务器_05


9.配置Nginx和fastdfs-nginx-module模块

1.配置mod-fastdfs.conf,并拷贝到/etc/fdfs文件目录下

# cd /usr/local/src/fastdfs-nginx-module-1.20/src/
# cp mod_fastdfs.conf /etc/fdfs/
  1. 修改mod-fastdfs.conf
#  vi /etc/fdfs/mod_fastdfs.conf 
修改以下配置:
# 连接超时时间
connect_timeout=10
# Tracker Server 的地址
tracker_server=172.16.85.139:22122
## url是否包含group名称,设置为true
url_have_group_name = true
# Storage 配置的store_path0路径,须和storage.conf中的一致
store_path0=/home/hc/fastdfs
  1. 拷贝 FastDFS 解压目录中(anti-steal.jpg、http.conf、mime.types)到/etc/fdfs 目录下
# cd /usr/local/src/fastdfs-5.11/conf/
#  cp anti-steal.jpg http.conf mime.types /etc/fdfs/
  1. 配置nginx,修改nginx.conf
vi /usr/local/nginx/conf/nginx.conf

在其中添加如下内容:

centos 服务器传文件_FastDFS_06


注意:为了避免出现nginx因为权限问题,http请求无法访问的问题出现:

centos 服务器传文件_图片服务器_07


这一步非常重要,如果不做会出现图片上传成功,但浏览器中nginx无法访问的情况。

5.启动nginx

/usr/local/nginx/sbin/nginx
  1. 查看nginx安装路径:whereis nginx
  2. 设置开机启动
# vi /etc/rc.local
添加一行:
/usr/local/nginx/sbin/nginx
# 设置执行权限
# chmod 755 rc.local
  1. 查询nginx版本
/usr/local/nginx/sbin/nginx -V

centos 服务器传文件_文件服务器_08

10.测试

  1. 上传文件
    fdfs_upload_file
  2. centos 服务器传文件_文件服务器_09

  3. nginx中查看
  • 浏览器中查看结果:
  • centos 服务器传文件_图片服务器_10

  • wget查看结果:

centos 服务器传文件_CentOS_11

附:网页中下载fastdfs文件

下载地址:https://sourceforge.net/projects/fastdfs/files

centos 服务器传文件_centos 服务器传文件_12

下载FastDFS的Server安装包,我们点击上图"FastDFS Server Source Code",会看到如下图所示界面,我们选择2016-02-04那个版本

centos 服务器传文件_文件服务器_13

我们会看到如下图所示界面,我们点击"FastDFS_v5.08.tar.gz"进行下载即可。

centos 服务器传文件_文件服务器_14