安装包如下:
fastdfs-nginx-module_v1.16.tar.gz
FastDFS_v5.05.tar.gz
libfastcommon-master.zip
nginx-1.8.0.tar.gz

一、安装libfastcommon

FastDFS 5.05版本不再依赖libevent,而依赖于libfastcommon,因此需要先安装libfastcommon。
软件包下载地址:https://github.com/happyfish100/libfastcommon

# unzip libfastcommon-master.zip
# cd libfastcommon-master
# ./make.sh
# ./make.sh install

libfastcommon.so 默认安装到了/usr/lib64/libfastcommon.so,而FastDFS主程序设置的lib目录是/usr/local/lib,因此需要设置软链接(如果已存在,可以忽略)。

# ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so
# ln -s /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so

二、安装FastDFS

软件包下载地址:
1、https://sourceforge.net/projects/fastdfs/files/
2、https://code.google.com/archive/p/fastdfs/downloads
3、https://github.com/happyfish100/fastdfs

# tar zxf FastDFS_v5..tar.gz
# cd FastDFS
# ./make.sh
# ./make.sh install

安装完成后可以看到/etc/fdfs目录下生成了3个文件:

三、配置tracker节点

# mkdir /data/fastdfs  #创建tracker的数据文件和日志存储目录
# cd /etc/fdfs
# mv tracker.conf.sample tracker.conf
# vim tracker.conf #修改的文件内容如下(基础配置,不考虑性能调优情况下):
base_path=/data/fastdfs #设置 tracker 的数据文件和日志目录(需预先创建)
http.server_port= #设置http端口号,默认为8080
# ln -s /usr/bin/fdfs_trackerd /usr/local/bin
# ln -s /usr/bin/stop.sh /usr/local/bin
# ln -s /usr/bin/restart.sh /usr/local/bin
# service fdfs_trackerd start #启动tracker节点

启动成功后,在/data/fastdfs目录下生成了data和logs两个目录。
查看日志如下:

检查对应端口是否监听:

四、配置storage节点

# mkdir /data/fastdfs-storage  #创建
# cd /etc/fdfs/
# mv storage.conf.sample storage.conf
# vim storage.conf#修改的文件内容如下(基础配置,不考虑性能调优情况下):
group_name=group1 #组名,可根据实际情况修改
base_path=/data/fastdfs-storage #设置storage数据文件和日志目录,需预先创建
store_path_count= #存储路径个数,需要和 store_path 个数匹配、
store_path0=/data/fastdfs-storage #存储路径
tracker_server=192.168.116.145: # #tracker 服务器的 IP地址和端口号,如果是单机搭建,IP不要写127.0.0.,否则启动不成功。
http.server_port= #设置 http 端口号 # ln -s /usr/bin/fdfs_storaged /usr/local/bin
# service fdfs_storaged start #启动storage,启动会根据配置文件的设置自动创建多级存储目录

查看日志,内容如下,表示启动正常:

