分布式文件系统FastDFS安装与配置(单机)
安装包如下:
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安装与配置(单机)的更多相关文章
- 分布式文件系统FastDFS介绍和配置过程
http://ylw6006.blog.51cto.com/470441/948729/ 由于网站使用nfs共享方式保存用户上传的图片,附件等资料,然后通过apache下载的方式供用户访问,在网站架构 ...
- 分布式文件系统FastDFS安装教程
前言 FastDFS(Fast Distributed File System)是一款开源轻量级分布式文件系统,本文不讲解原理和架构,只是在个人使用部署过程中耗费了好长时间和精力,遇到了很多的坑,于是 ...
- 分布式文件系统fastdfs安装以及python调用
fastfds的安装和使用 一.所需依赖 操作系统:centos7.x(注意的是centos使用yum安装相关依赖) fastdfs:V6.06.tar.gz libfastcommon:V1.0.4 ...
- 分布式文件系统 fastDFS 安装步骤
安装 fastDFS 很简单. 先安装 libevent, 安装成功后,安装fastDFS. ./make.sh ./make.sh install 我使用一台tracker服务器 192.168. ...
- 分布式文件系统 FastDFS 5.0.5 & Linux CentOS 7 安装配置(单点安装)——第一篇
分布式文件系统 FastDFS 5.0.5 & Linux CentOS 7 安装配置(单点安装)--第一篇 简介 首先简单了解一下基础概念,FastDFS是一个开源的轻量级分布式文件系统,由 ...
- 记录:CentOS 7 安装配置分布式文件系统 FastDFS 5.1.1
CentOS 7 安装配置分布式文件系统 FastDFS 5.1.1 软件下载:http://download.csdn.net/download/qingchunwuxian1993/9897458 ...
- 分布式文件系统 FastDFS 5.0.8 & Linux CentOS 6.7 安装配置
原文:http://blog.csdn.net/wlwlwlwl015/article/details/52619851 前言 项目中用到文件服务器,有朋友推荐用fastdfs,所以就了解学习了一番, ...
- CentOS 7 安装配置分布式文件系统 FastDFS 5.0.5
前言 项目中用到文件服务器,有朋友推荐用FastDFS,所以就了解学习了一番,感觉确实颇为强大,在此再次感谢淘宝资深架构师余庆大神开源了如此优秀的轻量级分布式文件系统,本篇文章就记录一下FastDFS ...
- 分布式文件系统 - FastDFS 在 CentOS 下配置安装部署
少啰嗦,直接装 看过上一篇分布式文件系统 - FastDFS 简单了解一下的朋友应该知道,本次安装是使用目前余庆老师开源的最新 V5.05 版本,是余庆老师放在 Github 上的,和目前你能在网络上 ...
随机推荐
- Entity Framework Demo(一) 简单搭建环境
Entity Framwork(实体框架,简称EF)是ORM(Object Relational Mapping,对象映射关系)的一个解决方案. EF允许项目将数据库的表映射为实体,并封装了操作方法, ...
- 2.RABBITMQ 入门 - WINDOWS - 生产和消费消息 一个完整案例
关于安装和配置,见上一篇 1.RABBITMQ 入门 - WINDOWS - 获取,安装,配置 公司有需求,要求使用winform开发这个东西(消息中间件),另外还要求开发一个日志中间件,但是也是要求 ...
- Developing iOS8 Apps with Swift——iOS8概览
iOS 8 概览 斯坦福公开课--Developing iOS8 Apps with Swift学习笔记 想学习Swift,但是相应的教程不是很多,在CoCoaChina社区闲逛时恰好发现了这门课程, ...
- PHP设计模式之:外观模式
外观模式: 外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用: 外观模式又称为门面模 ...
- php日期处理
$datetime=strtotime(date("Y-m-d",time()));//获取当前日期并转换成时间戳 $datetime=$datetime+86400;//在时间戳 ...
- Activity启动过程简要介绍
无论是通过点击应用程序图标来启动Activity,还是通过Activity内部调用startActivity接口来启动新的Activity,都要借助于应用程序框架层的ActivityManagerSe ...
- awk基础 [马哥视频]
awk基础 1.1 print print的使用格式: print item1,item2, …. 要点: 各项目自己使用逗号隔开,而输出时则以空白字符分隔: 输出的item可以为字符串或者数值,当前 ...
- Python3.4使用MySql
如何在Django1.6结合Python3.4版本中使用MySql django默认的mysql连接是Mysqldb,悲催的是此版本只支持到python2.7,oracle官方的mysql-conne ...
- Xcode-01ARC / Block
1.nonatomic 2.assign 3.strong 4.weak 5.instancetype 6.@class @property 使部分类在编译时不使用ARC -(可以让这们支持 reta ...
- 最近Get到的一些HTML/CSS中的小点(一)
1.<em>和<strong>标签都是用来强调一段话中的某几个文字.<em>默认斜体,<strong>默认粗体.在强调语气上<strong> ...