当前位置: 代码迷 >> 综合 >> 搭建FastDFS+Nginx+fastdfs-nginx-module安装配置
  详细解决方案

搭建FastDFS+Nginx+fastdfs-nginx-module安装配置

热度:29   发布时间:2023-10-19 04:40:36.0

经过几天的学习,通过前辈们的分享心得,自己搭建了一个最小的简单FastDfs,下面把我学习的心得记录一下,温故而知新!!!

一.FastDFS简介

1.1 什么是FastDFS?

FastDFS是用c语言编写的一款开源的分布式文件系统。FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。

1.2 FastDFS的架构

如图:
搭建FastDFS+Nginx+fastdfs-nginx-module安装配置
FastDFS架构包括 Tracker server和Storage server。客户端请求Tracker server进行文件上传、下载,通过Tracker server调度最终由Storage server完成文件上传和下载。

    tracker server:跟踪服务器,主要做调度工作,起负载均衡的作用。在内存中记录集群中所有存储组和存储服务器的状态信息,是客户端和数据服务器交互的枢纽。相比GFS中的master更为精简,不记录文件索引信息,占用的内存量很少。storage server:存储服务器(又称:存储节点或数据服务器),文件和文件属性(meta data)都保存到存储服务器上。Storage server直接利用OS的文件系统调用管理文件。client:客户端,作为业务请求的发起方,通过专有接口,使用TCP/IP协议与跟踪器服务器或存储节点进行数据交互。
1.3 Tracker 集群

FastDFS集群中的Tracker server可以有多台,Tracker server之间是相互平等关系同时提供服务,Tracker server不存在单点故障。客户端请求Tracker server采用轮询方式,如果请求的tracker无法提供服务则换另一个tracker。

1.4Storage集群

Storage集群采用了分组存储方式。storage集群由一个或多个组构成,集群存储总容量为集群中所有组的存储容量之和。一个组由一台或多台存储服务器组成,组内的Storage server之间是平等关系,不同组的Storage server之间不会相互通信,同组内的Storage server之间会相互连接进行文件同步,从而保证同组内每个storage上的文件完全一致的。一个组的存储容量为该组内存储服务器容量最小的那个,由此可见组内存储服务器的软硬件配置最好是一致的。
采用分组存储方式的好处是灵活、可控性较强。比如上传文件时,可以由客户端直接指定上传到的组也可以由tracker进行调度选择。一个分组的存储服务器访问压力较大时,可以在该组增加存储服务器来扩充服务能力(纵向扩容)。当系统容量不足时,可以增加组来扩充存储容量(横向扩容)。

1.5 Storage状态收集

Storage server会连接集群中所有的Tracker server,定时向他们报告自己的状态,包括磁盘剩余空间、文件同步状况、文件上传下载次数等统计信息。

1.6 文件上传流程

搭建FastDFS+Nginx+fastdfs-nginx-module安装配置

1.7 文件下载流程

搭建FastDFS+Nginx+fastdfs-nginx-module安装配置

上传文件之后会返回:
group1/M00/00/00/wKgZgluJDpiAWpqAAev7k46AZD8093.pdf
组名:group1
路径: M00/00/00/wKgZgluJDpiAWpqAAev7k46AZD8093.pdf
在项目中此信息需要我们自己保存
M00 代表的是配置在虚拟机上的一个虚拟路径
00/00/是虚拟路径下自己创建的文件目录
wKgZgluJDpiAWpqAAev7k46AZD8093.pdf : 文件相关信息(可能通过什么算法生成)

二 搭建

2.1 环境准备
  1. 我用的是VMware 12 / centos7,本地搭建一台虚拟机
  2. 准备搭建所需要的gz包, 可以自行在官网下载
    nginx-1.8.0.tar.gz
    FastDFS_v5.05.tar.gz
    fastdfs-nginx-module_v1.16.tar.gz
    libfastcommonV1.0.7.tar.gz
  3. 本人的都是在root用户下操作的
