• FASTDFS与NGINX结合搭建文件服务器


    FASTDFS与NGINX结合搭建文件服务器

    标签: Linux知识汇总

     
     

    FASTDFS介绍

    FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。

    在平时的学习和项目中,博主使用的是阿里云的OSS对象存储服务,毕竟是阿里云旗下的产品,有很全的API供你学习使用。当然,它是付费产品。其实就几顿外卖的钱就能包年了。
    第一次了解FastDFS是在博主上大学的时候,一门《云计算与大数据》里面讲了这个,还有Hadoop的HDFS。这里就不做过多的讲解了,毕竟博主也只是略知一二,感兴趣的读者可以使用各种方法去了解和学习。

    上面说了阿里云OSS方便好用,那为什么还要自己去搭建一个文件服务器呢?
    ①. 自己动手尝试一个从来没接触过得东西,如果成功了,会很有成就感;就算失败了,也会去找到解决的办法。
    ②. OSS用来存储一些快速访问的东西,就很便捷。例如:博主将博文中的图片存储到里面,可以直接访问,还能通过CDN来加速。当然FastDFS也可以直接访问,但是中间需要借助其他云服务器的支持。如果使用本地的服务器,是没办法让其他人访问的。
    ③. 毕竟OSS是收费的,博主使用的是最小存储容量的套餐。所以,在学习中使用FastDFS就足够了。

    上面三条因人而异,主要是指博主使用FastDFS的原因。

    搭建过程

    准备工具

    所有环境都是基于Linux的,没有安装Linux的读者,自行查阅安装方法,博主这里就不做讲解了。
    首先下载好所需的压缩包,上传到Linux服务器上。
    1.FastDFS_v5.05.tar.gz
    2.fastdfs-nginx-module_v1.16.tar.gz
    3.libfastcommon-1.0.7.tar.gz
    4.nginx-1.16.1.tar.gz

    通过使用Xshell软件中的Xftp工具将上述压缩包上传至Linux服务器。

    安装编译工具和准备工作

    没有修改镜像源地址的读者,可以修改下Linux的镜像源,博主这里使用的是阿里的镜像源。如何配置,可以参考下面地址,找到自己对应的版本配置即可。博主这里使用的是Centos 8。

    https://developer.aliyun.com/mirror/centos?spm=a2c6h.13651102.0.0.3e221b11ium3oX

    镜像配置好就可以下载编译所需要的一些库了,执行下面的命令:

    yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
    

    下载FastDFS所需要的依赖

    yum -y install libevent
    

    安装完所需依赖,开始解压libfastcommon-1.0.7.tar.gz

    tar -zxvf libfastcommon-1.0.7.tar.gz -C /usr/local/software
    

    进入解压完的目录。

    cd /usr/local/software/libfastcommon-1.0.7
    

    这里的software是博主自己创建的,主要存放解压后的软件,读者根据自己的习惯,创建目录即可。

    接下来就是编译、安装了

    1.  
      ./make.sh # 编译
    2.  
      ./make.sh install # 安装

    完成后,进入lib64目录,通过 ll 命令查看

    1.  
      cd /usr/lib64
    2.  
      ll libfast** # 查看所有以libfast开头的内容


    这里需要执行的操作是,将libfastcommon.so拷贝到lib目录下,因为lib是32位的。

    cp libfastcommon.so /usr/lib
    

    安装编译FASTDFS

    第一步还是解压

    tar -zxvf FastDFS_v5.05.tar.gz -C /usr/local/software/
    

    解压完进入目录进行编译和安装。

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

    然后查看相应的配置

    1.  
      cd /usr/bin
    2.  
      ll fdfs* # 查看所有以fdfs开头的内容


    有部分配置在/etc/fdfs这个目录,如图所示

    将FastDFS的配置文件拷贝到当前目录中。

    cd /usr/local/software/FastDFS/
    


    这里conf目录中的内容,都需要拷贝到/etc/fdfs/目录下。

    cp * /etc/fdfs/
    

    配置TRACKER服务

    /etc/fdfs/这个目录下有一个tracker.conf文件,需要进行修改。

    vim tracker.conf
    

    在文件中修改日志路径为:base_path=/fastdfs/tracker

    因为不存在/fastdfs/tracker这个文件夹,所以进行创建。

    mkdir /fastdfs/tracker -p   # -p是递归创建
    

    进入bin目录,fdfs_trackerd就是启动tracker服务的命令。

    使用如下命令启动。

    1.  
      fdfs_trackerd /etc/fdfs/tracker.conf # 后面跟的是刚才修改的配置文件的路径
    2.  
      fdfs_trackerd /etc/fdfs/tracker.conf restart # 重启服务

    查看服务启动是否成功

    ps aux|grep tracker
    

    配置STORAGE服务

    刚才给tracker服务配置了日志目录,storage也是同样需要日志目录,所以,首先创建日志目录。在刚才的fastdfs目录下创建

    mkdir storage/log -p
    

    修改配置文件

    vim storage.conf
    


    将base_path修改为如图。
    这里还需要修改group_name,group_name=group1是组织名,例如,访问图片时,需要将当前的group_name作为前缀加到地址中。

    group_name=qfcwx    # 这里根据自己习惯修改
    

    store_path0=/home/yuqing/fastdfs这个指实际图片存储的路径,首先在刚才日志的上级storage目录中创建一个存储路径

    mkdir file
    


    然后修改配置文件

    将store_path0修改为刚才创建的目录。
    可以看到上面还有一个tracker_server,这个是tracker服务的地址,根据自己的虚拟机的ip地址进行修改即可。博主这里修改为:

    tracker_server=192.168.0.104:22122  # 只用修改前面的ip,端口号不需要修改
    

    配置文件的修改,这里就完成了,下面就进入bin目录,fdfs_storaged这个就是启动storage服务的命令。
    使用如下命令启动

    1.  
      cd /usr/bin
    2.  
      fdfs_storaged /etc/fdfs/storage.conf # 后面跟的是刚才修改的配置文件的路径
    3.  
      fdfs_storaged /etc/fdfs/storage.conf restart # 重启

    查看服务启动是否成功

    ps aux|grep storage
    

    配置CLIENT

    /etc/fdfs目录下有一个client.conf的文件,这个可以作为客户端进行测试。
    修改文件

    vim client.conf
    

    同样需要修改日志的地址,在fastdfs目录下创建一个client目录。

    上面的tracker_server就是tracker服务的地址,读者根据自己虚拟机的ip地址进行修改。

    测试

    进入bin目录

    1.  
      cd /usr/bin/
    2.  
      ll fdfs* # 查看

    fdfs_test就是用于客户端测试的,测试命令为

    fdfs_test /etc/fdfs/client.conf upload /usr/local/image/mvvm.png
    

    /etc/fdfs/client.conf: 是配置文件的地址。
    upload: 是需要加的命令。
    /usr/local/image/mvvm.png:是需要上传的图片的地址。

    这里就会返回成功的地址了。

    目前还不能通过地址来访问,这里需要配置Nginx,但是如果使用Xftp就能查看,此时,文件存储的目录为:/fastdfs/storage/file/data/00/00
    /fastdfs/storage/file 是刚才配置storage服务时,文件的存放路径。

    解压FASTDFS和NGINX关联的压缩包

    这里需要对Nginx的FastDFS模块进行解压。

    tar -zxvf fastdfs-nginx-module_v1.16.tar.gz -C /usr/local/software/
    

    进入解压完的目录,到src目录,修改config文件,将文件路径中存在的local删掉。

    编译安装NGINX

    前面已经安装了编译所需要的依赖库了,所以这里再安装一个Nginx所支持的正则表达式库。

    yum install pcre pcre-devel
    

    解压Nginx的压缩包

    tar -zxvf nginx-1.16.1.tar.gz -C /usr/local/software/
    

    首先到刚刚解压的fastdfs-nginx-module的src目录,拷贝当前路径

    pwd    # 查看当前所在完整路径
    

    博主这里的路径是:/usr/local/software/fastdfs-nginx-module/src
    然后到解压后的Nginx目录下,执行

    1.  
      ./configure \
    2.  
      --prefix=/usr/local/nginx \
    3.  
      --pid-path=/var/run/nginx/nginx.pid \
    4.  
      --lock-path=/var/lock/nginx.lock \
    5.  
      --error-log-path=/var/log/nginx/error.log \
    6.  
      --http-log-path=/var/log/nginx/access.log \
    7.  
      --with-http_gzip_static_module \
    8.  
      --http-client-body-temp-path=/var/temp/nginx/client \
    9.  
      --http-proxy-temp-path=/var/temp/nginx/proxy \
    10.  
      --http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
    11.  
      --http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
    12.  
      --http-scgi-temp-path=/var/temp/nginx/scgi \
    13.  
      --add-module=/usr/local/software/fastdfs-nginx-module/src

    注意:这里的–add-module后面的值就是刚刚拷贝的fastdfs-nginx-module的src目录

    之后再执行 make 进行编译;make install 进行安装。

    配置FASTDFS

    将fastdfs-nginx-module模块下的mod_fastdfs.conf文件拷贝到 /etc/fdfs/目录

    cp mod_fastdfs.conf /etc/fdfs/
    

    进入/etc/fdfs/目录,修改这个文件

    vim mod_fastdfs.conf
    

    找到下面的配置进行修改:
    1、base_path=/tmp用户存储日志的,将其改为/fastdfs/temp
    2、tracker_server=tracker:22122修改为当前服务器的ip地址
    3、group_name=groupname1 修改为之前storage中同样的名字
    4、url_have_group_name = false 这个表示是否需要增加一个上述自定义名字的需要,改为true

    配置NGINX

    这里需要配置Nginx,进入刚刚编译时,–prefix所指定的目录,可以看到nginx目录下面有这几个文件夹。

    进入conf目录,修改nginx.conf文件,在http指令块中新增如下配置。

    1.  
      server{
    2.  
      listen 88;
    3.  
      server_name 192.168.0.104;
    4.  
      location /qfcwx/M00 {
    5.  
      ngx_fastdfs_module;
    6.  
      }
    7.  
      }

    注意,这里不用删除默认的80端口的server指令,重新添加一个server指令即可。
    server_name:指服务器的ip或者域名。
    location:指访问/qfcwx/M00下的所有东西。

    启动NGINX

    在启动之前,对Nginx进行测试

    ./sbin/nginx -t
    

    如果出现:2: No such file or directory 按照提示创建目录即可。
    再次测试,没问题了,就可以启动Nginx了。

    ./sbin/nginx    # 启动命令
    

    访问之前。保证Linux的防火墙是关闭状态。
    查看防火墙状态:

    firewall-cmd --state
    

    如果显示 running ,则需要关闭。

    1.  
      systemctl start firewalld.service #启动防火墙
    2.  
      systemctl stop firewalld.service #停止防火墙
    3.  
      systemctl reloadt firewalld.service #重载配置

    访问图片

    博主这里的路径是:

    http://192.168.0.104:88/qfcwx/M00/00/00/wKgAaF5KAXyAFt-fABCbbRHQLlU939.png
    

    如果出现 404,是因为FastDFS和Nginx之间配置还未完成。
    需要修改/etc/fdfs/目录下的mod_fastdfs.conf文件

    store_path0=/home/yuqing/fastdfs    # 需要和storage.conf配置文件的路径一致
    

    博主这里是:/fastdfs/storage/file
    修改完成后,需要重新启动tracker服务、storage服务以及Nginx服务。

    重启所有服务

    1.  
      /usr/bin/fdfs_trackerd tracker.conf restart
    2.  
      /usr/bin/fdfs_storaged storage.conf restart
    3.  
      ./sbin/nginx -s reload

    再次访问上面的路径,就能看到图片成功上传了。

    这就证明FastDFS的文件服务器搭建完成了。

  • 相关阅读:
    php字符串处理函数大全 转
    php http Manual
    HTTP协议详解 百度文库
    PHP获取指定日期的上个月的日期 转
    计算指定日期的前N个月日期
    MySQL之count(*)与count(id)效率比较<转>
    生成器
    可迭代对象_迭代器
    变量内容的删除替换和替代
    软件磁盘阵列
  • 原文地址:https://www.cnblogs.com/zeenzhou/p/16186036.html
Copyright © 2020-2023  润新知