FastDFS是一款开源的轻量级分布式文件系统,纯C实现,支持Linux、FreeBSD等Unix系统。

类google FS,不是通用的文件系统,只能通过专有API访问。

FastDFS服务端有两种角色:跟踪器(tracker)和存储节点(storage)。

tracker主要做调度工作,在访问上起负载均衡的作用,在内存中记录集群中group和storage的状态信息,是连接client和storage的枢纽。

storage存储服务器,文件和文件属性都保存到存储服务器上。

一、安装fastdfs

下载libfastcommon包

https://github.com/happyfish100/libfastcommon/releases

下载fastdfs源码包

https://github.com/happyfish100/fastdfs/releases

安装libfastcommon

> tar xf libfastcommon-1.0.7.tar.gz
> cd libfastcommon-1.0.7
> ./make.sh
> ./make.sh install

安装fastdfs

> tar xf fastdfs-5.09.tar.gz
> cd fastdfs-5.09
> ./make.sh
> ./make.sh install

如果出现ioevent.h:82:2: #error port me这样的错误,请下载最新版的libfastcommon并安装。

二、环境说明

创建两台虚拟主机,IP分别为192.168.1.222和192.168.1.233,分别安装fastdfs。

三、fastdfs的配置文件

配置文件默认在/etc/fdfs下
默认脚本在/etc/init.d下

创建两个目录,用来存放数据

> mkdir -p /data/fdfs_tracker
> mkdir -p /data/fdfs_storage

复制配置文件

> cd /etc/fdfs
> cp storage.conf.sample storage.conf
> cp tracker.conf.sample tracker.conf

跟踪器的配置文件tracker.conf

#绑定IP
bind_addr=
#端口
port=22122
#连接超时时间
connect_timeout=30
#日志数据路径
base_path=/data/fdfs_tracker
#上传文件时选择group的方法
#0:轮询,1:指定组,2:选择剩余空间最大
store_lookup=2
#如果上面的配置是1,那么这里必须指定组名
store_group=group2
#上传文件时选择server的方法
#0:轮询,1:按IP地址排序,2:通过权重排序
store_server=0
#storage上预留空间
reserved_storage_space = 10%

存储节点的配置文件storage.conf

#storage server所属组名
group_name=group1
#绑定IP
bind_addr=
#storage server的端口
port=23000
#连接超时时间
connect_timeout=30
#日志数据路径
base_path=/data/fdfs_storage/base
#storage path的个数
store_path_count=2
#根据store_path_count的值,就要有storage0到storage(N-1)个
store_path0=/data/fdfs_storage/storage0
store_path1=/data/fdfs_storage/storage1
#跟踪服务器
tracker_server=192.168.1.222:22122
tracker_server=192.168.1.233:22122

创建目录,不然会出错

> mkdir -p /data/fdfs_storage/base
> mkdir -p /data/fdfs_storage/storage0
> mkdir -p /data/fdfs_storage/storage1

启动服务

> /etc/init.d/fdfs_trackerd start
> /etc/init.d/fdfs_storaged start

查看服务是否启动

> ps -ef|grep fdfs
> netstat -nltp

  

四、测试fastdfs

配置client文件

> cd /etc/fdfs
> cp client.conf.sample client.conf
> vi client.conf
#存放日志目录
base_path=/data/client
#跟踪服务器
tracker_server=192.168.1.222:22122
tracker_server=192.168.1.233:22122

创建client目录

> mkdir -p /data/client

通过fdfs_upload_file来测试(如果发生错误,请查看防火墙)

> echo "12345678" >> /data/1.txt
> fdfs_upload_file /etc/fdfs/client.conf /data/1.txt

通过fdfs_download_file下载我们刚上传的文件

> fdfs_download_file /etc/fdfs/client.conf group1/M00/00/00/wKgB3li3a2mAejYPAAAADok0NhY177.txt

查看文件信息

