加载中...

FastFDS安装及使用


FastDFS安装及使用

1. FastDFS安装

包下载地址:https://github.com/happyfish100

1.1 安装前的准备

  • 检查Linux上是否安装了gcc、libevent、libevent-devel

    yum list installed | grep gcc
    yum list installed | grep libevent
    yum list installed | grep libevent-devel
  • 如果没有安装,则需进行安装

    yum install gcc libevent libevent-devel -y
    
    yum install cmake make gcc-c++ -y
  • 创建一个目录,把有关fdfs存储在一起

    mkdir -p /usr/local/fastdfs
  • 进入目录,开始下载各种所需库并安装

    cd /usr/local/fastdfs

    以下每一步操作都需要先回到该目录!!!

1.2 安装 libfastcommon库

​ libfastcommon库是FastFDS文件系统运行所需要的公共C语言函数库

  • 首先拷贝libfastcommon库到linux上,或者直接下载

    wget https://github.com/happyfish100/libfastcommon/archive/V1.0.43.tar.gz
  • 解压

    tar -zxvf libfastcommon-1.0.43.tar.gz
  • 进入目录

    cd libfastcommon-1.0.43/
  • ls查看目录,然后编译

    [root@localhost libfastcommon-1.0.43]# ls
    doc  HISTORY  INSTALL  libfastcommon.spec  make.sh  php-fastcommon  README  src
    [root@localhost libfastcommon-1.0.43]# ./make.sh
  • 编译完成后进行安装

    [root@localhost libfastcommon-1.0.43]# ./make.sh install
  • 因为FastFDS主程序设置的lib目录是/usr/local/lib,所以需要创建软链接

    ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so
    ln -s /usr/local/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so
    ln -s /usr/local/lib64/libfdfsclient.so /usr/lib/libfdfsclient.so

1.3 安装FastDFS

  • 下载FastDFS

    wget https://github.com/happyfish100/fastdfs/archive/V6.06.tar.gz
  • 解压并进入目录

    tar -zxvf fastdfs-6.06.tar.gz && cd fastdfs-6.06
  • 在单机模式(集群不建议更改)下可以更改下安装目录,比如更改到/usr/local;不更改跳过此步骤

    vim make.sh   # 进入编辑模式
    /TARGET_PREFIX  # 查找TARGET_PREFIX,修改值为 /usr/local
  • 编译安装

    ./make.sh && ./make.sh install

    安装后,FastFDS主程序所在的位置是:

    • /usr/local/bin可执行文件(内置命令)所在位置。默认安装在/usr/bin中。
    • /etc/fdfs配置文件所在位置。就是默认位置。
    • /usr/local/lib64主程序代码所在位置。默认在/usr/bin中。
    • /usr/local/include/fastdfs包含的一些插件组所在位置。默认在/usr/include/fastdfs中。
    • /etc/init.d对应服务脚本所在位置。默认位置。

2. FastDFS配置&启动

tips:先启动tracker,最后启动storage!!!否则会启动失败

2.1 配置tracker&启动

  • 进入/etc/fdfs目录,使用模板创建tracker.conf文件

    cp tracker.conf.sample tracker.conf
  • 使用vim修改tracker.conf文件

    base_path = /fastdfs/tracker  # 配置tracker存储数据的目录,默认在/home/yuqing/fastdfs,所以需要修改

    修改完成后记得创建目录

    mkdir -p /fastdfs/tracker
  • 启动tracker

    # 1.进入/etc/init.d/目录
    cd /etc/init.d/
    
    # 2.因为前面修改了安装位置,所以需要修改tracker配置文件的启动目录。没有修改安装位置跳过此步骤
    vim fdfs_trackerd
    # 修改RPG目录,把/usr/bin/改为/usr/local/bin/
    
    # 3.启动tracker
    [root@localhost init.d]# ./fdfs_trackerd start    # 启动tracker
    Starting FastDFS tracker server: 
    [root@localhost init.d]# ./fdfs_trackerd status   # 查看启动状态
    fdfs_trackerd (pid 6637) is running...
    [root@localhost init.d]# ps -ef | grep fdfs       # 验证启动状态
    root       6637      1  0 14:48 ?        00:00:00 /usr/local/bin/fdfs_trackerd /etc/fdfs/tracker.conf
    root       6670   2427  0 14:49 pts/0    00:00:00 grep --color=auto fdfs
    [root@localhost init.d]# 
  • 设置开机启动

    vim /etc/rc.d/rc.local 
    # 在末尾增加
    /etc/init.d/fdfs_trackerd start

