头图

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

FastDFS服务端有两个角色:跟踪器(tracker)和存储节点(storage)。跟踪器主要做调度工作,在访问上起负载均衡的作用。

目标

  • 在CentOS7中搭建FastDFS分布式文件系统;
  • FastDFS+ Nginx + fastdfs-nginx-module整合;
  • 对FastDFS文件管理(上传、下载、预览、删除);

分析

  • 安装依赖包;
  • 安装FastDFS;
  • 整合Nginx与fastdfs-nginx-module;
  • 测试。

环境

  • CentOS7
  • FastDFS_v5.08.tar.gz
  • nginx-1.19.10.tar.gz
  • libfastcommon-master.zip

依赖安装

  • 要安装 gcc
    yum install gcc-c++
  • 安装 libevent
    yum -y install libevent
  • 安装 libevent
    yum -y install libevent
  • 安装 libfastcommon 或 libfastcommon-master
    tar -zxvf libfastcommon-master.zip
    cd libfastcommon-master
    ./make.sh
    ./make.sh install

    这里选择libfastcommon-master.zip因为libfastcommon配置后FastDFS编译不成功;
    libfastcommon 是 FastDFS 官方提供的,libfastcommon 包含了 FastDFS 运行所需要的一些基础库。

安装FastDFS

  • 解压安装包
    tar -zxvf FastDFS_v5.08.tar.gz
  • 进入目录
    cd FastDFS
  • 编译
    ./make.sh
  • 安装
    ./make.sh install
  • 查看安装位置
    ls -la /usr/bin/fdfs*
    image.png

配置Tracker服务

  • 进入/etc/fdfs目录,看到几个文件 没有到/mysoft/FastDFS/conf文件拷贝过来;
    image.png
  • 拷贝tracker.conf.sample,改tracker.conf;
    cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf
  • 编辑tracker.conf 修改相关参数
    vi /etc/fdfs/tracker.conf

     #tracker存储data和log的跟路径,必须提前创建好
     base_path=/home/fastdfs/tracker  
     port=22122 #tracker默认22122
     http.server_port=80 #http端口,需要和nginx相同
  • 启动tracker(支持start|stop|restart)
    /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf start|stop|restart

    /etc/init.d/fdfs_trackerd start|stop|restart
  • 查看端口情况:netstat -apn|grep fdfs
    netstat -apn|grep fdfs
    image.png

配置Storage服务

  • 进入/etc/fdfs目录,看到几个文件 没有到/mysoft/FastDFS/conf文件拷贝过来;
    image.png
  • 拷贝storage.conf.sample,改storage.conf;
    cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf
  • 编辑storage.conf 修改相关参数
    vi /etc/fdfs/storage.conf

    #storage存储data和log的跟路径,必须提前创建好 
    base_path=/home/fastdfs/storage   
    port=23000  #storge默认23000,同一个组的storage端口号必须一致
    group_name=group1  #默认组名,根据实际情况修改
    store_path_count=1  #存储路径个数,需要和store_path个数匹配
    store_path0=/home/fastdfs/storage  #如果为空,则使用base_path
    tracker_server=192.168.157.130:22122 #配置该storage监听的tracker的ip和port
  • 启动storage(支持start|stop|restart)
    /usr/bin/fdfs_storaged /etc/fdfs/storage.conf start|stop|restart

    /etc/init.d/fdfs_storaged start|stop|restart
  • 查看端口情况:netstat -apn|grep fdfs
    netstat -apn|grep fdfs
    image.png
  • 通过monitor来查看storage是否成功绑定:
    /usr/bin/fdfs_monitor /etc/fdfs/storage.conf
    image.png

安装Nginx和fastdfs-nginx-module模块

  • 解压nginx安装包
    tar -zxvf nginx-1.19.10.tar.gz
  • 解压fastdfs-nginx-module组件
    tar -zxvf fastdfs-nginx-module_v1.16.tar.gz
  • 进入目录
    cd nginx-1.19.10
  • 配置,并加载fastdfs-nginx-module模块:
    ./configure --prefix=/usr/local/nginx --add-module=/usr/local/fastdfs/fastdfs-nginx-module/src
  • 编译
    ./make.sh
  • 安装
    ./make.sh install
  • 查看安装路径
    whereis nginx
    image.png
  • Nginx 加载配置 重启服务
    systemctl status nginx.service (查看服务当前状态)
    systemctl start nginx.service (启动nginx服务)
    systemctl stop nginx.service (停止nginx服务)
    systemctl restart nginx.service (重新启动服务)
    systemctl reload nginx.service (重新加载配置)
  • 查看此时的nginx版本:发现fastdfs模块已经安装好了
    `/usr/local/nginx/sbin/image.png

配置Nginx和fastdfs-nginx-module模块

  • 拷贝fastdfs-ngin-module中的mod-fastdfs.conf配置文件,到/etc/fdfs目录中
    cd /usr/local/fastdfs/fastdfs-nginx-module/src
    cp /usr/local/fastdfs/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
  • 进入/etc/fdfs修改mod-fastdfs.conf
    vi /etc/fdfs/mod_fastdfs.conf

    base_path=/home/fastdfs/
    tracker_server=192.168.157.130:22122 #tracker的地址
    url_have_group_name=true #url是否包含group名称
    storage_server_port=23000 #需要和storage配置的相同
    store_path_count=1  #存储路径个数,需要和store_path个数匹配
    store_path0=/home/fastdfs/storage #文件存储的位置
  • 配置nginx,80端口server增加location如图:
    vi /usr/local/nginx/conf/nginx.conf

    #fastdfs info
    location ~/group[0-9]/M00/ {
       ngx_fastdfs_module;
    }

FastDFS 测试客户端配置

  • 进入/etc/fdfs目录,拷贝client.conf.sample,改client.conf;
    cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf
  • 编辑client.conf 修改相关参数
    vi /etc/fdfs/client.conf

    base_path=/home/fastdfs/tracker #tracker服务器文件路径
    tracker_server=192.168.157.130:22122 #tracker服务器IP地址和端口号
    # tracker服务器的http端口号,必须和tracker的设置对应起来
    http.tracker_server_port=80

FastDFS 操作测试

  • 上传文件
    [root@localhost fdfs]# fdfs_upload_file /etc/fdfs/client.conf /mysoft/1.png
    image.png
    image.png
  • 预览文件
    http://192.168.157.130/group1...
    image.png
  • 下载文件
    fdfs_download_file /etc/fdfs/client.conf group1/M00/00/00/wKidgmCz52eAdFyBAALBD5a98zs974.png /mysoft/dow_2.png
    image.png
  • 删除文件
    fdfs_delete_file /etc/fdfs/client.conf group1/M00/00/00/wKidgmCz52eAdFyBAALBD5a98zs974.png
    image.png

FastDFS 常见错误解决
1.FastDFS错误:Tracker启动报错symbol lookup error:undefined symbol:XXXX
原因:tracker服务器(未启动) storage服务器
根据tracker日志文件中报出的错误,可以知道是软链接有问题。如下:
image.png

解决执行命令:

ldd /usr/bin/fdfs_trackerd (ldd查看当前依赖项)
ll /usr/local/lib/libfastcommon.so 
ll /usr/lib/libfastcommon.so 
rm -rf /usr/lib/libfastcommon.so(删除之前的链接) 
ldd /usr/bin/fdfs_trackerd 
/sbin/ldconfig(使链接生效)

操作完成后结果如下:
image.png

修改完成后重启服务:

/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf start
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf start

Jack
1 声望0 粉丝

引用和评论

0 条评论