Ubuntu16.04部署fastDFS

搭建环境

  • ubuntu16.04
  • fastdfs 5.11
  • libfastcommon 1.0.36

资源

  • libevent
    fsatDFS如果是2.0之前的版本需要安装libevent(新版本不需要)

  • libfastcommon

      https://github.com/happyfish100/libfastcommon/tree/V1.0.36
    
  • fastDFS

      https://github.com/happyfish100/fastdfs/tree/V5.11
    

搭建

libfastcommon

sudo unzip libfastcommon-1.0.36.zip
./make.sh

在这里插入图片描述``


no such file or directory

  • 文件本身损坏
  • 无执行权限 (chmod 777 xxx)
  • 系统位数与程序位数不同

sudo chmod 777 libfastcommon-1.0.36 

在这里插入图片描述

sudo ./make.sh #编译
sudo ./make.sh install  #将编译生成的库文件头文件等拷贝进对应文件夹

在这里插入图片描述

fastDFS

sudo unzip fastdfs-5.11.zip
sudo ./make.sh
sudo ./make.sh install

在这里插入图片描述
检测安装

fdfs_test

在这里插入图片描述

配置

cd /etc/fdfs

在这里插入图片描述

  • 4个sample文件起到备份作用
  • 客户端,追踪器和存储节点各对应一个文件

进行拷贝

sudo cp tracker.conf.sample tracker.conf
sudo cp storage_ids.conf.sample storage_ids.conf
sudo cp client.conf.sample client.conf

修改 tracker.conf

  • 修改ip

      bind_addr  =  192.168.153.129  #第8行,绑定tracker所在主机ip 
    
  • 检查端口

      port = 22122   #第11行
    

第11行,port = 22122,一般情况下22122没被占用,查看方法如:

ps aux|grep "22122"  或   netstat -apn|grep "22122"   
  • 修改日志文件目录

      base_path=/home/l/tracker #第22行
    

需要先创建三个文件夹用来存放log文件,可以在家目录下创建文件夹fastDFS,然后在里面创建client,tracker和storage三个文件夹

在这里插入图片描述
保存时出现如下问题,退出sudo vi tracker.conf重新修改保存

在这里插入图片描述


修改storage.conf

  • 修改ip

      bind_addr=192.168.153.129  #第15行
    
  • 检查端口

      port=23000   #第24行
    
  • log文件位置

      base_path=/home/l/fasrDFS/storage   #41行
    
  • 存储目录个数

      store_path_count=1   # 105行一般写一个即可,对应109行的路径也只需写一个
    
  • 存储目录路径

      store_path0=/home/fastDFS/storage  #109行只需时一个已存在路径即可
    
  • 追踪器ip和端口

      tracker_server=192.168.153.129:22122   #第118行
    

修改client.conf

  • log文件目录

      base_path=/home/fastDFS/client  #第10行
    
  • 追踪器 ip和端口

       tracker_server=192.168.153.129:22122
    

启动fastDFS

  • 启动tarcker

      cd /usr/bin
      ls /usr/bin/fdfs*
    

在这里插入图片描述

fdfs_trackered /etc/fdfs/tracker.conf   

出现conmond not found则加上sudo即可
在这里插入图片描述
把三个文件开放权限
在这里插入图片描述

sudo fdfs_trackered /etc/fdfs/tracker.conf   

检测启动是否成功

netstat -apn|grep "22122"

在这里插入图片描述

  • 启动storage

      sudo fdfs_trackered /etc/fdfs/tracker.conf  
    

检测当前fdfs环境是否通

sudo fdfs_monitor /etc/fdfs/client.conf

得到一长串信息

在这里插入图片描述
需要看到 ACTIVE

在这里插入图片描述
此时进行文件上传尝试,在/home/l/mysamba 目录下有fdfs.png文件一个进行上传

fdfs_upload_file /etc/fdfs/client.conf fdfs.png

在这里插入图片描述
配置时将节点存储路径设为/home/l/fastDFS/storage,只需去其下找即可

  • group1/M00/00/00/wKiZgV3lCueAMEAhAAAjfGVf2MY830.png

  • M00是虚拟磁盘路径,指向了storage.conf中的(base_path =) /home/l/fastDFS/storage

  • 00/00 二级目录 有效存储上传文件的目录

  • wKiZgV3lCueAMEAhAAAjfGVf2MY830.png 文件名,Base64编码加密得到

  • data下创建了许多文件夹

  • fast_storaged.pid 当前存储节点进程对应的pid

在这里插入图片描述

cd 00/00
ls

在这里插入图片描述
文件下载

fdfs_download_file  /etc/fdfs/client.conf  group1/M00/00/00/wKiZgV3lCueAMEAhAAAjfGVf2MY830.png

在这里插入图片描述

文件上传下载

文件上传

在这里插入图片描述

  • 整个过程中只有对于文件信息的存储需要程序员完成,因为将文件名和file_id的对应关系存储进数据库方便下次下载
  • 本质上的TCP连接

文件下载

在这里插入图片描述

shell下实现文件上传下载

在这里插入图片描述

  • group1 —组名

  • M00 —虚拟磁盘路径

  • 00/00—二级目录,存储上传文件的目录
    对应storage.conf中的
    在这里插入图片描述

  • 文件名
    在这里插入图片描述

在这里插入图片描述

代码实现FastDFS 文件上传下载

FastAPI实现

进程方式实现

  • 创建匿名管道
  • 创建子进程
  • 子进程中执行execlp
    • 关闭读端
    • 将得到的文件ID写入管道(重定向)
  • 父进程
    • 读管道
    • 关闭写端
    • 将file_id读到内存
    • 回收子进程pcb

在这里插入图片描述

execl/execlp

  • execl执行的是用户自己写的程序(需要指定绝对路径)
  • execlp 不需要指定路径,会解析环境变量,由于fasdDFS可执行程序在/usr/bin下

父子进程共享

  • 文件描述符
  • 内存映射区

stat file.c 查看文件相关信息

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页