• linux下载安装搭建、卸载FastDfs文件服务器、配置多存储路径(轮询、最大内存选择)、nginx反向代理实现图片预览、常用命令


    简介

    FastDFS 是一个开源的高性能分布式文件系统(DFS)。 它的主要功能包括:文件存储,文件同步和文件访问,以及高容量和负载平衡。主要解决了海量数据存储问题,特别适合以中小文件(建议范围:4KB < file_size <500MB)为载体的在线服务。

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

    • Tracker Server:跟踪服务器,主要做调度工作,起到均衡的作用;负责管理所有的 storage server和 group,每个 storage 在启动后会连接 Tracker,告知自己所属 group 等信息,并保持周期性心跳。
    • Storage Server:存储服务器,主要提供容量和备份服务;以 group 为单位,每个 group 内可以有多台 storage server,数据互为备份。
    • Client:客户端,上传下载数据的服务器,也就是我们自己的项目所部署在的服务器。

    如图所示,基本架构图

    在这里插入图片描述

    其实,我们的TrackerStorage服务可以安装在不同的服务器上,当然安装在同一台服务器也可。Tracker是作为管理者,主要做调度工作。Storage就是主要用来存放图片文件的地方。

    FastDFS文件上传过程

    1. client询问tracker上传到的storage。

    2. tracker返回一台可用的storage。

    3. client直接和storage通讯完成文件上传,返回文件信息。

    (网图)

    在这里插入图片描述

    FastDFS文件下载过程

    1. client询问tracker下载文件的storage,参数为文件标识(卷名和文件名);

    2. tracker返回一台可用的storage;

    3. client直接和storage通讯完成文件下载。

    需要说明的是,client为使用FastDFS服务的调用方,client也应该是一台服务器,它对tracker和storage的调用均为服务器间的调用。

    (网图)

    在这里插入图片描述

    下载安装配置FastDFS

    下载

    地址:https://github.com/happyfish100,正常来讲需要 fastdfslibfastcommon,如果需要进行图片预览,就需要fastdfs-nginx-module,另外还需要安装好nginx来做反向代理。

    版本自己来选择即可,我这里是 fastdfs是6.06版本,libfastcommon是1.0.43版本。

    在这里插入图片描述

    • 下载方式一:直接使用 wget 下载,如果太慢,可以去github下载,然后上传到服务器上即可。

      wget -c "https://github.com/happyfish100/fastdfs/archive/V6.06.tar.gz" \
      -O fastdfs-6.06.tar.gz
      
      wget -c "https://github.com/happyfish100/libfastcommon/archive/V1.0.43.tar.gz" \
      -O libfastcommon-1.0.43.tar.gz
      
      wget -c "https://github.com/happyfish100/fastdfs-nginx-module/archive/V1.22.tar.gz" \
      -O fastdfs-nginx-module-1.22.tar.gz
      
      wget -c http://nginx.org/download/nginx-1.17.7.tar.gz
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
    • 下载方式二:直接在github下载。

    安装

    需要先安装基础环境

    yum -y install make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel
    yum -y install libevent
    
    • 1
    • 2

    再安装libfastcommon函数库。

    tar -zxvf libfastcommon-1.0.43.tar.gz
    
    • 1

    进入libfastcommon-1.0.43目录,编译然后安装

    ./make.sh
    ./make.sh install
    
    • 1
    • 2

    检查一下

    ls /usr/lib64|grep libfastcommon
    ls /usr/lib|grep libfastcommon
    
    • 1
    • 2

    出现libfastcommon.so即可。

    ok,然后fastdfs

    tar -zxvf fastdfs-6.06.tar.gz
    
    • 1

    进入fastdfs目录,编译安装

    可以先看一下fastdfs的安装配置目录所在信息,make.sh文件中

    在这里插入图片描述

    ./make.sh
    ./make.sh install
    
    • 1
    • 2

    配置

    配置tracker

    在/etc/fdfs目录中,这个目录中都是一些配置文件

    直接复制一个tracker.conf.sample,改名为 tracker.conf

    在这里插入图片描述

    cp tracker.conf.sample tracker.conf
    
    • 1

    编辑tracker.conf,vim tracker.conf

    # 基本工作目录
    base_path=/fastdfs/tracker
    
    # 设置store_path, 0:是轮询方式  2:选择剩余最大的目录存放文件,根据自己的需要选择即可
    store_path = 0
    
    • 1
    • 2
    • 3
    • 4
    • 5

    题外话:如果设置了store_path是轮询方式,但是后面测试上传文件的时候总是只上传到一个文件夹中,那么可能是使用命令测试上传的 指令没有选对。一下两种上传方式,一种是测试上传的,一种是普通文件的。可以使用普通上传即可。(此部分读者可以略过,因为如果按照本文上传方式,就是使用的普通方式。)

    # 测试上传
    /usr/bin/fdfs_test /etc/fdfs/client.conf upload a.jpg
    
    # 普通上传的(推荐,此上传方式会被tracker.conf中的store_path影响,到底是选择哪个存储路径)
    /usr/bin/fdfs_upload_file /etc/fdfs/client.conf a.jpg
    
    • 1
    • 2
    • 3
    • 4
    • 5

    base_path配置的路径一定要存在,否则可能会报错,创建个目录

    mkdir -p /fastdfs/tracker
    
    • 1

    配置storage

    复制一个storage.conf.sample改名为 storage.conf

    cp storage.conf.sample storage.conf
    
    • 1

    编辑文件vim storage.conf

    # 修改组名
    group_name=wlhGroup
    # 修改storage的工作空间(base_path路径必须存在)
    base_path=/fastdfs/storage
    
    # 配置多存储路径的数量
    store_path_count = 2
    
    # 修改storage的多存储空间
    store_path0=/fastdfs/storage/d0
    store_path1=/fastdfs/storage/d1
    
    # 修改tracker的地址和端口号,用于心跳
    tracker_server=192.168.0.101:22122
    
    # 配置http服务端口,和nginx中的监听端口要一致
    http.server_port = 80
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    上面配置的base_path并不是文件存储的位置,而是storage工作的路径,storage启动时,该路径下会生成datalogs目录,data里面是工作的一些pid文件等,logs里面是日志信息(排查错误时可以看这个)。

    如上面配置的storage.conf文件的base_path(工作目录)和 store_path(文件存储目录)

    在这里插入图片描述

    注意base_path和store_path{index}的目录一定要存在,创建一下。

    mkdir -p /fastdfs/storage
    mkdir -p /fastdfs/storage/d0
    mkdir -p /fastdfs/storage/d1
    
    • 1
    • 2
    • 3

    启动

    启动tracker

    /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf
    
    • 1

    启动storage

    /usr/bin/fdfs_storaged /etc/fdfs/storage.conf
    
    • 1

    注意:tracker和storage的相关文件都在我们之前配置的base_path中,包含数据、日志等,当需要排查错误时,一定要记得去查看下日志!!!

    按照我们以上配置的路径,tracker的日志文件在 /fastdfs/tracker/logs/trackerd.log文件中

    storage的日志文件在/fastdfs/storage/logs/storaged.log文件中

    测试上传

    复制修改修改client.conf文件,改好配置

    复制

    cp client.conf.sample client.conf
    
    • 1

    修改

    vim client.conf
    
    • 1

    内容如下:

    base_path = /fastdfs/client
    tracker_server = 192.168.0.101:22122
    
    • 1
    • 2

    要记得把base_path的目录创建一下

    mkdir -p /fastdfs/client
    
    • 1

    随意上传一个文件

    /usr/bin/fdfs_upload_file /etc/fdfs/client.conf a.jpg
    
    • 1

    查看结果

    在这里插入图片描述

    看到以上信息,说明上传是没有问题了。包括我们设置的group_name都返回了。

    图片预览

    如果有图片预览的需求,需要把nginx相关的配置也搞上。

    安装pcre

    yum -y install pcre pcre-devel
    
    • 1

    解压

    tar -zxvf nginx-1.17.7.tar.gz
    tar -zxvf fastdfs-nginx-module-1.22.tar.gz
    
    • 1
    • 2

    进入nginx目录后,添加 http_stub_status_module 模块

    ./configure --prefix=/usr/local/nginx --with-http_stub_status_module
    
    • 1

    进入fastdfs-nginx-module-1.22/src目录,编辑配置文件,将文件中路径 /usr/local换成 /usr

    vim config
    
    • 1
    :%s+/usr/local+/usr
    
    • 1

    在这里插入图片描述

    进入到nginx的目录中,添加fastdfs-nginx-module。这里注意fastdfs-nginx-module的安装位置.改成你自己的。

    ./configure --add-module=/env/fastdfs-nginx-module-1.22/src/
    
    • 1

    然后编译安装

    make && make install
    
    • 1

    复制并修改fastdfs-ngin-module中的配置文件

    cp /env/fastdfs-nginx-module-1.22/src/mod_fastdfs.conf /etc/fdfs/
    
    vim /etc/fdfs/mod_fastdfs.conf
    
    • 1
    • 2
    • 3

    修改为:

    base_path和store_path和storage.conf中尽量一致。

    connect_timeout=10
    # tracker的地址
    tracker_server=192.168.0.101:22122
    # url中包含group_name
    url_have_group_name = true
    # 配置group_name,要和 storage中配置的一样
    group_name=wlhGroup
    
    store_path_count=2
    base_path=/fastdfs/storage
    store_path0=/fastdfs/storage/d0
    store_path1=/fastdfs/storage/d1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    进入fastdfd源码conf目录,将http.conf,mime.types两个文件拷贝到/etc/fdfs/目录下

    cp /env/fastdfs-6.06/conf/http.conf /env/fastdfs-6.06/conf/mime.types /etc/fdfs/
    
    • 1

    编辑nginx配置

    vim /usr/local/nginx/conf/nginx.conf
    
    • 1
        listen       80;
        server_name  192.168.0.101;
    
        #charset koi8-r;
    
        #access_log  logs/host.access.log  main;
    
        location / {
        root   html;
        index  index.html index.htm;
        }
    
        location ~/wlhGroup/M00 {
        root  /fastdfs/storage/d0;
        ngx_fastdfs_module;
        }
    
        location ~/wlhGroup/M01 {
        root /fastdfs/storage/d1;
        ngx_fastdfs_module;
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    在这里插入图片描述

    启动nginx

    /usr/local/nginx/sbin/nginx
    
    • 1

    上传一个文件

    在这里插入图片描述

    看到返回了地址,我们去浏览器访问一下。没问题

    在这里插入图片描述

    忠告:在开发中,可能会遇见很多奇奇怪怪的问题,一定要学会看日志!!再去查阅资料,否则会导致根本无从下手,效率极低。

    dfs常用命令

    # 监控服务器状态命令:fdfs_monitor
    /usr/bin/fdfs_monitor /etc/fdfs/client.conf
    
    # 上传文件
    /usr/bin/fdfs_upload_file /etc/fdfs/client.conf a.jpg
    
    # 下载文件
    /usr/bin/fdfs_download_file /etc/fdfs/client.conf group_name/文件地址
    
    # 删除文件
    /usr/bin/fdfs_delete_file /etc/fdfs/client.conf group_name/文件地址
    
    # 启动 tracker服务
    /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf
    
    # 重启/终止 tracker服务
    /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart/stop
    
    # 启动 storage服务
    /usr/bin/fdfs_storaged /etc/fdfs/storage.conf
    
    # 重启/终止 storage服务
    /usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart/stop
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    如果重启/停止tracker或storage服务没有生效,那么直接Kill杀掉进程即可。

    nginx常用命令

    要记得先把nginx的目录配置到 环境变量中。

    vim /etc/profile

    export PATH=$PATH:/usr/local/nginx/sbin
    
    • 1

    记得刷一下

    source /etc/profile
    
    • 1

    常用命令

    nginx -s reload #重新加载Nginx配置文件,然后以优雅的方式重启Nginx
    
    nginx -s stop #强制停止Nginx服务
    
    nginx -s quit #优雅地停止Nginx服务(即处理完所有请求后再停止服务)
    
    killall nginx #杀死所有nginx进程
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    卸载fastDFS

    可以参考这篇文章fastDFS如何卸载

    参考文章

    用FastDFS一步步搭建文件管理系统

    FastDFS原理详解及部署使用

    Linux搭建FastDFS环境

  • 相关阅读:
    C++智能指针
    1_SQL
    树与森林转
    互联网内卷严重?你咋不看看其他行业呢?无非是三十晚上无月亮
    【编程之路】面试必刷TOP101:链表(01-05,Python实现)
    Java的设计模式基本概念及使用场景
    用KUSTO查询语句(KQL)在Azure Data Explorer Database上查询LOG实战
    SimCSE: Simple Contrastive Learning of Sentence Embeddings
    游戏开发者如何能达到5万月薪?这太难了......
    媒体编解码器MediaCodec
  • 原文地址:https://blog.csdn.net/weixin_45248492/article/details/126076954