文档首页 > > 移植指南> 移植FastDFS> 移植指导

移植指导

分享
更新时间:2020/08/31 GMT+08:00

介绍

简要介绍

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

编写语言:C/C++

一句话概述:轻量级分布式文件系统

建议的版本

FastDFS官网源码暂时无法下载,此次测试代码均取自于Github。

  • 建议使用版本为“5.11”
  • 获取软件的链接:https://github.com/happyfish100/fastdfs/archive/V5.11.tar.gz

环境要求

云服务器要求

本文以云服务器KC1实例测试,云服务器配置如表1所示。

表1 云服务器配置

项目

说明

规格

kc1.xlarge.2 | 4vCPUs | 8GB

磁盘

系统盘:高IO(40GB)

操作系统要求

操作系统要求如表2所示。

表2 操作系统要求

项目

版本

下载地址

CentOS

7.5

在公共镜像中已提供。

Kernel

4.14.0

在公共镜像中已提供。

编译和安装

  1. 安装FastDFS依赖环境。

    yum install gcc-c++ -y

    yum install pcre pcre-devel openssl ssl-devel perl-devel -y

  2. 安装FastDFS依赖包libfastcommon。

    cd /usr/local/src

    wget https://github.com/happyfish100/libfastcommon/archive/V1.0.38.tar.gz

    tar -zxvf V1.0.38.tar.gz

    cd libfastcommon-1.0.38/

    ./make.sh

    ./make.sh install

  3. 安装FastDFS。

    cd /usr/local/src

    wget https://github.com/happyfish100/fastdfs/archive/V5.11.tar.gz

    tar -zxvf V5.11.tar.gz

    cd fastdfs-5.11/

    ./make.sh

    ./make.sh install

  4. 将配置文件复制到系统为fdfs预设的目录。

    cd /usr/local/src/fastdfs-5.11/conf

    cp mime.types http.conf /etc/fdfs/

  5. 查看安装FastDFS过程中产生的可执行文件。

    ls -la /usr/bin/fdfs*

    显示类似如下内容表示安装成功。

    -rwxr-xr-x 1 root root  381896 Jul  9 14:45 /usr/bin/fdfs_appender_test
    -rwxr-xr-x 1 root root  381680 Jul  9 14:45 /usr/bin/fdfs_appender_test1
    -rwxr-xr-x 1 root root  372592 Jul  9 14:45 /usr/bin/fdfs_append_file
    -rwxr-xr-x 1 root root  372392 Jul  9 14:45 /usr/bin/fdfs_crc32
    -rwxr-xr-x 1 root root  372624 Jul  9 14:45 /usr/bin/fdfs_delete_file
    -rwxr-xr-x 1 root root  373360 Jul  9 14:45 /usr/bin/fdfs_download_file
    -rwxr-xr-x 1 root root  372976 Jul  9 14:45 /usr/bin/fdfs_file_info
    -rwxr-xr-x 1 root root  382640 Jul  9 14:45 /usr/bin/fdfs_monitor
    -rwxr-xr-x 1 root root 1138424 Jul  9 14:45 /usr/bin/fdfs_storaged
    -rwxr-xr-x 1 root root  387728 Jul  9 14:45 /usr/bin/fdfs_test
    -rwxr-xr-x 1 root root  386984 Jul  9 14:45 /usr/bin/fdfs_test1
    -rwxr-xr-x 1 root root  520352 Jul  9 14:45 /usr/bin/fdfs_trackerd
    -rwxr-xr-x 1 root root  373584 Jul  9 14:45 /usr/bin/fdfs_upload_appender
    -rwxr-xr-x 1 root root  374616 Jul  9 14:45 /usr/bin/fdfs_upload_file

  6. 配置FastDFS。

    分别对tracker,storage,client进行配置。

    1. 创建目录。

      mkdir /home/fastdfs/tracker -p

      mkdir /home/fastdfs/storage -p

      cd /etc/fdfs/

    2. 配置tracker。

      cp tracker.conf.sample tracker.conf

      vi tracker.conf

      将内容修改为“base_path=/home/fastdfs/tracker”“thread_stack_size = 128KB”,如下面加粗部分所示:

      # the base path to store data and log files
      base_path=/home/fastdfs/tracker
      ......
      # thread stack size, should >= 64KB
      # default value is 64KB
      thread_stack_size = 128KB
    3. 启动tracker。

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

    4. 配置storage。

      cd /etc/fdfs/

      cp storage.conf.sample storage.conf

      vi storage.conf

      将内容修改为“base_path=/home/fastdfs/storage”“store_path0=/home/fastdfs/storage”“tracker_server=XX.XX.XX.XX:22122”

      “tracker_server”中的“XX.XX.XX.XX”为本机的虚拟IP地址,可以通过ifconfig命令查询获取。

      修改后的内容,如下面加粗部分所示,其中“192.168.1.206”为示例,应根据实际虚拟IP地址填写。

      # the base path to store data and log files
      base_path=/home/fastdfs/storage
      ...
      # store_path#, based 0, if store_path0 not exists, it's value is base_path
      # the paths must be exist
      store_path0=/home/fastdfs/storage
      #store_path1=/home/yuqing/fastdfs2
      .....
      # tracker_server can ocur more than once, and tracker_server format is
      #  "host:port", host can be hostname or ip address
      tracker_server=192.168.1.206:22122
    5. 启动storage。

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

    6. 查看storage启动日志。

      vi /home/fastdfs/storage/logs/storaged.log

      查看最后几行,显示类似如下所示,表示启动成功。

      [2019-07-09 17:03:51] INFO - file: tracker_client_thread.c, line: 310, successfully connect to tracker server 192.168.1.206:2
      2122, as a tracker client, my ip is 192.168.1.206
      [2019-07-09 17:04:21] INFO - file: tracker_client_thread.c, line: 1263, tracker server 192.168.1.206:22122, set tracker leade
      r: 192.168.1.206:22122
    7. 配置client。

      cd /etc/fdfs/

      cp client.conf.sample client.conf

      vi client.conf

      将内容修改为“base_path=/home/fastdfs/tracker”“tracker_server=XX.XX.XX.XX:22122”

      “tracker_server”中的“XX.XX.XX.XX”为本机的虚拟IP地址,可以通过ifconfig命令查询获取。

      修改后的内容,如下面加粗部分所示,其中“192.168.1.206”为示例,应根据实际虚拟IP地址填写。

      # the base path to store log files
      base_path=/home/fastdfs/tracker
      ......
      # tracker_server can ocur more than once, and tracker_server format is
      #  "host:port", host can be hostname or ip address
      tracker_server=192.168.1.206:22122

  7. 安装和配置fastdfs-nginx-module。

    1. 安装fastdfs-nginx-module。

      cd /usr/local/src

      wget https://github.com/happyfish100/fastdfs-nginx-module/archive/V1.20.tar.gz

      tar -zxvf V1.20.tar.gz

    2. 配置fastdfs-nginx-module的“config”文件。

      cd /usr/local/src/fastdfs-nginx-module-1.20/src/

      vi config

      按照如下加粗所示,修改“ngx_module_incs”“CORE_INCS”

      ngx_addon_name=ngx_http_fastdfs_module
      
      if test -n "${ngx_module_link}"; then
          ngx_module_type=HTTP
          ngx_module_name=$ngx_addon_name
          ngx_module_incs="/usr/include/fastdfs /usr/include/fastcommon/"
          ngx_module_libs="-lfastcommon -lfdfsclient"
          ngx_module_srcs="$ngx_addon_dir/ngx_http_fastdfs_module.c"
          ngx_module_deps=
          CFLAGS="$CFLAGS -D_FILE_OFFSET_BITS=64 -DFDFS_OUTPUT_CHUNK_SIZE='256*1024' -DFDFS_MOD_CONF_FILENAME='\"/etc/fdfs/mod_fast
      dfs.conf\"'"
          . auto/module
      else
          HTTP_MODULES="$HTTP_MODULES ngx_http_fastdfs_module"
          NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_http_fastdfs_module.c"
          CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
          CORE_LIBS="$CORE_LIBS -lfastcommon -lfdfsclient"
          CFLAGS="$CFLAGS -D_FILE_OFFSET_BITS=64 -DFDFS_OUTPUT_CHUNK_SIZE='256*1024' -DFDFS_MOD_CONF_FILENAME='\"/etc/fdfs/mod_fast
      dfs.conf\"'"
      fi
    3. 配置fastdfs-nginx-module的“mod_fastdfs.conf”文件。

      cp /usr/local/src/fastdfs-nginx-module-1.20/src/mod_fastdfs.conf /etc/fdfs/

      vi /etc/fdfs/mod_fastdfs.conf

      将内容修改为“base_path=/home/fastdfs”“tracker_server=XX.XX.XX.XX:22122”“url_have_group_name = true”“store_path0=/home/fastdfs/storage”

      “tracker_server”中的“XX.XX.XX.XX”为本机的虚拟IP地址,可以通过ifconfig命令查询获取。

      修改后的内容,如下面加粗部分所示,其中“192.168.1.206”为示例,应根据实际虚拟IP地址填写。

      # the base path to store log files
      base_path=/home/fastdfs
      ......
      # FastDFS tracker_server can ocur more than once, and tracker_server format is
      #  "host:port", host can be hostname or ip address
      # valid only when load_fdfs_parameters_from_tracker is true
      tracker_server=192.168.1.206:22122
      ......
      # if the url / uri including the group name
      # set to false when uri like /M00/00/00/xxx
      # set to true when uri like ${group_name}/M00/00/00/xxx, such as group1/M00/xxx
      # default value is false
      url_have_group_name = true
      .......
      # store_path#, based 0, if store_path0 not exists, it's value is base_path
      # the paths must be exist
      # must same as storage.conf
      store_path0=/home/fastdfs/storage

  8. 安装和配置Nginx。

    1. 安装Nginx。

      cd /usr/local/src/

      wget http://nginx.org/download/nginx-1.15.2.tar.gz

      tar -zxvf nginx-1.15.2.tar.gz

      cd nginx-1.15.2

      ./configure --prefix=/usr/local/nginx --add-module=/usr/local/src/fastdfs-nginx-module-1.20/src/

      make &&make install

    2. 配置Nginx。

      cd /usr/local/nginx/conf/

      vi nginx.conf

      server {
      listen80;
      server_name  localhost;
      
      #charset koi8-r;
      
      #access_log  logs/host.access.log  main;
      location ~/M00{
      root   /home/fastdfs/storage/data;
      ngx_fastdfs_module;
      }
      
      location / {
      root   html;
      index  index.html index.htm;
      }

运行和验证

  1. 启动nginx

    cd /usr/local/nginx/sbin/

    ./nginx

  2. 测试。

    1. 生成测试文件。

      cd /usr/local/src

      touch a.txt

      vi a.txt

      插入如下内容并保存。

      kungpeng test fastdfs ok!
    2. 生成文件链接

      /usr/bin/fdfs_upload_file /etc/fdfs/client.conf a.txt

      回显信息如下:

      [root@ecs-001 src]# /usr/bin/fdfs_upload_file  /etc/fdfs/client.conf a.txt
      group1/M00/00/00/wKgBzl0khdiAWJcGAAAAGmbRVtQ604.txt

      记录返回的信息为“group1/FAST/00/00/wKgBzl0khdiAWJcGAAAAGmbRVtQ604.txt”

    3. 放通云服务器安全组中入口规则里的80端口,在浏览器中输入“http://[ECS IP]:80/group1/M00/00/00/wKgBzl0khdiAWJcGAAAAGmbRVtQ604.txt”可以看到返回的“a.txt”相关信息。

分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!非常感谢您的反馈,我们会继续努力做到更好!
反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

智能客服提问云社区提问