# cat /data/fastdfs-storage/logs/storaged.log
[-- ::] INFO - FastDFS v5., base_path=/data/fastdfs-storage, store_path_count=, subdir_count_per_path=, group_name=group1, run_by_group=, run_by_user=, connect_timeout=30s, network_timeout=60s, port=, bind_addr=, client_bind=, max_connections=, accept_threads=, work_threads=, disk_rw_separated=, disk_reader_threads=, disk_writer_threads=, buff_size=256KB, heart_beat_interval=30s, stat_report_interval=60s, tracker_server_count=, sync_wait_msec=50ms, sync_interval=0ms, sync_start_time=:, sync_end_time=:, write_mark_file_freq=, allow_ip_count=-, file_distribute_path_mode=, file_distribute_rotate_count=, fsync_after_written_bytes=, sync_log_buff_interval=10s, sync_binlog_buff_interval=10s, sync_stat_file_interval=300s, thread_stack_size= KB, upload_priority=, if_alias_prefix=, check_file_duplicate=, file_signature_method=hash, FDHT group count=, FDHTserver count=, FDHT key_namespace=, FDHT keep_alive=, HTTP server port=, domain name=, use_access_log=, rotate_access_log=, access_log_rotate_time=:, rotate_error_log=, error_log_rotate_time=:, rotate_access_log_size=, rotate_error_log_size=, log_file_keep_days=, file_sync_skip_invalid_record=, use_connection_pool=, g_connection_pool_max_idle_time=3600s
data path: /data/fastdfs-storage/data, mkdir sub dir...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
。。。。。
data path: /data/fastdfs-storage/data, mkdir sub dir done. 确认启动成功后,可以运行 fdfs_monitor 查看 storage服务器是否已经登记到 tracker服务器。
# /usr/bin/fdfs_monitor /etc/fdfs/storage.conf
[-- ::] DEBUG - base_path=/data/fastdfs-storage, connect_timeout=, network_timeout=, tracker_server_count=, anti_steal_token=, anti_steal_secret_key length=, use_connection_pool=, g_connection_pool_max_idle_time=3600s, use_storage_id=, storage server id count: server_count=, server_index= tracker server is 192.168.116.145: group count: Group :
group name = group1
disk total space = MB
disk free space = MB
trunk free space = MB
storage server count =
active server count =
storage server port =
storage HTTP port =
store path count =
subdir count per path =
current write server index =
current trunk file id = Storage :
id = 192.168.116.145
ip_addr = 192.168.116.145 ACTIVE
http domain =
version = 5.05
join time = -- ::
up time = -- ::
total storage = MB
free storage = MB
upload priority =
store_path_count =
subdir_count_per_path =
storage_port =
storage_http_port =
current_write_path =
source storage id =
if_trunk_server =
connection.alloc_count =
connection.current_count =
connection.max_count =
total_upload_count =
success_upload_count =
total_append_count =
success_append_count =
total_modify_count =
success_modify_count =
total_truncate_count =
success_truncate_count =
total_set_meta_count =
success_set_meta_count =
total_delete_count =
success_delete_count =
total_download_count =
success_download_count =
total_get_meta_count =
success_get_meta_count =
total_create_link_count =
success_create_link_count =
total_delete_link_count =
success_delete_link_count =
total_upload_bytes =
success_upload_bytes =
total_append_bytes =
success_append_bytes =
total_modify_bytes =
success_modify_bytes =
stotal_download_bytes =
success_download_bytes =
total_sync_in_bytes =
success_sync_in_bytes =
total_sync_out_bytes =
success_sync_out_bytes =
total_file_open_count =
success_file_open_count =
total_file_read_count =
success_file_read_count =
total_file_write_count =
success_file_write_count =
last_heart_beat_time = -- ::
last_source_update = -- ::
last_sync_update = -- ::
last_synced_timestamp = -- ::

看到“192.168.116.145  ACTIVE”即可确认 storage 运行正常。

五、给storage安装nginx并配置

主要目的是为了提供 http 的访问服务,同时解决 group 中 storage服务器的同步延迟问题。
nginx需要添加fastdfs-nginx-module模块。
下载地址:http://nchc.dl.sourceforge.net/project/fastdfs/FastDFS%20Nginx%20Module%20Source%20Code/fastdfs-nginx-module_v1.16.tar.gz

# tar zxf fastdfs-nginx-module_v1..tar.gz
# tar zxf nginx-1.8..tar.gz
# cd nginx-1.8.
# ./configure --prefix=/data/nginx --add-module=/data/soft/fastdfs-nginx-module/src
# make
# make install

make时报错如下:

