fastdfs 安装

本文详细介绍了如何在CentOS7.4环境下搭建基于FastDFS的图片服务器,包括安装FastDFS、nginx及其模块,配置tracker和storage服务器,以及通过浏览器验证图片上传和访问的成功。

FastDFS搭建图片服务器单实例

2018年06月02日 15:26:24 nice的程序猿 阅读数:149

 版权声明: https://blog.youkuaiyun.com/sinat_40399893/article/details/80548374

一、FastDFS官方介绍

FastDFS是一款类Google FS的开源分布式文件系统,它用纯C语言实现,支持Linux、FreeBSD、AIX等UNIX系统。它只能通过 专有API对文件进行存取访问,不支持POSIX接口方式,不能mount使用。准确地讲,Google FS以及FastDFS、mogileFS、 HDFS、TFS等类Google FS都不是系统级的分布式文件系统,而是应用级的分布式文件存储服务。 
  • 1

1、FastDFS架构图

FastDFS架构图

1)Tracker cluster中各个tracker server相互独立,不进行相互通信。
2)Storage cluster中各个storage组(Volume1,Volume2...)相互独立,不进行相互通信,也就是说各个组之间保存的数据是不相同的。但是各个组中的storage server之间是属于互相备份的关系,也就是说storage server之间保存相同的数据。
3)每个storage server会启动一个单独的线程主动向Tracker cluster中每个tracker server报告其状态信息,包括磁盘使用情况,文件同步情况及文件上传下载次数统计等信息。
  • 1
  • 2
  • 3

2、文件上传和下载的时序图

这里写图片描述

1)Client通过Tracker server将文件上传到Storage server。
2)Tracker server向Client返回一台可用的Storage server的IP地址和端口号。
3)Client直接通过Tracker server返回的IP地址和端口与其中一台Storage server建立连接并进行文件上传。
4)上传完成,Storage server返回Client一个文件ID,文件上传结束。
  • 1
  • 2
  • 3
  • 4

文件下载时序图

1)Client通过Tracker server下载指定Storage组中某个Storage server上的某个文件(文件名包括Storage组名称)。
2)Tracker server向Client返回一台可用的Storage server的IP地址和端口号。
3)Client直接通过Tracker server返回的IP地址和端口与其中一台Storage server建立连接并进行文件下载。
  • 1
  • 2
  • 3

二、安装并配置FastDFS

1、运行环境及相关软件

CentOS 7.4
FastDFS_v5.08.tar.gz
nginx-1.8.1.tar.gz
fastdfs-nginx-module_v1.16.tar.gz
libfastcommon
  • 1
  • 2
  • 3
  • 4
  • 5

2、服务器规划

服务器名称IP地址和端口备注
fastdfs-tracker*:22122跟踪服务器/调度服务器
fastdfs-storage*:23000存储服务器

3、centOS安装GCC

首先先执行  whereis gcc 查看系统是否安装了GCC
  • 1

已安装: 
这里写图片描述

未安装: 
这里写图片描述

如果未安装,执行Centos系统下载gcc命令:yum install gcc 
安装完后执行上面的查询命令
  • 1
  • 2

4、安装FastDFS

1)首先创建工具目录(非必须)

创建目录:mkdir -p /home/oldcat/tools
进入目录:cd /home/oldcat/tools
  • 1
  • 2

2) 下载并安装FastDFS依赖包libfastcommon

下载: wget https://codeload.github.com/happyfish100/libfastcommon/zip/master
解压: unzip master
进入目录: cd libfastcommon-master/

安装: ./make.sh && ./make.sh install
  • 1
  • 2
  • 3
  • 4
  • 5

3)下载并安装FastDFS

下载压缩包:wget http://jaist.dl.sourceforge.net/project/fastdfs/FastDFS%20Server%20Source%20Code/FastDFS%20Server%20with%20PHP%20Extension%20Source%20Code%20V5.08/FastDFS_v5.08.tar.gz
解压: tar xf FastDFS_v5.08.tar.gz
进入目录:cd FastDFS
安装: ./make.sh && ./make.sh install
  • 1
  • 2
  • 3
  • 4

采用默认方式安装后查看文件及目录:

1)服务脚本:ll /etc/init.d/ |grep fdfs

这里写图片描述

2)样例配置文件 :ll /etc/fdfs/

这里写图片描述

3)命令行工具:ll /usr/bin|grep fdfs

这里写图片描述

注意:虽然FastDFS区分tracker和storage服务器,但是安装的软件及步骤均相同,只是不同的配置文件而已,因此以上安装适用tracker server和storage server
  • 1

5、配置跟踪服务器(tracker server)

1)拷贝tracker server和client端样例配置文件并重命名

复制tracker server配置文件:cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf
  • 1

这里写图片描述 
复制client端配置文件: cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf 
这里写图片描述

2)编辑tracker server配置文件tracviewker.conf,需要修改内容如下:

    disabled=false(默认为false,表示是否无效)
    port=22122(默认为22122)
    base_path=/data/file/fastdfs/tracker
  • 1
  • 2
  • 3

3)编辑client端的配置文件client.conf,需要修改内容如下

    base_path=/data/file/fastdfs/tracker
    tracker_server=119.29.14.88:22122
  • 1
  • 2

4)创建tracker server数据目录

mkdir -p /data/file/fastdfs/tracker
  • 1

5)测试启动tracker server,启动成功会自动在/data/file/fastdfs/tracker目录新建data和logs目录

输入启动命令 /etc/init.d/fdfs_trackerd start 显示如图 启动成功
  • 1

