简介
FastDFS 是一个开源的高性能分布式文件系统(Distributed File System),它对文件进行管理,主要功能包括功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,主要解决了海量数据存储问题,特别适合以中小文件(建议范围:4KB < file_size <500MB)为载体的在线服务。
FastDFS 系统有三个角色:跟踪服务器(Tracker Server)、存储服务器(Storage Server)和客户端(Client)。
- 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
- 下载libfastcommon
# wget https://github.com/happyfish100/libfastcommon/archive/V1.0.38.tar.gz
- 解压文件
# tar -zxvf V1.0.38.tar.gz
# cd libfastcommon-1.0.38
- 编译安装
# ./make.sh
# ./make.sh install
- 创建软链接,因为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
- 下载FastDFS
# wget https://github.com/happyfish100/fastdfs/archive/V5.11.tar.gz
- 解压
# tar -zxvf V5.11.tar.gz
# cd fastdfs-5.11
- 编译安装
# ./make.sh
# ./make.sh install
- 安装结果
- 默认安装目录,执行命令
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*
,查看命令脚本:
- 设置脚本软链接
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服务
- 进入/etc/fdfs目录,通过cp命令复制tracker.conf.sample,重命名为:tracker.con(删除.sample后缀),作为正式文件
# cd /etc/fdfs/
# cp tracker.conf.sample tracker.conf
# vi tracker.conf
- 编辑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
- 启动tracker(支持start|stop|restart):
方式一:
# /etc/init.d/fdfs_trackerd start
方式二:
# service fdfs_trackerd start
成功启动后,会在 /home/lyy/fastdfs(配置的base_path)下创建 data、logs 两个目录。
- 查看端口情况,命令:
netstat -apn|grep fdfs
如果22122端口正在被监听,则Tracker服务安装成功。
Tracker 关闭命令:service fdfs_trackerd stop
- 设置Tracker开机启动
# chkconfig fdfs_trackerd on
5.配置Storage服务
- 进入/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
- 查看端口情况:netstat -apn|grep fdfs
- 关闭Storage命令:
service fdfs_storaged stop
- 重新启动Storage命令:
service fdfs_storaged restart
- 通过monitor来查看storage是否成功绑定,查看storage和Tracker是否通信成功
/usr/bin/fdfs_monitor /etc/fdfs/storage.conf
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
- 下载Nginx安装包:
# wget http://nginx.org/download/nginx-1.15.2.tar.gz
- 解压nginx:
# tar -zxvf nginx-1.12.1.tar.gz
- 进入nginx目录
# cd nginx-1.15.2
- 安装依赖库,安装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安装包
- 下载fastdfs-nginx-module安装包
wget https://github.com/happyfish100/fastdfs-nginx-module/archive/V1.20.tar.gz
# 解压安装包
tar -zxvf V1.20.tar.gz
- 修改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/"
- 配置Nginx,
进入nginx目录
# cd nginx-1.15.2
# 添加模块
# ./configure --add-module=/usr/local/src/fastdfs-nginx-module-1.20/src
- 重新编译、安装
# make && make install
- 查看nginx版本,命令:
/usr/local/nginx/sbin/nginx -V
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/
- 修改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
- 拷贝 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/
- 配置nginx,修改nginx.conf
vi /usr/local/nginx/conf/nginx.conf
在其中添加如下内容:
注意:为了避免出现nginx因为权限问题,http请求无法访问的问题出现:
这一步非常重要,如果不做会出现图片上传成功,但浏览器中nginx无法访问的情况。
5.启动nginx
/usr/local/nginx/sbin/nginx
- 查看nginx安装路径:whereis nginx
- 设置开机启动
# vi /etc/rc.local
添加一行:
/usr/local/nginx/sbin/nginx
# 设置执行权限
# chmod 755 rc.local
- 查询nginx版本
/usr/local/nginx/sbin/nginx -V
10.测试
- 上传文件
fdfs_upload_file - nginx中查看
- 浏览器中查看结果:
- wget查看结果:
附:网页中下载fastdfs文件
下载地址:https://sourceforge.net/projects/fastdfs/files
下载FastDFS的Server安装包,我们点击上图"FastDFS Server Source Code",会看到如下图所示界面,我们选择2016-02-04那个版本
我们会看到如下图所示界面,我们点击"FastDFS_v5.08.tar.gz"进行下载即可。