• FastDFS、nginx配置手记


    第一部分   FastDFS介绍

    1.FastDFS是什么

        FastDFS是一款类Google FS的开源分布式文件系统,它用纯C语言实现,支持LinuxFreeBSDAIXUNIX系统。它只能通过 专有API对文件进行存取访问,不支持POSIX接口方式,不能mount使用。

        准确地讲,Google FS以及FastDFSmogileFS、 HDFS、TFS等类Google FS都不是系统级的分布式文件系统,而是应用级的分布式文件存储服务。

        FastDFS的作者是余庆,现在淘宝网Java中间件团队从事Java基础平台研发工作。

    以上文字引用自<<程序员>> 文章 <<分布式文件系统FastDFS架构剖析>>http://www.programmer.com.cn/tag/fastdfs-架构/ 

     

    2.FastDFS的体系结构

    FastDFS、nginx配置手记
     

    3.FastDFS工作过程

    1. Client询问Tracker server上传到的Storage server

    2. Tracker server返回一台可用的Storage server,返回的数据为该Storage serverIP地址和端口;

    3. Client直接和该Storage server建立连接,进行文件上传,Storage server返回新生成的文件ID,文件上传结束。

     

    FastDFS、nginx配置手记
     

    1. Client询问Tracker server可以下载指定文件的Storage server,参数为文件ID(包含组名和文件名);

    2. Tracker server返回一台可用的Storage server

    3. Client直接和该Storage server建立连接,完成文件下载。

    FastDFS、nginx配置手记
     

    FastDFS从V1.20开始,支持通过HTTP协议下载文件。

    1.用户浏览器访问Tracker server内置的Web ServerURL中包含文件ID(包含组名和文件名);

    2.Tracker server将这个HTTP请求redirect到一台可用的Storage serverWeb Server(可以是apachenginx)

    3.用户浏览器直接与Storage serverWeb Serverr建立连接,完成文件下载。

     FastDFS、nginx配置手记

    第二部分   FastDFS+nginx_module配置手记

    1.系统环境

    最小化安装的 CentOS 5.6 x86_64

    tracker server:   192.168.3.220

    storage server:   192.168.3.226

    2.环境准备[所有服务器上操作]

    为了速度,配置使用sohu的源

    cd /etc/yum.repo.d/

    wget http://mirrors.sohu.com/help/CentOS-Base-sohu.repo

    安装EPEL

    rpm -ihv http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm

    安装开发工具和编译nginx所需的开发包

    yum groupinstall "Development Tools"

    yum install libevent-devel.x86_64 pcre-devel.x86_64  zlib-devel.x86_64

    3.tracker上的操作[安装tracker server]

    [root@tracker]wget http://fastdfs.googlecode.com/files/FastDFS_v3.05.tar.gz

    [root@tracker]tar xvzf FastDFS_v3.05.tar.gz

    [root@tracker]cd FastDFS

    [root@tracker]# vi make.sh

        将如下两行前边的"#"删除

        WITH_HTTPD=1

        WITH_LINUX_SERVICE=1

    [root@tracker]./make.sh

    [root@tracker]./make.sh install

    [root@tracker]vi /etc/fdfs/tracker.conf

        修改/etc/fdfs/tracker.conf,主要修改以下两处,如有其他调整,可参考文档自行调整,默认的配置也可以工作。

        # the base path to store data and log files

        base_path=/home/tracker     ====> 放置datalog的目录

        ##include http.conf   ====>   #include http.conf    这里一定要注意!是 #include,不是include!!!

    [root@tracker]mkdir -p /home/tracker

     

    启动tracker服务

    [root@tracker] /etc/init.d/fdfs_trackerd start

     

    确认8080,22122端口已经监听

    [root@tracker]# netstat -nl|grep -E '8080|22122'

    tcp        0      0 0.0.0.0:22122               0.0.0.0:*                   LISTEN     

    tcp        0      0 0.0.0.0:8080                0.0.0.0:*                   LISTEN     

    4.storage上的操作

    [root@storage]wget http://fastdfs.googlecode.com/files/FastDFS_v3.05.tar.gz

    [root@storage]wget http://fastdfs.googlecode.com/files/fastdfs-nginx-module_v1.10.tar.gz

    [root@storage]wget http://nginx.org/download/nginx-1.0.11.tar.gz

    [root@storage]tar xvzf FastDFS_v3.05.tar.gz

    [root@storage]cd FastDFS

    [root@storage]./make.sh

    [root@storage]./make.sh install

    [root@storage]tar xvzf nginx-1.0.11.tar.gz

    [root@storage]tar xvzf fastdfs-nginx-module_v1.10.tar.gz

    [root@storage]cd nginx-1.0.11

    [root@storage]./configure --prefix=/usr/local/nginx --add-module=/root/fastdfs-nginx-module/src

    [root@storage]make

    [root@storage]make install

    [root@storage]vi /etc/fdfs/storage.conf

        修改/etc/fdfs/storage.conf,主要修改以下几处,如有其他调整,可参考文档自行调整,默认的配置也可以工作。

        # the name of the group this storage server belongs to

        group_name=group1 ====> 此台storage server所属的服务器组名

       

        # the base path to store data and log files

        base_path=/home/storage ====> 放置datalog的目录

       

        # store_path#, based 0, if store_path0 not exists, it's value is base_path

        # the paths must be exist

        store_path0=/home/storage ====> 放置文件的目录

        # 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.3.220:22122 ====> tracker serverip和端口,此处可以写多个tracker server,每行一个

        #HTTP settings

        http.disabled=true    ====> 关闭内置的web server

     

        # the port of the web server on this storage server

        http.server_port=80    ====> web server的端口改成80

    [root@storage]cp /root/fastdfs-nginx-module/mod_fastdfs.conf /etc/fdfs/

    [root@storage]# vi /etc/fdfs/mod_fastdfs.conf

     

        # the base path to store log files

        base_path=/home/storage ====> 放置log的目录

     

        # FastDFS 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.3.220:22122 ====> tracker serverip和端口,此处可以写多个tracker server,每行一个

        # the group name of storage server

        group_name=group1 ====> 此台storage server所属的服务器组名

        # if uri including group name

        # default value is false

        url_have_group_name = true ====> URL中包含group名称

        # store_path#, based 0, if store_path0 not exists, it's value is base_path

        # the paths must be exist

        store_path0=/home/storage ====> 放置文件的目录

     

    [root@storage]mkdir -p /home/storage

     

    nginxserver配置段中增加M00location声明

    [root@storage]# vi /usr/local/nginx/conf/nginx.conf

        location /group1/M00 {

                root /home/storage/data;

                ngx_fastdfs_module;

        }

    创建M00目录的软连接

    [root@storage]ln -s /home/storage/data  /home/storage/data/M00

    启动storage服务

    [root@storage] /etc/init.d/fdfs_storaged start

     

    启动nginx

    [root@tracker] /usr/local/nginx/sbin/nginx

     

    确认8080,22122端口已经监听

    [root@storage]# netstat -nl|grep -E '80|23000'

    tcp        0      0 0.0.0.0:23000               0.0.0.0:*                   LISTEN     

    tcp        0      0 0.0.0.0:80                0.0.0.0:*                   LISTEN     

    5.tracker上的操作[作为client测试]

    修改/etc/fdfs/client.conf文件,主要修改以下几处,如有其他调整,可参考文档自行调整,默认的配置也可以工作。

        # the base path to store log files

        base_path=/tmp

        # 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.3.220:22122

    创建一个用于测试的文件demofile.txt

    [root@tracker]vi demofile.txt
        内容就一行字:  dddddddddd

    使用自带的fdfs_test上传文件测试。

    [root@tracker]# /usr/local/bin/fdfs_test /etc/fdfs/client.conf upload demofile.txt

    This is FastDFS client test program v3.05

    Copyright (C) 2008, Happy Fish / YuQing

    FastDFS may be copied only under the terms of the GNU General

    Public License V3, which may be found in the FastDFS source kit.

    Please visit the FastDFS Home Page http://www.csource.org/

    for more detail.

    [2012-01-20 14:36:04] INFO - base_path=/tmp, connect_timeout=30, network_timeout=60, tracker_server_count=1, anti_steal_token=0, anti_steal_secret_key length=0

    tracker_query_storage_store_list_without_group:

            server 1. group_name=group1, ip_addr=192.168.3.226, port=23000

    group_name=group1, ip_addr=192.168.3.226, port=23000

    storage_upload_by_filename

    group_name=group1, remote_filename=M00/00/00/wKgD4k8ZC1SNK-NYAAAAC3lx3Rk484.txt

    source ip address: 192.168.3.226

    file timestamp=2012-01-20 14:36:04

    file size=11

    file crc32=2037505305

    file url: http://192.168.3.220:8080/group1/M00/00/00/wKgD4k8ZC1SNK-NYAAAAC3lx3Rk484.txt

    storage_upload_slave_by_filename

    group_name=group1, remote_filename=M00/00/00/wKgD4k8ZC1SNK-NYAAAAC3lx3Rk484_big.txt

    source ip address: 192.168.3.226

    file timestamp=2012-01-20 14:36:04

    file size=11

    file crc32=2037505305

    file url: http://192.168.3.220:8080/group1/M00/00/00/wKgD4k8ZC1SNK-NYAAAAC3lx3Rk484_big.txt

    6.使用浏览器打开上传的文件

     

    我们在浏览器中输入http://192.168.3.220:8080/group1/M00/00/00/wKgD4k8ZC1SNK-NYAAAAC3lx3Rk484.txt

    FastDFS、nginx配置手记

    可以看到,访问的地址已经被redirect到了storage serverIP(192.168.3.226)了。

  • 相关阅读:
    BZOJ1803: Spoj1487 Query on a tree III
    BZOJ2741: 【FOTILE模拟赛】L
    BZOJ4212: 神牛的养成计划
    WebDriver 上传下载文件---(虫师《selenium3自动化测试实战--基于Python语言笔记22》)
    WebDriver 下拉框处理---(虫师《selenium3自动化测试实战--基于Python语言笔记21》)
    WebDriver 警告框处理---(虫师《selenium3自动化测试实战--基于Python语言笔记20》)
    WebDriver 多表单和多窗口切换---(虫师《selenium3自动化测试实战--基于Python语言笔记19》)
    WebDriver 8种方法定位一组元素---(虫师《selenium3自动化测试实战--基于Python语言笔记18》)
    WebDriver 中常用方法5---设置元素等待(虫师《selenium3自动化测试实战--基于Python语言笔记17》)
    WebDriver 中常用方法4---获取验证信息(虫师《selenium3自动化测试实战--基于Python语言笔记16》)
  • 原文地址:https://www.cnblogs.com/fx2008/p/4108458.html
Copyright © 2020-2023  润新知