这里写图片描述

输入端口查询命令 ss -lntup|grep 22122
查看22122端口信息和创建的data、logs
  • 1
  • 2

这里写图片描述

6)关闭tracker server

输入停止命令:/etc/init.d/fdfs_trackerd stop
  • 1

这里写图片描述

6、配置存储服务器(storage server)

1)拷贝storage server样例配置文件并重命名

拷贝命令:cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf
  • 1

2)编辑storage server配置文件storage.conf,需要修改内容如下:

    disabled=false(默认为false,表示是否无效)
    port=23000(默认为23000)
    base_path=/data/file/fastdfs/storage
    tracker_server=119.29.14.88:22122
    store_path0=/data/file/fastdfs/storage    http.server_port=8888(默认为8888,nginx中配置的监听端口那之一致)
  • 1
  • 2
  • 3
  • 4
  • 5

3)创建storage server数据目录

这里写图片描述

4)测试启动storage server,启动成功会自动在/data/file/fastdfs/tracker目录新建data和logs目录(启动storage server的前提是tracker server必须事先已启动)

启动tracker server:/etc/init.d/fdfs_trackerd start 
这里写图片描述 
查看 
这里写图片描述 
启动storage server:/etc/init.d/fdfs_storaged start 
这里写图片描述 
查看 
这里写图片描述 
查看storage目录下创建的data和logs 
这里写图片描述

6、文件上传测试

执行如下上传命令: 
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf /data/uploadfile/timg1.jpg 
这里写图片描述 
返回文件ID即说明文件已经上传成功

四、存储服务器(storage server)安装并配置nginx

1)下载并安装fastdfs-nginx-module模块

注:FastDFS通过Tracker服务器,将文件放在Storage服务器存储,但是同组存储服务器之间需要进入文件复制,有同步延迟的问题。假设Tracker服务器将文件上传到了192.168.4.125,上传成功后文件ID已经返回给客户端。此时FastDFS存储集群机制会将这个文件同步到同组存储192.168.4.126,在文件还没有复制完成的情况下,客户端如果用这个文件ID在192.168.4.126上取文件,就会出现文件无法访问的错误。而fastdfs-nginx-module可以重定向文件连接到源服务器取文件,避免客户端由于复制延迟导致的文件无法访问错误。

执行下载命令:wget http://nchc.dl.sourceforge.net/project/fastdfs/FastDFS%20Nginx%20Module%20Source%20Code/fastdfs-nginx-module_v1.16.tar.gz
解压:tar xf fastdfs-nginx-module_v1.16.tar.gz 
进入src目录下:cd fastdfs-nginx-module/src/
编辑config文件:vim config
执行如下命令进行批量替换并保存退出:
:%s+/usr/local/+/usr/+g
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

2)拷贝fastdfs-nginx-module模块中配置文件到/etc/fdfs目录中并编辑

复制fastdfs-nginx-module模块中配置文件: cp /home/oldcat/tools/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
修改配置文件: vi /etc/fdfs/mod_fastdfs.conf
修改内容如下:
  • 1
  • 2
  • 3
    connect_timeout=10
    base_path=/tmp(默认为/tmp)
    tracker_server=119.29.14.88:22122
    storage_server_port=23000(默认配置为23000)
    url_have_group_name = true
    store_path0=/data/file/fastdfs/storage
    group_name=group1(默认配置为group1)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

3)安装nginx依赖库

yum install -y pcre-devel zlib-devel
  • 1

4)下载并安装nginx

下载nginx压缩包: wget http://nginx.org/download/nginx-1.8.1.tar.gz
解压: tar xf nginx-1.8.1.tar.gz 
进入解压目录: cd nginx-1.8.1
执行配置: ./configure --prefix=/application/nginx/ --add-module=../fastdfs-nginx-module/src/
执行安装: make && make install
  • 1
  • 2
  • 3
  • 4
  • 5

5)拷贝FastDFS中的部分配置文件到/etc/fdfs目录中

cp /home/oldcat/tools/FastDFS/conf/http.conf /etc/fdfs/
cp /home/oldcat/tools/FastDFS/conf/mime.types /etc/fdfs/
  • 1
  • 2

6)配置nginx,如下所示:

ln -s /data/file/fastdfs/storage/data//data/file/fastdfs/storage/data/M00 
编辑配置文件: vi /application/nginx/conf/nginx.conf
  • 1
  • 2
    user  root;    
    worker_processes  1;
    events {
       worker_connections  1024;
    }
    http {
        include       mime.types;
        default_type  application/octet-stream;
        sendfile        on;
        keepalive_timeout  65;
        server {
            listen       8888;
            server_name  localhost;
            location ~/group[0-9]/ {
                ngx_fastdfs_module;
            }
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
            root   html;
            }
        }
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
说明: 
a、"user root"是解决下载操作时报404的问题
b、8888端口号与/etc/fdfs/storage.conf中的http.server_port=8888相对应
c、storage对应有多个group的情况下,访问路径带group名称,例如:/group1/M00/00/00/**,对应nginx配置:
location ~/group[0-9]/ {
       ngx_fastdfs_module;
 }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

7)拷贝nginx服务到/etc/init.d/目录下并启动

拷贝命令:cp /application/nginx/sbin/nginx /etc/init.d/
启动nginx: /etc/init.d/nginx
  • 1
  • 2

8)通过浏览器访问之前已经上传的文件

这里写图片描述
浏览器可以成功访问到上传的图片,说明使用FastDFS搭建的图片服务器成功完成!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值