2.2 Nginx搭建
2.2.1. 环境依赖
   1. nginx是c编写的,对于解压的源码进行编译,所以首先设置编译环境: gcc执行: (-y: 不询问)yum -y install gccyum -y install gcc-c++2. Perl库,包括 perl 兼容的正则表达式库yum install -y pcre pcre-devel3. zlib库提供了很多种压缩和解压缩的方式yum install -y zlib zlib-devel4. OpenSSL 是一个强大的安全套接字层密码库yum install -y openssl openssl-devel
2.2.2编译安装

su root
将nginx-1.8.0.tar.gz拷贝至linux服务器。
cp -rf /home/xzb/nginx-1.8.0.tar.gz /usr/local/
#解压:
tar -zxvf nginx-1.8.0.tar.gz
cd nginx-1.8.0
#创建临时目录
mkdir -p /var/temp/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 

#编译安装
make
make install
#此时可以看到 在 /usr/local/nginx/目录下有3个文件夹
sbin 运行nginx 的命令
conf 配置文件
logs 日志文件

# 启动nginx

     注意:执行./nginx启动nginx,这里可以-c指定加载的nginx配置文件,如下:./nginx -c /usr/local/nginx/conf/nginx.conf如果不指定-c,nginx在启动时默认加载conf/nginx.conf文件,此文件的地址也可以在编译安装nginx时指定./configure的参数(--conf-path= 指向配置文件(nginx.conf))#启动命令./nginx # 停止命令./nginx  -s stop或者全部停止 ./nginx -s quit#重启ngnix./ngnix -s reload#查看ngnix  状态netstat -tupln | grep ngnix

#开机自启动 …
如果启动成功了访问页面:根据自己的IP地址(eg.我的192.168.25.130)
搭建FastDFS+Nginx+fastdfs-nginx-module安装配置

2.3 安装FastDFS
2.3.1 安装FastDFS的基础库
1. 安装libevent库
yum install -y libevent
2. 安装 libfastcommon基础库cp  -rf /home/xzb/libfastcommonV1.0.7.tar.gz  /usr/local#解压tar -xzvf  libfastcommonV1.0.7.tar.gzcd libfastcommon-1.0.7#执行./make.sh./make.sh install  3. 注意:上诉安装完之后,安装完的路径在/usr/lib64,但是fastDFS访问的lib路径在 /usr/local/lib 中 所以此时需要建立软连接ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.soln -s /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so
2.3.2 安装FastDFS中 tracker服务
  1. 解压
    cp -rf /home/xzb/FastDFS_v5.05.tar.gz /usr/local/
    tar -xzvf FastDFS_v5.05.tar.gz
    #执行
    cd FastDFS
    ./make
    ./make install
    如果发现在 /etc/fdfs/ 这个目录有配置文件说明安装成功了!!

  2. 配置tracker服务

          1. 创建tracker的数据文件/日志目录(我存放在了/opt/fastdfs_tracker)mkdir -p /opt/fastdfs_tracker2. 进入 /etc/fdfs/ 执行cd /etc/fdfscp  tracker.conf.sample tracker.conf3. 编辑 tracker.confdisabled=false        #启用配置文件port=22122          #设置tracker的端口号base_path=/opt/fastdfs_tracker   #设置tracker的数据文件和日志目录(需预先创建)http.server_port=80     #设置http端口号4. 启动
    /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart5. 设置开机启动echo '/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart' >> /etc/rc.d/rc.local6. 通过如下命令查看trackerd服务是否启动:netstat -tupln | grep trackerd   7. 如果有错可以在 /opt/fastdfs_tracker/logs 中查看
    
