上一篇 文章 讲了FastDFS分布式文件系统安装和部署,这篇文章主要描述如何安装、使用 fastdfs-nginx-module 和 nginx 实现通过 Http 方式访问 FastDFS 分布式文件系统中的文件。

FastDFS 通过 Tracker 服务器将文件放在 Storage 服务器存储。但是同组之间的服务器需要复制文件有延迟的问题,假设Tracker服务器将文件上传到了192.168.1.80,并将文件ID返回给客户端。这时,后台会将这个文件复制到192.168.1.30,如果复制没有完成,客户端就用这个文件ID在192.168.1.30上获取文件,肯定会出现错误。 fastdfs-nginx-module 可以重定向连接到源服务器取文件,避免客户端由于复制延迟的问题,出现错误。(此说法来源于http://blog.itpub.net/29254281/viewspace-1288761/,不知道是否正确)

但是,从 FastDFS v5.0.1 开始,tracker server和storage server已经默认已经不支持 Http 访问。问过很多人,都是通过搭建 nginx 或 Apache 实现的 Http 访问。解决方法是,在每个存储服务(storage)都应该安装 nginx 和 fastdfs_nginx_module 模块,然后用单独一台 nginx 做反向代理。

安装方法

  1. 首先安装FastDFS存储服务器和客户端库

  2. 下载FastDFS-nginx-module源码包并解压,例如:

    tar xzf fastdfs_nginx_module_v1.16.tar.gz
  3. 安装nginx的服务器

    • FastDFS nginx模块在nginx 0.8.53通测试通过,余庆的nginx安装在“/usr/local/nginx”。
    • 进入nginx的源代码目录,编译和安装模块,如:
    cd nginx-1.5.12
    ./configure --add-module=/home/yuqing/fastdfs-nginx-module/src
    make
    make install
    • 如果提示下面错误,可以安装pcre模块:
    ./configure: error: the HTTP rewrite module requires the PCRE library.
    You can either disable the module by using --without-http_rewrite_module
    option, or install the PCRE library into the system, or build the PCRE library
    statically from the source with nginx by using --with-pcre=<path> option.
    • 安装命令为
    sudo apt-get install pcre*
    • 若安装时找不到上述依赖模块,使用 --with-openssl=<openssl_dir>--with-pcre=<pcre_dir>--with-zlib=<zlib_dir> 指定依赖的模块目录。如已安装过,此处的路径为安装目录;若未安装,则此路径为编译安装包路径,nginx将执行模块的默认编译安装。
    • 也可以使用类似下面的命令跳过指定模块的安装:
    ./configure --without-http_gzip_module --add-module=/home/cjx/libs/fastdfs-nginx-module-master/src
    make
    make install
    • 注意: 编译之前,可以在config 文件中更改FDFS_OUTPUT_CHUNK_SIZE和FDFS_MOD_CONF_FILENAME宏:
    CFLAGS="$CFLAGS -D_FILE_OFFSET_BITS=64 -DFDFS_OUTPUT_CHUNK_SIZE='256*1024' -DFDFS_MOD_CONF_FILENAME='\"/etc/fdfs/mod_fastdfs.conf\"'"
  4. 更改config文件“mod_fastdfs.conf”,将配置文件拷贝到“/etc/fdfs”

    sudo cp /home/cjx/libs/fastdfs-nginx-module-master/src/mod_fastdfs.conf /etc/fdfs/
    • 修改该配置文件:
    group_name=group1
    tracker_server=192.168.2.163:22122
    store_path0=/data/fastdfs/storage
    base_path=/data/fastdfs/storage
  5. 配置nginx的config文件,如nginx.conf,加上下面几行:

    location /M00 {
                root /data/fastdfs/storage;
                ngx_fastdfs_module;
            }
    • 如果在fastdfs-nginx模块的配置文件中指定了启动组名访问则需要改成下面的:
    location /group1/M00 {
                root /data/fastdfs/storage;
                ngx_fastdfs_module;
            }
  6. 创建一个符号链接 ${fastdfs_base_path}/data/M00 到 ${fastdfs_base_path}/data,在“/data/fastdfs/storage”目录下创建软连接,将其链接到实际存放数据的目录:

    ln -s /data/fastdfs/storage/data /data/fastdfs/storage/data/M00

关闭和启动nginx服务器

关闭和启动nginx可以使用下列命令:

/usr/local/nginx/sbin/nginx -s stop
/usr/local/nginx/sbin/nginx

参考文章:http://www.cnblogs.com/skynet/p/4146083.html

标签: 安装, FastDFS, FastDFS分布式文件系统, 配置, 部署, http, nginx

添加新评论