FastDFS安装(mac)|文件存储方案
FastDFS安装(mac)|文件存储方案
在我们进行相关项目开发时,肯定会遇到需要进行文件保存的需求。那么这些文件(如图片)保存到哪里呢?
- 第一种方案是直接保存到本地磁盘中,即通过浏览器发一个post的请求,相关程序将文件保存到本地,这样完全可以实现。但缺点是文件和项目代码都会保存到同一台电脑上,即这台电脑(服务器)既要向客户端响应项目代码又要响应文件。
- 如果像分开就可以使用文件服务器,在这里就是FastDFS,即项目代码在一台电脑,文件在另一台电脑(也就是服务器)。从而实现分开
1 FastDFS介绍
1.1 FastDFS架构
包括Client、Tracker server和Storage server。
- 整体过程:Client也就是我们说的客户端,其请求Tracker进行文件上传、下载,Tracker再调度Storage完成文件上传和下载。
- Client: 客户端,业务请求的发起方,通过专有接口,使用TCP/IP协议与Tracker或Storage进行数据交互。FastDFS提供了upload、download、delete等接口供客户端使用。
- Tracker server:跟踪服务器,主要做调度工作,起负载均衡的作用。在内存中记录集群中所有存储组和存储服务器的状态信息,是客户端和数据服务器交互的枢纽。
- Storage server:存储服务器(存储节点或数据服务器),文件和文件属性都保存到存储服务器上。Storage server会定时的向Tracker server发消息,如果一段时间没发,Tracker server就会将其去除。直接利用OS的文件系统调用管理文件。
- Storage群中的横向可以扩容,纵向可以备份。
1.2 工作原理实例介绍
以上传文件为例:
- Client拿到需要上传的文件,这时Client会向Tracker server发一则消息即“当下需要保存文件”;
- Tracker server在接到消息后,就会从其列表中寻找可用的Storage server,并将可用的Storage server IP返回给Client;
- Client在就到相关IP后,就向这个指定IP的那台服务器发生要上传的文件;
- Storage server 收到文件会将文件保存,并为其起名,后将该名称返回给Client。
- Client收到这个名字后只需将该名称保存下来,供以后依据该名称到Storage server找寻该文件。
1.3 FastDFS上传和下载流程


1.4 FastDFS文件索引

FastDFS上传和下载流程 都涉及到文件索引(file_id)。
- 文件索引(file_id)是客户端上传文件后存储服务器返回给客户端,是以后访问该文件的索引信息。
文件索引(file_id)信息包括:组名、虚拟磁盘路径、数据两级目录、文件名等信息。
- 组名:文件上传后所在的 Storage 组名称。
- 虚拟磁盘路径:Storage 配置的虚拟路径,与磁盘选项store_path*对应。如果配置了store_path0则是M00,如果配置了store_path1则是M01,以此类推。
- 数据两级目录:Storage 服务器在每个虚拟磁盘路径下创建的两级目录,用于存储数据文件。
- 文件名:由存储服务器根据特定信息生成,文件名包含:源存储服务器IP地址、文件创建时间戳、文件大小、随机数和文件拓展名等信息。

