基于Ubuntu搭建FastDFS分布式文件系统

一、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

采取默认安装方式,相应的文件及目录如下:

tracker、storage节点启动文件

配置文件
配置文件路径

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

你可能感兴趣的:(基于Ubuntu搭建FastDFS分布式文件系统)