• FastDFS安装(含nginx)


    1.windows版本

    未测,有需要再补充

    2.linux版本

    git地址:https://github.com/happyfish100/fastdfs

    编译环境:

    在这里插入图片描述

    依次执行下面的指令或代码即可(注意,若与我安装的目录不同,自己做相应调整)

    # 执行依赖环境,否则后面会有很多问题
    yum install git gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zlib-devel openssl-devel wget vim -y
    
    # 我将fastdfs相关的包都放在 /data/fastDFS目录下,所以我先创建目录
    mkdir -p /data/fastDFS
    cd /data/fastDFS
    
    # 配置自己tracker服务所在host,如果是集群则配置多个  192.168.1.xx fastdfs.com
    vim /etc/hosts
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    安装libfastcommon

    git clone https://github.com/happyfish100/libfastcommon.git --depth 1
    cd libfastcommon/
    ./make.sh
    ./make.sh install
    
    • 1
    • 2
    • 3
    • 4

    安装FastDFS

    cd ../ #返回上一级目录,即回到 /data/fastDFS
    
    git clone https://github.com/happyfish100/fastdfs.git --depth 1 
    cd fastdfs/
    ./make.sh 
    ./make.sh install #编译安装
    
    #供nginx访问使用
    cp /data/fastDFS/fastdfs/conf/http.conf /etc/fdfs/ 
    cp /data/fastDFS/fastdfs/conf/mime.types /etc/fdfs/
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    安装fastdfs-nginx-module

    cd ../ #返回上一级目录,即回到 /data/fastDFS
    
    git clone https://github.com/happyfish100/fastdfs-nginx-module.git --depth 1 
    cp /data/fastDFS/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs
    
    • 1
    • 2
    • 3
    • 4

    安装nginx

    注:如果已经安装的,记得备份。make 之后不需要make install 如果执行了就是覆盖安装了,原来写好的nginx.conf中的配置就没有了

    cd /usr/local
    wget http://nginx.org/download/nginx-1.15.4.tar.gz #下载nginx压缩包 
    tar -zxvf nginx-1.15.4.tar.gz #解压
    cd nginx-1.15.4/
    #添加fastdfs-nginx-module模块
    ./configure --add-module=/data/fastDFS/fastdfs-nginx-module/src/ 
    make 
    make install #编译安装
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    tracker配置

    # 创建存储日志和数据的根目录
    mkdir -p /data/fastDFS/fastdfs/tracker_data
    
    vim /etc/fdfs/tracker.conf
    #需要修改的内容如下
    port=22122	# tracker服务器端口(默认22122,一般不修改)
    base_path=/data/fastDFS/fastdfs/tracker_data	# 存储日志和数据的根目录
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    storage配置

    # 创建存储日志和数据的根目录
    mkdir -p /data/fastDFS/fastdfs/storage_data
    
    vim /etc/fdfs/storage.conf
    #需要修改的内容如下
    port=23000	# storage服务端口(默认23000,一般不修改)
    base_path=/data/fastDFS/fastdfs/storage_data	# 数据和日志文件存储根目录
    store_path0=/data/fastDFS/fastdfs/storage_data	# 第一个存储目录,即 M00。第二个则 store_path1,以此类推
    tracker_server=fastdfs.com:22122	# tracker服务器IP和端口
    http.server_port=8888	# http访问文件的端口(默认8888,看情况修改,和nginx中保持一致)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    大功告成,启动服务

    #先将端口开放出来 80, 8888,22122,23000
    vim /etc/sysconfig/iptables
    
    # fastdfs_tracker调度端口
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 22122 -j ACCEPT
    # fastdfs_storage 文件实际存储端口
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 23000 -j ACCEPT
    # fastdfs_storage http访问文件的端口
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 8888 -j ACCEPT
    
    
    #启动tracker
    /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf
    #启动storage
    /usr/bin/fdfs_storaged /etc/fdfs/storage.conf
    # 重启storage
    /usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    测试文件上传

    vim /etc/fdfs/client.conf
    #需要修改的内容如下
    base_path=/data/fastDFS/fastdfs/storage_data
    tracker_server=fastdfs.com:22122	#tracker服务器IP和端口
    #保存后测试,返回ID表示成功 如:group1/M00/00/00/wKgDDWDtRu6AMPhBARBlpcz7xUs146.jpg
    #上传文件 注: /data/wrx.jpg是你随便放的一个文件
    fdfs_upload_file /etc/fdfs/client.conf  /data/wrx.jpg
    #删除文件
    fdfs_delete_file /etc/fdfs/client.conf group1/M00/00/00/wrx.jpg
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    配置nginx访问(client)

    vim /etc/fdfs/mod_fastdfs.conf
    
    #需要修改的内容如下
    tracker_server=fastdfs.com:22122	#tracker服务器IP和端口
    url_have_group_name=true
    store_path0=/data/fastDFS/fastdfs/storage_data
    
    
    #配置nginx.config
    vim /usr/local/nginx/conf/nginx.conf
    #添加如下配置
    server {
    
            listen  8888;   ## 该端口为storage.conf中的http.server_port相同
            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
    • 23
    • 24
    /usr/local/nginx/sbin/nginx #启动nginx 
    /usr/local/nginx/sbin/nginx -s reload #重启nginx 
    /usr/local/nginx/sbin/nginx -s stop #停止nginx
    
    • 1
    • 2
    • 3

    浏览器访问测试: http://fastdfs.com:8888/group1/M00/00/00/wKgDDWDtRu6AMPhBARBlpcz7xUs146.jpg

     
    说明:生成的文件名基本格式如下:
    在这里插入图片描述

    • 组名: 文件上传后所在的storage组名称,在文件上传成功后有storage服务器返回,需要客户端自行保存。
    • 虚拟磁盘路径: storage配置的虚拟路径,与磁盘选项store_path*对应。如果配置了store_path0则是M00,如果配置了store_path1则是M01,以此类推。
    • 数据两级目录: storage服务器在每个虚拟磁盘路径下创建的两级目录,用于存储数据文件。
    • 文件名: 与文件上传时不同。是由存储服务器根据特定信息生成,文件名包含:源存储服务器IP地址、文件创建时间戳、文件大小、随机数和文件拓展名等信息。

    3.可能出现的错误

    • tracker 或 storage 的data和log目录配置错了,自己检查下config
      在这里插入图片描述

    • make[2]: *** No rule to make target
      原因: 依赖配置缺了(就是前面的 yum install git…这些),或者没有进入目录后再执行 ./make.sh ,执行完后在再执行 ./make.sh install 。

    • 进行上传错误时,出现了如下错误:
      [2022-07-20 13:53:22] ERROR - file: tracker_proto.c, line: 50, server: 127.0.0.1:22122, response status 2 != 0
      [2022-07-20 13:53:22] ERROR - file: …/client/tracker_client.c, line: 899, fdfs_recv_response fail, result: 2 tracker_query_storage fail, error no: 2, error info: No such file or directory
      原因: /etc/fdfs/storage.conf/etc/fdfs/tracker.conf配置有误 ,例storage.confstore_path0 和 base_path 目录是否正确存在?,而且配置的ip好像不能是 127.0.0.1,得配置 192.168.1.xxx (我是在host配置的,所以我将host调整后即可 )
      调整后重启服务:
      pkill -9 fdfs
      /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf
      /usr/bin/fdfs_storaged /etc/fdfs/storage.conf

    fastdfs需要配合nginx使用,不能直接通过路径访问 storage。

  • 相关阅读:
    spring 事务失效的 12 种场景
    001flutter基础学习
    使用lua-resty-request库编写爬虫IP实现数据抓取
    设顺序表va中的数据元素递增有序。试写一算法,将x插入到顺序表的适当位置上,以保持该表的有序性。
    CarSim仿真高级进阶(二)---VS 命令行(2)
    NIFI关于Parameter Contexts的使用
    Linux的网络命令
    【Javaweb】基础开发流程与介绍
    Llama2-Chinese项目:6-模型评测
    Java并发编程学习14-任务关闭(上)
  • 原文地址:https://blog.csdn.net/evelynnJava/article/details/125889150