1. FastDFS安装(ubuntu)

需要准备:

nginx、fastdfs、libfastcommon、gcc、git

apt-get update
apt-get -y install make gcc git

1.1 下载安装libfastcommon(项目通用函数库)

1)git克隆

git clone https://github.com/happyfish100/libfastcommon.git

2)编译安装

cd libfastcommon/
./make.sh
./make.sh install

1.2 安装FastDFS

1)编译安装FastDFS

git clone https://github.com/happyfish100/fastdfs.git
cd fastdfs
./make.sh
./make.sh install

服务脚本在:

/etc/init.d/fdfs_storaged
/etc/init.d/fdfs_trackerd

1.2.1 配置tracker

  1. 修改Tracker配置文件
cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf
vim /etc/fdfs/tracker.conf

做以下配置

bind_addr=192.168.56.10 # 所在服务器IP地址
base_path=/data/fastdfs/tracker
  1. 创建对应的数据存储目录
mkdir -p  /data/fastdfs/tracker
  1. 启动Tracker
mv /etc/init.d/fdfs_trackerd /etc/init.d/tracker
service tracker start
  1. 查看tracker是否启动
ps -ef |grep fdfs

1.2.2 配置storage

  1. 修改Storage配置文件
 cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf
vim /etc/fdfs/storage.conf

修改以下配置

group_name=group1
bind_addr=192.168.56.10 # 所在服务器IP地址
base_path=/data/fastdfs/storage
store_path0=/data/fastdfs/storage
tracker_server=192.168.56.10:22122 # tracker的ip:port
http.server_port=8888 # http监听端口
  1. 创建对应的数据存储目录
mkdir -p  /data/fastdfs/storage
  1. 启动storage
mv /etc/init.d/fdfs_storaged /etc/init.d/storage
service storage start
  1. 查看是否启动
ps -ef |grep storage

1.3 配置Client

 cp  /etc/fdfs/client.conf.sample  /etc/fdfs/client.conf
vim /etc/fdfs/client.conf

做下面修改

base_path=/data/fastdfs/client
tracker_server=192.168.56.10:22122

创建client目录

mkdir -p /data/fastdfs/client

测试上传文件

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


如上图上传成功后,返回group1/M00/00/00/wKg4ClsiIoOAHAWxAAAFtZDs6iQ79.conf这样的一串,这个是以后访问这个文件的凭借。其中/00/00/上传后文件是storage存储目录下的目录,上传的文件就在这个目录下边。

在storage配置的base_path下,是这样的目录:

cd 00/00
ls

可以看到刚刚上传的文件

1.4整合nginx

1.4.1 下载fastdfs-nginx-module模块

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

14.2 安装nginx

1.下载nginx

nginx版本为:nginx-1.14.0
http://nginx.org/en/download.html

2.编译安装nginx

tar -xzvf nginx-1.14.0.tar.gz
apt-get -y install libpcre3 libpcre3-dev openssl libssl-dev
cd nginx-1.14.0/ ./configure \
--prefix=/usr \
--sbin-path=/usr/sbin/nginx \
--conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--user=root \
--group=root \
--with-http_ssl_module \
--with-http_flv_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-pcre \
--add-module=/root/fastdfs-nginx-module/src && make && sudo make install

3.复制fastdfs-ngin-module中的配置文件,到/etc/fdfs目录中

cp /root/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/

4.修改mod_fastdfs.conf文件

vim /etc/fdfs/mod_fastdfs.conf

修改以下配置

group_name=group1
connect_timeout=10
tracker_server=192.168.56.10:22122
url_have_group_name = true
store_path0=/data/fastdfs/storage
log_filename=mod_fastdfs.log

5.复制FastDFS里的2个文件,到/etc/fdfs目录中

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

6.修改Nginx配置文件

vim /etc/nginx/nginx.conf

做以下配置

server {
listen 8888; # 与storage.conf文件中的http.server_port一致
server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location ~/group([0-9])/M00 {
root /data/fastdfs/storage/data;
ngx_fastdfs_module;
} #error_page 404 /404.html; # redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
...
}

7.启动Nginx

nginx

8.测试

上传一张图片

root@ubuntu01:~# fdfs_upload_file /etc/fdfs/client.conf ./2.png
group1/M00/00/00/wKg4ClsiKj6AOv3sAAoHBffgMgw082.png

访问地址为就是nginx所在服务器地址+storage配置的http端口+上传文件返回的一串字符串,如:
http://192.168.56.10:8888/group1/M00/00/00/wKg4ClsiKj6AOv3sAAoHBffgMgw082.png

