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


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的文件服务器搭建完成了。

因为相信,所以看见.