2 FastDFS安装(mac)
笔者先尝试了使用docker安装FastDFS,但在创建storage容器时无法映射出data中的多个目录,为此也是尝试了很多方法且网上多数是在ubuntu系统进行的安装,前后花费了五六个小时,如果您有相关有效的解决的方法欢迎私信。这个方法我得出的结论是:
--network=host 参数只有在linux下生效, mac windows 都不能成功,所以导致安装fastdfs是失败的
因此笔者使用了如下的安装方法,亲测有效:
2.1 安装包
- libfastcommon:https://github.com/happyfish100/libfastcommon
- FastDFS:https://github.com/happyfish100/fastdfs
注意:上两个链接都是github上成熟的项目,进入页面后点击“Clone or download” ---> “Download ZIP”
2.2 安装libfastcommon
cd libfastcommon压缩包解压后的文件地址,一定要自行修改如(/Users/..../Desktop/libfastcommon-master)
./make.sh
sudo ./make.sh install
2.3 安装FastDFS
cd FastDFS压缩包解压后的文件地址,一定要自行修改如(/Users/..../Desktop/fastdfs-master)
./make.sh
sudo ./make.sh install
2.4 相关文件配置
(1)配置跟踪服务器tracker
- 拷贝tracker配置文件
sudo cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf
先手动创建您想要存放目录,即收到创建文件夹(名称自由,但尽量不变方便后期查找): /您方便的目录/fdfs/tracker。笔者是在创建了如下目录路径是:
/var/fdfs/tracke
编辑/etc/fdfs/tracker.conf配置文件
sudo vim /etc/fdfs/tracker.conf
- 修改其中base_path的部分如下:
base_path=/您方便的目录/fastdfs/tracker
(2)配置存储服务器storage
- 拷贝storage配置文件
sudo cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf
- 先手动创建您想要存放目录,即收到创建文件夹(名称自由,与上tracker保持在一个上级目录下): /您方便的目录/fdfs/storage。笔者是在创建了如下目录:
/var/fdfs/storage
- 编辑/etc/fdfs/storage.conf 配置文件
sudo vim /etc/fdfs/storage.conf
- 修改其中的base_path, store_path0, tracker_server
base_path=/您方便的目录/fdfs/storage
store_path0=/您方便的目录/fdfs/storage
tracker_server=Mac的IP地址:22122
(3)启动tracker和storage
sudo fdfs_trackerd /etc/fdfs/tracker.conf start
sudo fdfs_storaged /etc/fdfs/storage.conf start
(4)查看是否启动成功
ps aux|grep fdfs
如出现下面情况,则表明成功:
root 13211 98.0 0.0 4298076 800 ?? R 2:58下午 0:02.19 fdfs_storaged /etc/fdfs/storage.conf start
你的mac名 13256 0.0 0.0 4268192 464 s000 R+ 2:58下午 0:00.00 grep fdfs
root 13140 0.0 0.0 4297384 796 ?? S 2:58下午 0:00.00 fdfs_trackerd /etc/fdfs/tracker.conf start
2.5 client.conf配置文件修改
- 拷贝client配置文件
sudo cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf
- 修改client配置文件
sudo vim /etc/fdfs/client.conf
- 修改其中的内容:
base_path=/您方便的目录/fdfs/tracker
tracker_server=您Mac的IP地址:22122
FastDFS安装(mac)|文件存储方案的更多相关文章
- Nginx|构建简单的文件服务器(mac) 续-FastDFS安装(mac)|文件存储方案
目录 Nginx|构建简单的文件服务器(mac) 1 所需安装包 2 安装fastdfs-nginx-module-master 3 安装Nginx Nginx|构建简单的文件服务器(mac) 续上文 ...
- Hadoop小文件存储方案
原文地址:https://www.cnblogs.com/ballwql/p/8944025.html HDFS总体架构 在介绍文件存储方案之前,我觉得有必要先介绍下关于HDFS存储架构方面的一些知识 ...
- mongoDB 大文件存储方案, JS 支持展示
文件存储 方式分类 传统方式 存储路径 仅存储文件路径, 本质为 字符串 优点: 节省空间 缺点: 不真实存储在数据库, 文件或者数据库发送变动需要修改数据库 存储文件本身 将文件转换成 二进制 存储 ...
- MongoDb gridfs-ngnix文件存储方案
在各类系统应用服务端开发中,我们经常会遇到文件存储的问题. 常见的磁盘文件系统,DBMS传统文件流存储.今天我们看一下基于NoSQL数据库MongoDb的存储方案.笔者环境 以CentOS ...
- MongoDb gridfs-ngnix文件存储方案 - 图片
http://www.cnblogs.com/wintersun/p/4622205.html 在各类系统应用服务端开发中,我们经常会遇到文件存储的问题. 常见的磁盘文件系统,DBMS传统文件流存储. ...
- 别再用CSV了,更高效的Python文件存储方案
CSV无可厚非的是一种良好的通用文件存储方式,几乎任何一款工具或者编程语言都能对其进行读写,但是当文件特别大的时候,CSV这种存储方式就会变得十分缓慢且低效.本文将介绍几种在Python中能够代替CS ...
- FastDFS安装配置
FastDFS FastDFS为互联网量身定制,充分考虑了冗余备份.负载均衡.线性扩容等机制,并注重高可用.高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传.下载等服务 ...
- FastDFS安装部署
博主本人平和谦逊,热爱学习,读者阅读过程中发现错误的地方,请帮忙指出,感激不尽 服务器信息: Storage:192.168.247.20 Traker:192.168.247.21 一.搭建环境准备 ...
- IIs 网站应用程序与虚拟目录的区别及高级应用说明(文件分布式存储方案)
原文 IIs 网站应用程序与虚拟目录的区别及高级应用说明(文件分布式存储方案) 对于IIS网站,大伙用的比较多,就不啰嗦了. 今天和说说大伙比较少使用的"IIS应用程序”和虚拟目录的区别 ...
随机推荐
- PHP函数:php_sapi_name
php_sapi_name() - 返回 web 服务器和 PHP 之间的接口类型. SAPI(Server Application Programming Interface)服务器应用程序编程接 ...
- selenium 执行js代码
获取一个input输入框的值: JavascriptExecutor js =(JavascriptExecutor) driver; merchatName=js.executeScript(&qu ...
- python爬取优美图库海量图片,附加代码,一键爬取
优美高清图片为大家提供高清美女套图赏析,非高清不录入,大家的网速要给力. 今天教大家爬取优美图库网站中高质量的图片!! 简单易上手哦~ 使用工具: Python 3.6 pycharm 相关环境: r ...
- Mac剪切板中的PNG保存到文件swift
SwiftGG 教程大全 中文翻译 命令行工具开发教程 Line Programs on macOS Tutorial swift4,较详细 Swift基础中需要注意的点 NSPasteboard M ...
- react: nextJs koa project basic structure
1.init nextJs project npm init npm install react react-dom next config script in package.json " ...
- TensorFlow keras 迁移学习
数据的读取 import tensorflow as tf from tensorflow.python import keras from tensorflow.python.keras.prepr ...
- Python selenium Chrome正在受到自动软件的控制 disable-infobars无效 的解决方法
问题解决 前两天更新了google浏览器版本,今天运行以前的脚本,发现options一个参数的配置不生效了. 运行了几次都发现该参数没有生效,也检查了自己的代码参数,没有写错,于是就有了这一波“网中寻 ...
- thinkphp5.1生成缩略图很模糊
缩略图一定要从大分辨率往小生成 $image->thumb(400,400,\think\Image::THUMB_CENTER)->save(Env::get('root_path'). ...
- htaccess 一般配置
一.Apache服务器 <IfModule mod_rewrite.c> Options +FollowSymlinks -Multiviews RewriteEngine on Rewr ...
- Linux C语言 检测文件是否存在
头文件 unistd.h ) { // file exists } else { // file doesn't exist } You can also use R_OK, W_OK, and X_ ...