2. 集群搭建

在上边讲述了如何搭建了只有一个tracker server、storage server,接下来说明如何配置集群

2.1 tracker集群

将tracker部署为多节点集群模式:

1.安装tracker
按照1.1~1.2.1步骤执行

2.修改client、storage配置

# 修改client端配置,加入tracker
vim /etc/fdfs/client.conf
tracker_server=tracker1_ip:22122 # 有几个tracker就添加几个这个配置
tracker_server=tracker2_ip:22122
# 修改nginx整合模块配置
vim /etc/fdfs/mod_fastdfs.conf
tracker_server=tracker1_ip:22122 # 有几个tracker就添加几个这个配置
tracker_server=tracker2_ip:22122 # 修改storage配置
vim /etc/fdfs/storage.conf
tracker_server=tracker2_ip:22122 # 有几个tracker就添加几个这个配置
tracker_server=tracker2_ip:22122

重启storage,不建议用restart

service storage stop
service storage start

执行命令/usr/bin/fdfs_monitor /etc/fdfs/storage.conf查看是否成功,如下图现在tracker server数量为2两个

2.2 storage集群

2.2.1 多volume/group

1.搭建多group

执行1.1~1.2,此时只要group_name配置不同即为不同的组,如下是两个分组的配置。如果想在一个group下配置多个storage的话,指定相同的group_name即可。

group1的storage.conf

group_name=group1
bind_addr=192.168.56.10
base_path=/data/fastdfs/storage
store_path0=/data/fastdfs/storage
tracker_server=192.168.56.10:22122
tracker_server=192.168.56.11:22122
http.server_port=8888

group2的storage.conf

group_name=group2
bind_addr=bind_addr=192.168.56.11
base_path=/data/fastdfs/storage
store_path0=/data/fastdfs/storage
tracker_server=192.168.56.10:22122
tracker_server=192.168.56.11:22122
http.server_port=8888

在任意的服务器上执行命令执行命令/usr/bin/fdfs_monitor /etc/fdfs/storage.conf,如下如现在tracker数量为2个,group数量为2个。

此时,默认fastdfs会以load balance(负载均衡)的方式,即挑选资源较为富足的group进行文件上传。

root@ubuntu01:~# fdfs_upload_file /etc/fdfs/client.conf ./2.png
group2/M00/00/00/wKg4C1soeX-AJvj9AAoHBffgMgw417.png
root@ubuntu01:~# fdfs_upload_file /etc/fdfs/client.conf ./2.png
group2/M00/00/00/wKg4C1soeZWADUQ8AAoHBffgMgw073.png
root@ubuntu01:~# fdfs_upload_file /etc/fdfs/client.conf ./2.png
group2/M00/00/00/wKg4C1soeZaABSmhAAoHBffgMgw325.png
root@ubuntu01:~# fdfs_upload_file /etc/fdfs/client.conf ./2.png
group2/M00/00/00/wKg4C1soeZeADGZmAAoHBffgMgw797.png
root@ubuntu01:~# fdfs_upload_file /etc/fdfs/client.conf ./2.png
group2/M00/00/00/wKg4C1soeZiAO3rNAAoHBffgMgw093.png
root@ubuntu01:~# fdfs_upload_file /etc/fdfs/client.conf ./2.png
group2/M00/00/00/wKg4C1soeZiAVjmdAAoHBffgMgw961.png
root@ubuntu01:~# fdfs_upload_file /etc/fdfs/client.conf ./2.png
group2/M00/00/00/wKg4C1soeZmAExMRAAoHBffgMgw515.png

因为group2的资源比group1要充足,所以都文件上传到了group2,fastdfs提供了文件上传负载策略一共有三种

    1. round robin:
      以轮询的方式依次的向各个group存储文件,对应配置值0
    2. specify group:
      指定某一group存储文件,对应配置值1,此时需要配合配置store_group=group_name来指定特定的组
    3. load balance:
      选择资源充足的组来存储文件,为FastDFS默认配置