> fdfs_file_info /etc/fdfs/client.conf group1/M00/00/00/wKgB3li3a2mAejYPAAAADok0NhY177.txt

追加文件

> echo "hello" >> /data/2.txt
> fdfs_upload_appender /etc/fdfs/client.conf /data/1.txt
> fdfs_append_file /etc/fdfs/client.conf group1/M00/00/00/wKgB3li3bxCEAcqhAAAAAIk0NhY869.txt /data/2.txt

删除文件

> fdfs_delete_file /etc/fdfs/client.conf group1/M00/00/00/wKgB3li3a2mAejYPAAAADok0NhY177.txt

查看集群

> fdfs_monitor /etc/fdfs/client.conf

  

五、fastdfs的nginx模块

下载pcre和nginx源码包

https://ftp.pcre.org/pub/pcre/

如:pcre-8.40.tar.gz

http://nginx.org/en/download.html

如:nginx-1.10.3.tar.gz

https://github.com/happyfish100/fastdfs-nginx-module

如:fastdfs-nginx-module-master.zip

创建用户

> useradd -s /sbin/nologin -M nginx

安装pcre

> tar xf pcre-8.40.tar.gz
> cd pcre-8.40
> ./configure --prefix=/data/pcre
> make && make install

安装nginx

> yum install zlib-devel openssl-devel
> unzip fastdfs-nginx-module-master.zip
> tar xf nginx-1.10.3.tar.gz
> cd nginx-1.10.3
> ./configure --prefix=/data/nginx \
> --with-pcre=/data/pcre-8.40 \
> --user=nginx \
> --group=nginx \
> --with-http_ssl_module \
> --with-http_realip_module \
> --with-http_stub_status_module \
> --add-module=/data/fastdfs-nginx-module-master/src
> make && make install

拷贝配置文件

> cd /data/fastdfs-nginx-module-master/src
> cp mod_fastdfs.conf /etc/fdfs/
> cd /data/fastdfs-5.09/conf
> cp anti-steal.jpg http.conf mime.types /etc/fdfs/

修改nginx.conf

> vi /data/nginx/conf/nginx.conf
server {
listen 80;
server_name localhost; location ~ /group[0-9]/M00 {
ngx_fastdfs_module;
}
}

修改mod_fastdfs.conf

> vi /etc/fdfs/mod_fastdfs.conf
#日志目录
base_path=/tmp
#跟踪服务器
tracker_server=192.168.1.222:22122
tracker_server=192.168.1.233:22122
#url中是否有group名称
url_have_group_name = true
#storage path的个数
store_path_count=2
#根据store_path_count的值,就要有storage0到storage(N-1)个
store_path0=/data/fdfs_storage/storage0
store_path1=/data/fdfs_storage/storage1

启动nginx

> /data/nginx/sbin/nginx

上传一个文件

> echo "12345678" >> /data/1.txt
> fdfs_upload_file /etc/fdfs/client.conf /data/1.txt

然后通过nginx访问该文件

http://192.168.1.222/group1/M00/00/00/wKgB6Vi3fGiAMsO2AAAAB2BGSN8003.txt

