一、FastDFS简介
FastDFS是由淘宝余庆先生所开发,是一个轻量级、高性能的开源分布式文件系统,用纯C语言开发,包括文件存储、文件同步、文件访问(上传下载)、存取负载均衡、在线扩容、相同内容只存储一份等功能,适合有大容量存储需求的应用或系统,同类的分布式文件系统有谷歌的GFS、HDFS(Hadoop)、TFS(淘宝)等。
二、FastDFS上传流程
1、client询问tracker上传到的storage,不需要附加参数
2、tracker返回一台可用的storage
3、client直接和storage相连完成文件的上传
三、FastDFS下载流程
1、client询问tracker上传到的storage,参数为文件标识(组名和文件名)
2、tracker返回一台可用的storage
3、client直接和storage相连完成文件下载
四、FastDFS的单节点安装前准备
1、操作系统:ubuntu 16.04(我的系统已经配置ftp服务,ssh服务)
2、安装包:
libfastcommon-master.zip:从fastdfs提取出来的C函数库
fastdfs-nginx-module-master.zip:storage节点http服务nginx模块
fastdfs-master.zip:fastdfs 源码包
fastdfs-client-java-master.zip:客户端
nginx-1.10.0.tar.gz:nginx包
3、安装包下载路径
链接:https://pan.baidu.com/s/1TKAbL0ZEcExEOn0gh6Lmxg&shfl=sharepset
提取码:92xg
五、开始安装
1、环境搭建及核心包安装
上传所有安装包至主机,我习惯放在/srv/ftp
下载所需的依赖包、工具包
#依赖包
apt-get install -y make cmake gcc g++
#解压zip的工具包
apt-get install -y unzip
安装libfastcommon
#解压到 /usr/local 目录下
unzip libfastcommon-master.zip -d /usr/local/
#编译
cd /usr/local/libfastcommon-master
./make.sh
./make.sh install
安装fastdfs
#解压到/usr/local
unzip fastdfs-master.zip -d /usr/local/
#编译
cd /usr/local/fastdfs-master
./make.sh
./make.sh install
采取默认安装方式,相应的文件及目录如下:
配置文件
2、配置tracker服务器
复制tracker配置文件
cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf
修改/etc/fdfs/tracker.conf
vim /etc/fdfs/tracker.conf
#修改内容如下
disabled=false
port=22122
base_path=/fastdfs/tracker
创建base_path指定的目录
mkdir -p /fastdfs/tracker
启动tracker节点
/etc/init.d/fdfs_trackerd start
#如果显示Starting FastDFS tracker server: 则启动成功,否则检查以上所有步骤是否正确
初次启动会在/fastdfs/tracker
下创建log、data目录
通过ps -ef | grep fdfs_trackerd
查看tracker进程是否启动
3、配置storage服务器
复制storage配置文件并重命名
cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf
修改storage.conf
配置文件
#启用配置文件
disabled=false
#storage端口
port=23000
#数据和日志存储的根目录
base_path=/fastdfs/storage
#第一个存储目录
store_path0=/fastdfs/storage
#tracker服务器的ip和端口
tracker_server=192.168.0.129:22122
#http访问端口,此时需要和后面的 nginx监听器端口一致
http.server_port=8888
http.server_port=8888
务必记住,后面配置nginx要用到
创建storage数据目录
mkdir -p /fastdfs/storage
启动storage节点
/etc/init.d/fdfs_storaged start
#如果显示Starting FastDFS storage server: 则启动成功,否则检查以上所有步骤是否正确
初次启动会在/fastdfs/storage
下创建log、data目录
通过ps -ef | grep fdfs_storaged
查看storage进程是否启动
4、文件上传测试
修改tracker节点客户端配置文件
cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf
修改client.conf
文件
base_path=/fastdfs/tracker
tracker_server=192.168.0.129:22122
执行文件上传命令
#进入fastdfs-master目录下
cd /usr/local/fastdfs-master
#执行命令,我放了一张图片在/srv/ftp下
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf /srv/ftp/shinelon.jpg
返回一个路径,group1/M00/00/00/wKgAgV1hRhmAFPa1AAhfXWePhdo571.jpg
表示上传成功
5、安装fastdfs-nginx-module
解压fastdfs-nginx-module-master.zip
unzip fastdfs-nginx-module-master.zip -d /usr/local/
安装nginx(此处极易出错务必小心谨慎)
解压nginx到/usr/local
tar -xzvf nginx-1.10.0.tar.gz -C /usr/local/
此时编译nginx会报错,需要安装pcre工具和zlib工具包
#我是将所有工具包下载并放置在/srv/ftp下
wget https://ftp.pcre.org/pub/pcre/pcre-8.40.tar.gz
wget http://zlib.net/zlib-1.2.11.tar.gz
将上述两个工具包解压至/usr/local/
tar -xzvf pcre-8.40.tar.gz -C /usr/local/
tar -xzvf zlib-1.2.11.tar.gz -C /usr/local/
进入pcre-8.40
并编译
cd /usr/local/pcre-8.40
#编译1
./configure
#编译2
make && make install
进入zlib-1.2.11
并编译
cd /usr/local/zlib-1.2.11
#编译1
./configure
#编译2
make && make install
安装编译时需要用到的库和工具
apt-get install build-essential libtool gcc automake autoconf make
编译nginx(需要将fastdfs-nginx-module-master源码作为模块编译进去)
注意:进入nginx-1.10.0目录执行以下命令,执行完后会生成nginx目录,并不是命令写错了
cd /usr/local/nginx-1.10.0/
./configure --prefix=/usr/local/nginx --sbin-path=/usr/bin/nginx --add-module=/usr/local/fastdfs-nginx-module-master/src
make && make install
未报错即为编译成功
执行
make && make install
编译
复制
fastdfs-nginx-module
源码中的配置文件到/etc/fdfs
并修改
cp /usr/local/fastdfs-nginx-modulemaster/src/mod_fastdfs.conf /etc/fdfs/
vim /etc/fdfs/mod_fastdfs.conf
#修改如下
#客户端访问文件超时(单位:秒)
connect_timeout=10
#临时目录
base_path=/tmp
#tracker节点IP和端口
tracker_server=192.168.0.129:22122
#storage节点端口
storage_server_port=23000
#组名
group_name=group1
#访问链接前缀加上组名
url_have_group_name=true
#文件真实存储路径
store_path0=/fastdfs/storage
复制fastdfs部分配置文件到/etc/fdfs
目录
cd /usr/local/fastdfs-master/conf
cp http.conf mime.types /etc/fdfs/
在/fastdfs/storage
文件存储目录下创建软连接,将其链接到实际存储数据的目录
shell
ln -s /fastdfs/storage/data/ /fastdfs/storage/data/M00
配置nginx访问storage文件
vim /usr/local/nginx/conf/nginx.conf
注意将#user nobody;修改为user root防止后面运行出错
#修改处1
user root;
worker_processes 1;
#修改处2,前面提过务必记住的端口号
server {
listen 8888;
server_name localhost;
#修改处3, 添加以下代码
location ~/group([0-9])/M00 {
ngx_fastdfs_module;
}
启动nginx服务
/usr/bin/nginx
#返回ngx_http_fastdfs_set pid=xxx,即为成功
测试fastdfs访问文件
http://192.168.0.129:8888/group1/M00/00/00/wKgAgV1hRhmAFPa1AAhfXWePhdo571.jpg
自此,单机版FastDFS分布式文件系统搭建成功,下一篇介绍java操作FastDFS