2.3.3 配置FastDFS中的storage服务
1. 创建存放storage 数据/日志文件目录mkdir -p /opt/fastdfs_storage2. 进入/etc/fdfscd  /etc/fdfs/cp storage.conf.sample storage.conf3. 编辑 storage.confdisabled=false            #启用配置文件 
group_name=group1         #组名,根据实际情况修改
port=23000                #设置storage的端口号
base_path=/opt/fastdfs_storage   #设置storage的日志目录(需预先创建) 
store_path_count=1        #存储路径个数,需要和store_path个数匹配 
store_path0=/opt/fastdfs_storage  #存储路径
tracker_server=192.168.25.130:22122 #tracker服务器的IP地址和端口号 (我这是同一台)
http.server_port=80     #设置http端口号4. 启动/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart5. 开机启动echo '/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart' >> /etc/rc.d/rc.local
6. 是否启动
netstat -tupln | grep storaged
2.3.4 上传测试
    FastDFS安装成功可通过/usr/bin/fdfs_test测试上传、下载等操作。cp client.conf.sample client.conf修改/etc/fdfs/client.confbase_path=/opt/fastdfs_storagetracker_server=192.168.25.130:22122使用格式:/usr/bin/fdfs_test 客户端配置文件地址  upload  上传文件比如将/home下的文件上传到FastDFS中:/usr/bin/fdfs_test /etc/fdfs/client.conf upload /home/我是好人.pdfhttp://192.168.25.130/group1/M00/00/00/M00/00/00/wKgZgluJDpiAWpqAAev7k46AZD8093.pdf就是文件的下载路径。对应storage服务器上的/opt/fdfs_storage/data/00/00/wKhlBVVY2M-AM_9DAAAT7-0xdqM485_big.png文件。由于现在还没有和nginx整合无法使用http下载。
2.3.5在storage中安装Ngnix
  1. 使用nginx可以提供http服务,更好的解决分布同步的问题等2. 由于之前已经安装过ngnix ,所以此时我们需要添加fastdfs-nginx-module cp /home/xzb/fastdfs-nginx-module_v1.16.tar.gz  /usr/localtar -zxvf fastdfs-nginx-module_v1.16.tar.gz3. 在nginx中添加该模块配置cd /usr/lcoal/nginx-1.8.0/执行:./configure  --add-module=/usr/local/fastdfs-nginx-module/srcmakemake  install 4. cd fastdfs-nginx-module/src/ vi  config (这一步很重要,很重要,很重要(重要的事情说三遍)CORE_INCS="$CORE_INCS /usr/local/include/fastdfs /usr/local/include/fastcommon/"CORE_LIBS="$CORE_LIBS -L/usr/local/lib -lfastcommon -lfdfsclient"

把local都去掉
5. 然后执行
make
make install
如果没有错误则安装成功

  1. 将插件添加到nginx中
    cd /usr/local/ngnix/conf/
    vi nginx.conf
    server {
    listen 80; #端口
    server_name 192.168.25.130;

    location /group1/M00 {    # 多个组 ~/group[1-3]root   /opt/fastdfs_store/data;  #存储数据ngx_fastdfs_module;
    } 
    ....
    

    }

  2. 执行命令cd /usr/local/FastDFS/conf
    cp http.conf /etc/fdfs
    cp mime.types /etc/fdfs
    不复制这2个文件启动nginx会报错

  3. 执行命令 cd /usr/local/fastdfs-nginx-module/src
    cp mod_fastdfs.conf /etc/fdfs
    vi mod_fastdfs.conf
    修改如下几项:
    tracker_server=192.168.25.130:22122
    store_path0=/opt/fastdfs_storage
    base_path=/opt/fastdfs_storage
    url_have_group_name = true(配置多个tracker时,应该将此项设置为true)

搭建FastDFS+Nginx+fastdfs-nginx-module安装配置

  1. 建立软连接(配置文件中storage存放数据的路径)

ln -s /opt/fastdfs_storage/data /opt/fastdfs_storage/data/M00

  1. 关闭防火墙或者设置对外端口
    关闭防火墙:
    service firewalld stop //停止防火墙
    service firewalld disable//永久停止
    10 测试
    上传的文件或者图片,可以在浏览器直接访问啦!
    eg. http://192.168.25.130/group1/M00/00/00/wKgZgluJAE2Adan1Aev7k46AZD8377.pdf 搭建FastDFS+Nginx+fastdfs-nginx-module安装配置
  相关解决方案