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是博主自己创建的,主要存放解压后的软件,读者根据自己的习惯,创建目录即可。

接下来就是编译、安装了

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

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

cd /usr/lib64
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/

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

./make.sh
./make.sh install 

然后查看相应的配置

cd /usr/bin
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服务的命令。

使用如下命令启动。

fdfs_trackerd /etc/fdfs/tracker.conf    # 后面跟的是刚才修改的配置文件的路径
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服务的命令。
使用如下命令启动

cd /usr/bin
fdfs_storaged /etc/fdfs/storage.conf    # 后面跟的是刚才修改的配置文件的路径
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目录

cd /usr/bin/
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目录下,执行

./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi \
--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指令块中新增如下配置。

server{
        listen      88;
        server_name 192.168.0.104;
        location /qfcwx/M00 {
                ngx_fastdfs_module;
        }
    } 

注意,这里不用删除默认的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 ,则需要关闭。

systemctl start firewalld.service   #启动防火墙
systemctl stop firewalld.service    #停止防火墙
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服务。

重启所有服务

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

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

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

总结

本来很早就想着写这篇文章的,但是博主都在忙些别的事,不然就是偷懒,玩游戏去了。没办法,2020年是多灾的一年。要问为什么?这还要从一只蝙蝠说起!

总之,希望大家都能平平安安,开开心心的面对新的一年。

愿你努力工作,也愿你享受生活;愿你脚踏实地,也愿你仰望星空。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值