2.2 配置storage&启动

  • 进入/etc/fdfs目录,使用模板创建storage.conf文件

    cp storage.conf.sample storage.conf
  • 使用vim修改storage.conf文件

    base_path=/fastdfs/storage/base #storage存储数据目录
    store_path0=/fastdfs/storage/store #真正存放文件的目录
    tracker_server=192.168.21.129:22122 #注册当前存储节点的跟踪器地址

    修改完成后记得创建目录

    [root@localhost fdfs]# mkdir -p /fastdfs/storage/base
    [root@localhost fdfs]# mkdir -p /fastdfs/storage/store
  • 启动storage

    # 1.进入/etc/init.d/目录
    cd /etc/init.d/
    
    # 2.因为前面修改了安装位置,所以需要修改tracker配置文件的启动目录。没有修改安装位置跳过此步骤
    vim /etc/init.d/fdfs_storaged 
    # 修改RPG目录,把/usr/bin/改为/usr/local/bin/
    
    # 3.启动storage
    [root@localhost fdfs]# /etc/init.d/fdfs_storaged start
    Reloading systemd:                                         [  OK  ]
    Starting fdfs_storaged (via systemctl):                    [  OK  ]
    [root@localhost fdfs]# /etc/init.d/fdfs_storaged status
    ● fdfs_storaged.service - LSB: FastDFS storage server
       Loaded: loaded (/etc/rc.d/init.d/fdfs_storaged; bad; vendor preset: disabled)
       Active: active (exited) since Wed 2020-12-23 15:08:48 CST; 28s ago
         Docs: man:systemd-sysv-generator(8)
      Process: 7124 ExecStart=/etc/rc.d/init.d/fdfs_storaged start (code=exited, status=0/SUCCESS)
    
    Dec 23 15:08:48 localhost.localdomain systemd[1]: Starting LSB: FastDFS storage server...
    Dec 23 15:08:48 localhost.localdomain fdfs_storaged[7124]: Starting FastDFS storage server:
    Dec 23 15:08:48 localhost.localdomain systemd[1]: Started LSB: FastDFS storage server.

2.3 客户端配置(仅测试用,可以不进行此步骤而使用代码测试)

  • 同上进入/etc/fdfs目录,使用模板创建client.conf文件并修改配置

    cd /etc/fdfs
    cp client.conf.sample client.conf
    vim client.conf
    mkdir -p /fastdfs/client
    
    # client.conf  修改以下两个配置
    base_path = /fastdfs/client    # 客户端产生的数据
    tracker_server = 192.168.21.129:22122   # tracker的服务
  • 上面执行完毕即可测试上传文件了

    [root@localhost fdfs]# fdfs_upload_file /etc/fdfs/client.conf /a.jpg 
    group1/M00/00/00/wKgVgV_i802ALMJ3AA4L-ymgAPA595.jpg
    
    # 解释:
    # fdfs_upload_file  是上传文件命令,在/etc/local/bin下,因为/etc/local/bin为环境变量,所以可以在任何地方进行调用
    # /etc/fdfs/client.conf  是指定客户端的配置文件
    # /a.jpg   是要上传的文件。我这里在根目录下有一个a.jpg文件
    # 最后返回的结果证明上传成功。group1是配置文件的组名,M00是虚拟目录,剩余的是真实目录
    
    # 前面在storage中配置了store_path0=/fastdfs/storage/store
    # 所以文件真实所在位置为/fastdfs/storage/store/00/00/wKgVgV_i802ALMJ3AA4L-ymgAPA595.jpg
  • 删除文件

    [root@localhost fdfs]# fdfs_delete_file /etc/fdfs/client.conf group1/M00/00/00/wKgVgV_i802ALMJ3AA4L-ymgAPA595.jpg
    
    # 解释同上

3. FastDFS与Nginx联合使用