.......
/data/soft/fastdfs-nginx-module/src/ngx_http_fastdfs_module.c:: 错误:‘struct fdfs_http_context’没有名为‘if_modified_since’的成员
/data/soft/fastdfs-nginx-module/src/ngx_http_fastdfs_module.c:: 错误:‘struct fdfs_http_context’没有名为‘if_modified_since’的成员
/data/soft/fastdfs-nginx-module/src/ngx_http_fastdfs_module.c:: 错误:‘struct fdfs_http_context’没有名为‘range’的成员
/data/soft/fastdfs-nginx-module/src/ngx_http_fastdfs_module.c:: 错误:‘struct fdfs_http_context’没有名为‘if_range’的成员
/data/soft/fastdfs-nginx-module/src/ngx_http_fastdfs_module.c:: 错误:‘true’未声明(在此函数内第一次使用)
make[]: *** [objs/addon/src/ngx_http_fastdfs_module.o] 错误
make[]: Leaving directory `/data/soft/nginx-1.8.'
make: *** [build] 错误

解决办法:
执行以下2条命令,然后重新make

# ln -sv /usr/include/fastcommon /usr/local/include/fastcommon
# ln -sv /usr/include/fastdfs /usr/local/include/fastdfs

拷贝相关文件到/etc/fdfs目录下:

# cp /data/soft/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
# cp /data/soft/FastDFS/conf/mime.types /etc/fdfs/
# cp /data/soft/FastDFS/conf/http.conf /etc/fdfs/
# cp /data/soft/FastDFS/conf/anti-steal.jpg /etc/fdfs/

修改nginx.conf的配置:

listen       ;
location ~/group[-]/M00 {
root /data/fastdfs-storage/data;
ngx_fastdfs_module;
}

修改/etc/fdfs/mod_fastdfs.conf的配置:

base_path=/data/fastdfs-storage  #保存日志目录
tracker_server=192.168.116.145: #tracker 服务器的 IP 地址以及端口号
url_have_group_name = true #文件 url 中是否有 group 名
store_path0=/data/fastdfs-storage # 存储路径
http.need_find_content_type=true # 从文件扩展名查找文件类型 (nginx 时 为true)
group_count = #设置组的个数,事实上这次只使用了group1
在文件末添加如下内容:
[group1]
group_name=group1
storage_server_port=
store_path_count=
store_path0=/data/fastdfs-storage [group2]
group_name=group2
storage_server_port=
store_path_count=
store_path0=/data/fastdfs-storage [group3]
group_name=group3
storage_server_port=
store_path_count=
store_path0=/data/fastdfs-storage

建立 M00 至存储目录的符号连接:

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

启动nginx:

# /data/nginx/sbin/nginx

查看nginx的error日志,如果类似下以内容,表明配置成功:

六、给tracker安装nginx并配置

安装路径为:/data/nginx2
安装过程略。
nginx.conf配置如下:

upstream fdfs_group1 {
server 127.0.0.1:;
} location /group1/M00 {
proxy_pass http://fdfs_group1;
}

启动nginx:

# /data/nginx2/sbin/nginx

配置客户端文件:

# cd /etc/fdfs/
# mv client.conf.sample client.conf #修改内容如下:
base_path=/data/fastdfs-storage #日志存放路径
tracker_server=192.168.116.145: #tracker 服务器 IP 地址和端口号
http.tracker_server_port= # tracker 服务器的 http 端口号,必须和tracker的设置对应起来

测试文件上传:

通过上图可以看到文件上传后存储的路径为:group1/M00/00/00/wKh0kVb8xZuAdQGUAAfp5oSKTdo388.jpg

通过nginx访问:

分布式文件系统FastDFS安装与配置(单机)的更多相关文章

  1. 分布式文件系统FastDFS介绍和配置过程

    http://ylw6006.blog.51cto.com/470441/948729/ 由于网站使用nfs共享方式保存用户上传的图片,附件等资料,然后通过apache下载的方式供用户访问,在网站架构 ...

  2. 分布式文件系统FastDFS安装教程

    前言 FastDFS(Fast Distributed File System)是一款开源轻量级分布式文件系统,本文不讲解原理和架构,只是在个人使用部署过程中耗费了好长时间和精力,遇到了很多的坑,于是 ...

  3. 分布式文件系统fastdfs安装以及python调用

    fastfds的安装和使用 一.所需依赖 操作系统:centos7.x(注意的是centos使用yum安装相关依赖) fastdfs:V6.06.tar.gz libfastcommon:V1.0.4 ...

  4. 分布式文件系统 fastDFS 安装步骤

    安装 fastDFS 很简单. 先安装 libevent, 安装成功后,安装fastDFS. ./make.sh ./make.sh install 我使用一台tracker服务器  192.168. ...

  5. 分布式文件系统 FastDFS 5.0.5 & Linux CentOS 7 安装配置(单点安装)——第一篇

    分布式文件系统 FastDFS 5.0.5 & Linux CentOS 7 安装配置(单点安装)--第一篇 简介 首先简单了解一下基础概念,FastDFS是一个开源的轻量级分布式文件系统,由 ...

  6. 记录:CentOS 7 安装配置分布式文件系统 FastDFS 5.1.1

    CentOS 7 安装配置分布式文件系统 FastDFS 5.1.1 软件下载:http://download.csdn.net/download/qingchunwuxian1993/9897458 ...

  7. 分布式文件系统 FastDFS 5.0.8 & Linux CentOS 6.7 安装配置

    原文:http://blog.csdn.net/wlwlwlwl015/article/details/52619851 前言 项目中用到文件服务器,有朋友推荐用fastdfs,所以就了解学习了一番, ...

  8. CentOS 7 安装配置分布式文件系统 FastDFS 5.0.5

    前言 项目中用到文件服务器,有朋友推荐用FastDFS,所以就了解学习了一番,感觉确实颇为强大,在此再次感谢淘宝资深架构师余庆大神开源了如此优秀的轻量级分布式文件系统,本篇文章就记录一下FastDFS ...

  9. 分布式文件系统 - FastDFS 在 CentOS 下配置安装部署

    少啰嗦,直接装 看过上一篇分布式文件系统 - FastDFS 简单了解一下的朋友应该知道,本次安装是使用目前余庆老师开源的最新 V5.05 版本,是余庆老师放在 Github 上的,和目前你能在网络上 ...

随机推荐

  1. build/core/config.mk

    # 如果定义了ANDROID_BUILD_SHELL,则ANDROID_BUILD_SHELL # 否则使用默认的/bin/bash ifdef ANDROID_BUILD_SHELL SHELL : ...

  2. NSAttributedString用法

    以前看到这种字号和颜色不一样的字符串,想出个讨巧的办法就是“¥150”一个UILabel,“元/位”一个UILabel.今天翻看以前的工程,command点进UITextField中看到[attrib ...

  3. Gulp-入门教程 搭配环境

    之前一直听朋友谈起gulp,但没有使用过,最近有机会接触到,现在给大家分享下,不对的地方还请指正.我一直以为互相分享是学习的一种好方式.下面进入正题: 首先来了解下gulp,最起码要知道:我们为什么要 ...

  4. Lucene初步搜索

    Lucene在创立索引后,要进行搜索查询 搜索大概需要5部, 1,读取索引. 2,查询索引. 3,匹配数据. 4,封装匹配结果. 5,获取需要的值. 语言表达能力不好,大概就是分着几部吧. /** * ...

  5. 【elasticsearch】(4)centos7 超简单安装elasticsearch 的 jdbc

    前言 elasticsearch(下面简称ES)使用jdbc连接mysql比go-mysql-elasticsearch的elasticsearch-river-jdbc能够很好的支持增量数据更新的问 ...

  6. php返回相对时间(如:20分钟前,3天前)的方法

    function plural($num) { if ($num != 1) return "s"; } function getRelativeTime($date) { $di ...

  7. JavaScript学习总结【5】、JS DOM

    1.DOM 简介 当页面加载时,浏览器会创建页面的文档对象模型(Document Object Model).文档对象模型定义访问和处理 HTML 文档的标准方法.DOM 将 HTML 文档呈现为带有 ...

  8. service httpd restart失败解决方法(小记)

    1.首先查看错误日志 /var/log/message看看具体问题.如果一时难以判定直接使用下面一招 2.直接中断http服务,killall -9 httpd,  然后重启http,service ...

  9. url、base64 编码规则

    UrlEncode 相关: URI所允许的字符分作保留与未保留. 保留字符是那些具有特殊含义的字符. 例如, 斜线字符用于URL (或者更一般的, URI)不同部分的分界符. 未保留字符没有这些特殊含 ...

  10. C# mvc 验证码3

    //// <summary> /// 生成验证码 /// </summary> /// <param name="length">指定验证码的长 ...