centos7下的FastDFS5.09的安装与使用的更多相关文章

  1. Centos7下PHP的卸载与安装nginx

    Centos7下PHP的卸载与安装nginx CentOS上PHP完全卸载,想把PHP卸载干净,直接用yum的remove命令是不行的,需要查看有多少rpm包,然后按照依赖顺序逐一卸载. 1.首先查看 ...

  2. CentOS7下Mysql 5.6.30安装与配置

    环境:centos 7 x64 先下载mysql安装包 打开 http://dev.mysql.com/downloads/mysql/  选择 linux - Generic 再选择 下载完毕后,得 ...

  3. CentOS7下搭建Nginx+PHP7的安装配置

    一.安装编译工具及库文件: yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel 环境要求 nginx是C ...

  4. Centos7下修复 视频播放器(先 安装VLC视频播放器)

    用最新的CentOS7发现没有视频播放器,于是在http://pkgs.org/上查找,发现了nux dextop仓库上有, 于是到他的官网上http://li.nux.ro/repos.html查了 ...

  5. Centos7 下nginx nginx-1.13.4 安装

    环境:CentOS Linux release 7.3.1611 (Core)  Linux localhost.localdomain 3.10.0-514.26.2.el7.x86_64 #1 S ...

  6. centos7下比特币源码编译安装

    今天我们介绍比特币的源码安装过程,是利用编译安装的 首先安装依赖 1 yum install -y boost-devel qt-devel protobuf-devel qrencode-devel ...

  7. CentOS7下MySQL8的二进制基本安装配置

    前言 基于本地Centos7.6虚拟机Mysql8的配置(亲测有效) 一.安装前的准备 1.到官网下载mysql-8.0.16-linux-glibc2.12-x86_64.tar.xz 2.通过Xs ...

  8. centos7下vim8.1的编译安装教程

    之前安装YouCompleteMe的时候遇到vim版本不兼容的问题,看网上说是需要将vim版本提升到8.0及以上,然后就开始安装最新版本的vim,安装过程中的遇到了不少问题主要集中在配置方面和缺少插件 ...

  9. Centos7下搭建LAMP环境,安装wordpress(不会生产博客,只是一名博客搬运工)(菜鸟)

    1.搭建MySQL数据库 安装MariaDB yum install mariadb-server -y 启动MySQL服务 emctl start mariadb #启动服务 emtcl enabl ...

随机推荐

  1. Centos 下安装VIM编辑器

    我们在安装完Centos后,它默认的是安装了VI编辑器,VIM是没有安装的,所以我们在使用vim test.txt时会提示: vim command not found ... 这就是说明我们的Lin ...

  2. python模块os

    一.os模块概述 Python os模块包含普遍的操作系统功能.如果你希望你的程序能够与平台无关的话,这个模块是尤为重要的.(一语中的) 二.常用方法 1.os.name 输出字符串指示正在使用的平台 ...

  3. 30.深入理解abstract class和interface

  4. centos 用户指定目录访问

    在linux系统中,比如有这样一个场景,abc/a.abc/b.abc/c三个目录,用户user1,user2分别隶属于A组和B组. 控制:用户user1只能访问abc/a和abc/b目录,而用户us ...

  5. asp.net 服务器 上传文件到 FTP服务器

    private string ftpServerIP = "服务器ip";//服务器ip private string ftpUserID = "ftp的用户名" ...

  6. Canvas中 drawImage绘制图片不显示

    在学习 html5中的 Canvas.drawImage时写了如下代码: <!doctype html> <html> <head><title>研究& ...

  7. C# WInForm中 窗体的this.width和this.height的属性值不能大于显示器的最大分辨率

    最近在做一个小项目的时候,发现在 1680x1050 分辨率显示器上写的代码,将窗体的宽度和高度 设置成了 1600×900,在高于1600×900的分辨率上缩放显示很正常, 而后转移到 分辨率低于 ...

  8. “2017面向对象程序设计(Java)第就九周学习总结”存在问题的反馈

    对于“2017面向对象程序设计(Java)第就九周学习总结”存在问题的反馈 1.博文未写者:高树平 高俊梅 冯小丽 缪召召 王瑞强 宗鹏新 李向龙 马润韬 米奇辉 卯保云——不及时提交博客的同学人数出 ...

  9. numpy 矩阵变换 reshape ravel flatten

    1. 两者的区别在于返回拷贝(copy)还是返回视图(view),numpy.flatten()返回一份拷贝,对拷贝所做的修改不会影响(reflects)原始矩阵,而numpy.ravel()返回的是 ...

  10. MyBatis数据库连接的基本使用-补充

    补充1  MyBatis使用过程中,返回值类型可能是Map,不一定是实体类 返回查询结果也可以是一个Map,不一定是实体类 (1)mybatis会先将查询结果返回为一个map,字段名作为key,字段值 ...