3.1 安装FastDFS的nginx组件

  • 下载nginx组件

    wget https://github.com/happyfish100/fastdfs-nginx-module/archive/V1.22.tar.gz
  • 解压文件并进入

    tar -zxvf fastdfs-nginx-module-1.22.tar.gz -C /usr/local/fastdfs && cd /usr/local/fastdfs/fastdfs-nginx-module-1.22
  • 编辑配置文件

    # 1.进入文件目录后有两个文件一个src目录,进入src目录
    cd src
    
    # 2.进入fastdfs-nginx-module-1.22/src目录后编辑config文件
    vim config
    
    修改如下内容
    # 因为改过安装目录,所以修改如下
    CORE_INCS="$CORE_INCS /usr/local/include/fastdfs /usr/include/fastcommon/"
    # 未修改安装目录,修改如下
    CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"

    编辑完成后需要在nginx启动时加入这个插件,所以需要安装nginx

3.2 安装nginx

  • 首先安装nginx所需要的依赖

    yum install gcc openssl openssl-devel pcre pcre-devel zlib zlib-devel –y
  • 下载nginx

    wget http://tengine.taobao.org/download/tengine-2.3.2.tar.gz
  • 解压

    tar -zxvf tengine-2.3.2.tar.gz
  • 配置nginx安装信息

    cd /usr/local/fastdfs/tengine-2.3.2
    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 \
    --add-module=/usr/local/fastdfs/fastdfs-nginx-module-1.22/src

    --add-module必须定义,此配置信息是用于指定安装nginx时需要加载的模块,如果未指定,nginx安装过程不会加载fastdfs-nginx-module模块,后续功能无法实现

    --prefix是指定nginx安装路径

  • 修改fastdfs-nginx-module配置文件

    cd /usr/local/fastdfs/fastdfs-nginx-module-1.22/src
    cp mod_fastdfs.conf /etc/fdfs/
    cd /etc/fdfs/
    vim mod_fastdfs.conf
    # 修改内容如下
    base_path=/tmp
    tracker_server=192.168.21.129:22122
    url_have_group_name = true
    store_path0=/fastdfs/storage/store
  • 拷贝两个http配置的文件,用于网页http协议

    cp /usr/local/fastdfs/fastdfs-6.06/conf/http.conf /etc/fdfs/
    cp /usr/local/fastdfs/fastdfs-6.06/conf/mime.types /etc/fdfs/
  • 创建nginx启动需要的软连接

    ln -s /usr/local/lib64/libfdfsclient.so /usr/lib/libfdfsclient.so

    nginx启动后,会在默认的/usr/lib64目录中查找需要的so文件。如果在安装FastDFS时,修改了make.sh文件中的TARGET_PREFIX参数,则必须创建此软连接

  • 创建网络访问存储服务的软连接

    ln -s /fastdfs/storage/store/data/ /fastdfs/storage/store/data/M00

    在上传文件到FastDFS后,FastDFS会返回group1/M00/00/00/xxxxxxx.xxx。其中group1是组名,在mod_fastdfs.conf配置文件中已配置了url_have_group_name,以保证URL解析正确。而其中的M00是FastDFS保存数据时使用的虚拟目录,需要将这个虚拟目录定位到真实数据目录上。

  • 编辑nginx配置文件

    cd /usr/local/nginx  # 进入nginx目录
    cd conf              # 进入nginx配置目录
    vim nginx.conf
    # 修改内容如下
    user root;   # 第一行启用user配置,访问文件时使用root用户,实际工作中不这样使用
    listen 8888; # 在http中server中,修改监听端口为8888,因为storage中http端口为8888
    location ~/group[0-9]/M00{
                ngx_fastdfs_module;
            }
  • 重启storage并启动nginx

    /etc/init.d/fdfs_storaged restart   # 重启storage
    /usr/local/nginx/sbin/nginx    # 启动nginx
  • 再次上传文件,然后在浏览器访问图片看是否能正常展示

    [root@localhost fdfs]# fdfs_upload_file /etc/fdfs/client.conf /a.jpg 
    group1/M00/00/00/wKgVgV_jFVOABknvAA4L-ymgAPA308.jpg
    
    在浏览器打开:http://192.168.21.129:8888/group1/M00/00/00/wKgVgV_jFVOABknvAA4L-ymgAPA308.jpg,访问图片成功即部署成功。

文章作者: 无夜
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 无夜 !
评论
  目录