FastFDS安装及简单使用的更多相关文章

  1. (转)python requests的安装与简单运用

    requests是python的一个HTTP客户端库,跟urllib,urllib2类似,那为什么要用requests而不用urllib2呢?官方文档中是这样说明的: python的标准库urllib ...

  2. MongoDB在Windows下安装、Shell客户端的使用、Bson扩充的数据类型、MongoVUE可视化工具安装和简单使用、Robomongo可视化工具(2)

    一.Windows 下载安装 1.去http://www.mongodb.org/downloads下载,mongodb默认安装在C:\Program Files\MongoDB目录下,到F:\Off ...

  3. python requests的安装与简单运用

    requests是python的一个HTTP客户端库,跟urllib,urllib2类似,那为什么要用requests而不用urllib2呢?官方文档中是这样说明的: python的标准库urllib ...

  4. memcache的windows下的安装和简单使用

    原文:memcache的windows下的安装和简单使用 memcache是为了解决网站访问量大,数据库压力倍增的解决方案之一,由于其简单实用,很多站点现在都在使用memcache,但是memcach ...

  5. 【RabbitMQ】RabbitMQ在Windows的安装和简单的使用

    版本说明 使用当前版本:3.5.4 安装与启动 在官网上下载其Server二进制安装包,在Windows上的安装时简单的,与一般软件没什么区别. 安装前会提示你,还需要安装Erlang,并打开下载页面 ...

  6. Thrift的安装和简单演示样例

    本文仅仅是简单的解说Thrift开源框架的安装和简单使用演示样例.对于具体的解说,后面在进行阐述. Thrift简述                                           ...

  7. libmemcached安装及简单例子

    libmemcached安装及简单例子 1.下载安装libmemcached  $ wget http://launchpad.net/libmemcached/1.0/0.44/+download/ ...

  8. [hadoop系列]Pig的安装和简单演示样例

    inkfish原创,请勿商业性质转载,转载请注明来源(http://blog.csdn.net/inkfish ).(来源:http://blog.csdn.net/inkfish) Pig是Yaho ...

  9. Redis 安装与简单示例

    Redis 安装与简单示例 一.Redis的安装 Redis下载地址如下:https://github.com/dmajkic/redis/downloads 解压后根据自己机器的实际情况选择32位或 ...

随机推荐

  1. 服务容错和Hystrix

    一.雪崩效应 在微服务架构中,通常有多个服务层调用,如果某个服务不可用,造成调用的服务也不可用,造成整个系统不可用的情况,叫做雪崩效应 二.Hystrix 放雪崩利器Hystrix,基于Netflix ...

  2. centos7.4 64位安装 google-chrome 与 chromedriver 运行 Python selenium 项目

    centos7.4 实例 利用 yum 命令安装 google-chrome 超级简单(安装最新版): yum install https://dl.google.com/linux/direct/g ...

  3. Python判断语句

    什么是判断语句 如果 今天是周六或者周日: 约妹子 如果 今天是情人节: 买玫瑰 如果 今天发工资: 先还信用卡的钱 如果 有剩余: 又可以happy了,O(∩_∩)O哈哈~ 否则: 啊啊啊啊,等30 ...

  4. marathon 测试

    marathon 初步使用 关闭selinux setenforce 0 Marathon之应用篇 先来了解一下  Marathon 是怎么布署decker的 json shell.json { } ...

  5. 2.STM32启动文件

    一.概念声明 中断向量:由硬件产生的中断标识码,一般用于存放中断服务程序的跳转指令.根据硬件产生的中断号查找中断向量表来确定对应的中断向量.CM3内核有15个异常  和240个中断源.    程序的内 ...

  6. 基于MNIST数据集使用TensorFlow训练一个没有隐含层的浅层神经网络

    基础 在参考①中我们详细介绍了没有隐含层的神经网络结构,该神经网络只有输入层和输出层,并且输入层和输出层是通过全连接方式进行连接的.具体结构如下: 我们用此网络结构基于MNIST数据集(参考②)进行训 ...

  7. Redis为什么可以支持那么大的并发访问量?为什么redis没有单点并发瓶颈?

    一是redis使用内存 而是redis使用多路复用的IO模型: 现代的UNIX操作系统提供了select/poll/kqueue/epoll这样的系统调用,这些系统调用的功能是:你告知我一批套接字,当 ...

  8. aspose.cells 插入图片

    ,,"d:\\1.jpg"); Aspose.Cells.Drawing.Picture pic = worksheet.Pictures[iIndex]; pic.Placeme ...

  9. ffmpeg 编译

    下载FFmpeg git clone https://git.ffmpeg.org/ffmpeg.git 配置编译FFmpeg ./configure --prefix=host --enable-s ...

  10. C常量与控制语句

    在C语言中定义常量的两种方式 在C语言编程中定义常量有两种方法. const关键字 #define预处理器 1. const关键字 const关键字用于定义C语言编程中的常量. const float ...