Fastdfs 单节点安装使用教程整理

1 简介

Fastdfs的具体介绍看这里:http://www.jianshu.com/p/af10e44b0fb6

2 安装准备

名称 版本 地址 作用
系统 CentOS-7-x86_64-DVD-1708.iso 点击这里 系统
Fastdfs Fastdfs_v5.11 点击这里 分布式系统
libfastcommon libfastcommon_1.0.36 点击这里 公共 C 函数库
fastdfs-nginx-module fastdfs-nginx-module-master 点击这里 storage节点http服务nginx模块
nginx nginx-1.12.2 点击这里 反响代理服务器

此处有安装包集合,一键下载:点击这里

安装包集合

准备好虚拟机和安装运行环境:根据实际情况自行检查安装

$yum -y install unzip zip   #安装解压工具unzip
$systemctl stop firewalld.service    #停止firewall
$systemctl disable firewalld.service    #禁止firewall开机启动
备注:简单之余就关闭防火墙

安装perl环境,后续编译fastdfs会用到

$yum -y install perl*     #yum安装perl相关支持) 
$yum -y install cpan      #perl需要的程序库,需要cpan的支持

3 安装Fastdfs

安装流程

1 安装依赖包gcc
2 安装libfatscommon
3 安装Fastdfs
4 配置Tracker
5 配置Storage

服务器规划

跟踪服务器(Tracker Server):192.168.64.31
存储服务器(Storage Server):192.168.64.31
数据存储目录:/opt
解压目录:/usr/local/src
Nginx解压目录:/usr/local/src

1 安装依赖包

安装gcc编译器,fastdfs是用c语言开发而来的。

$yum -y install gcc-c++  

至此,gcc编译器安装OK!

2 安装libfatscommon

解压--->编译--->安装
解压完毕进入解压目录libfastcommon-1.0.36

$unzip libfastcommon-1.0.36.zip
libfastcommon目录

执行编译和安装

$./make
$./make install
image.png

至此libfastcommon就已经安装ok了,上图中红色框标注的内容---ibfastcommon.so 默认安装到了/usr/lib64/libfastcommon.so,但是FastDFS主程序设置的lib目录是/usr/local/lib,所以此处需要设置软链接,将lib库文件添加到usr/local/bin(用户放置自己的可执行程序)中

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

备注 .so -- shared object,用户层的动态库 。
至此,libfatscommon安装OK!

3 安装Fastdfs

解压--->编译--->安装

#解压
$unzip fastdfs-5.11.zip
#进入解压目录
#编译
$./make
#安装
$./make install
编译成功示图

Fastdfs安装在/etc/fdfs目录下,此目录如下图所示:


/etc/fdfs目录

安装成功后就会生成如上的4个.sample文件(示例配置文件),我们再分别拷贝这4个配置文件以备后用:

$cp client.conf.sample client.conf
$cp storage.conf.sample storage.conf
$cp storage_ids.conf.sample storage_ids.conf
$cp tracker.conf.sample tracker.conf

至此,Fastdfs安装OK!

4 配置Tracker

首先创建Tracker服务器的文件路径,即用于存储Tracker的数据文件和日志文件等。此路径在后续的Tracker文件配置中都用到

$mkdir /opt/fastdfs_tracker

编辑上一步copy的/etc/fdfs目录下的tracker.conf配置文件,打开文件后依次做如下修改:

disabled=false         #启用配置文件(默认启用)
port=22122             #设置tracker的端口号,通常采用22122这个默认端口
base_path=/opt/fastdfs_tracker #设置tracker的数据文件和日志目录
http.server_port=88    #设置http端口号,默认为8080,记住此端口号,对应于后续nginx的listen端口

配置完毕!
启动tracker服务器

#启动
$service fdfs_trackerd start
或者
$/etc/init.d/fdfs_trackerd start
启动tracker服务器

关闭tracker服务器

#关闭
$service fdfs_trackerd stop
或者
$/etc/init.d/fdfs_trackerd stop
关闭tracker服务器

如果启动命令执行成功,那么在刚才创建的tracker文件目录/opt/fastdfs_tracker中就可以看到启动后新生成的data和logs目录,tracker服务的端口也被正常监听

data和logs目录以及监听

正常启动后,可以将tracker设置为开机启动,打开/etc/rc.d/目录,在rc.local中添加service fdfs_trackerd start,并且对rc.local进行授权。

$chmod +x /etc/rc.d/rc.local    #对rc.local进行授权
对rc.local进行授权

至此,Tracker配置OK!

5 配置Storage

同理,和Tracker配置流程一致。创建Storage服务器的文件目录fastdfs_storage,同时比Tracker多建了一个文件存储路径目录fastdfs_storage_data,用于存放接收的文件。

$mkdir /opt/fastdfs_storage
$mkdir /opt/fastdfs_storage_data

修改目录/etc/fdfs/storage.conf配置文件,打开文件后依次做以下修改:

disabled=false      #启用配置文件(默认启用)
group_name=group1   #组名,根据实际情况修改
port=23000          #设置storage的端口号,默认是23000,同一个组的storage端口号必须一致
base_path=/opt/fastdfs_storage #设置storage数据文件和日志目录
store_path_count=1  #存储路径个数,需要和store_path个数匹配
store_path0=/opt/fastdfs_storage_data   #实际文件存储路径
tracker_server=192.168.64.32:22122 #tracker 服务器的 IP地址和端口号,如果是单机搭建,IP不要写127.0.0.1,否则启动不成功(此处的ip是我的CentOS虚拟机ip)
http.server_port=7777  #设置 http 端口号

配置OK!
启动Storage服务

$service fdfs_storaged start
或者
$/etc/init.d/fdfs_storaged start

关闭Storage服务

$service fdfs_storaged stop
或者
$/etc/init.d/fdfs_storaged stop

备注:启动storage时,要先启动tracker,不然无法启动监视

启动成功后data目录

开启Tracker和Storage服务


开启Tracker和Storage服务

如上图,此时已经正常监听tracker的22122端口和storage的23000端口。

确定了storage服务器启动成功后,还有一项工作就是看看storage服务器是否已经登记到 tracker服务器(也可以理解为tracker与storage是否整合成功),运行以下命令:

$/usr/bin/fdfs_monitor /etc/fdfs/storage.conf
整合成功

看到**192.168.111.11 ACTIVE **字样,即可说明storage服务器已经成功登记到了tracker服务器。

添加storage服务开机启动,打开/etc/rc.d/rc.local文件追加service fdfs_storaged start

至此,storage服务器配置ok!

4 初步测试

测试时需要设置客户端的配置文件,编辑/etc/fdfs/client.conf文件,打开后依次做如下修改:

base_path=/opt/fastdfs_tracker       #tracker服务器文件路径
tracker_server=192.168.64.32:22122  #tracker服务器IP地址和端口号
http.tracker_server_port=88  # tracker 服务器的 http 端口号,必须和tracker的设置对应起来

配置完毕就可以上传文件了。
执行客户端上传命令:

$/usr/bin/fdfs_upload_file  /etc/fdfs/client.conf  note.txt
上传文件

返回的路径就只文件的存储目录,在/opt/fastdfs_storage_data目录下,


存储目录

想在web段查看上次存储的文件,需要安装nginx和fastdfs-nginx-module。

至此,简单测试OK!

5 安装fastdfs-nginx-module

fastdfs-nginx-module 作用说明

FastDFS 通过 Tracker 服务器,将文件放在 Storage 服务器存储,但是同组存储服务器之间需要进入文件复制,有同步延迟的问题。假Tracker 服务器将文件上传到了 192.168.64.32,上传成功后文件ID已经返回给客户端。此时 FastDFS 存储集群机制会将这个文件同步到同组存储 192.168.64.33,在文件还没有复制完成的情况下,客户端如果用这个文件 ID 在 192.168.64.33 上取文件,就会出现文件无法访问的错误。而 fastdfs-nginx-module 可以重定向文件连接到源服务器取文件,避免客户端由于复制延迟导致的文件无法访问错误

5.1 安装准备

在安装nginx之前需要先安装一些模块依赖的lib库:pcre-devel、zlib-devel、openssl-devel

$yum -y install pcre pcre-devel  
$yum -y install zlib zlib-devel  
$yum -y install openssl openssl-devel

准备完毕,开始分别为tracker和storage安装配置nginx
安装流程

1 解压fastdfs-nginx-module-master和nginx-1.12.2
2 ./configure配置nginx参数
3 编译安装
4 修改nginx的配置文件nginx.conf
5 copy http.conf和mime.types文件
6 copy mod_fastdfs.conf文件并修改参数
7 启动nginx

5.2 安装storage nginx

1 ) 解压

$unzip fastdfs-nginx-module-master.zip
$tar -zxvf nginx-1.12.2.tar.gz

2 ) ./configure配置
解压完毕后进入nginx目录,在执行./configure配置nginx参数的时候,需要将fastdfs-nginx-moudle源码作为模块编译进去,执行以下命令:

$./configure --prefix=/usr/local/src/nginx --add-module=/usr/local/src/fastdfs-nginx-module-master/src

配置成功!


./configure配置

3 )编译安装

$make
$make install

安装完成后再指定路径/usr/local/src/nginx可查看到安装的目录


nginx安装目录

4 )修改nginx.conf
修改nginx的配置文件,打开/conf/nginx.conf文件,修改http中server的listen,添加location, 具体如下:

listen   7777; #注意,此处的listen对应于/etc/fdfs/storage.conf中的http.server_port=7777

#location放在server里面
location ~/group1/M00 {
      root /opt/fastdfs_storage_data/data;
      ngx_fastdfs_module;
}

5 ) copy http.conf和mime.types

$cp -r /usr/local/src/fastdfs-5.05/conf/http.conf /etc/fdfs/
$cp -r /usr/local/src/fastdfs-5.05/conf/mime.types /etc/fdfs/

6 ) 配置mod_fastdfs.conf文件
将fastdfs-nginx-module-master/src/mod_fastdfs.conf拷贝到/etc/fdfs目录下

$cp -r /usr/local/src/fastdfs-nginx-module-master/src/mod_fastdfs.conf /etc/fdfs/

编辑刚拷贝的mod_fastdfs.conf文件,打开并按顺序依次编译以下内容:

base_path=/opt/fastdfs_storage        #保存日志目录
tracker_server=192.168.64.32:22122   #tracker服务器的IP地址以及端口号
storage_server_port=23000             #storage服务器的端口号
url_have_group_name = true            #文件url中是否有 group 名
store_path0=/opt/fastdfs_storage_data # 存储路径
group_count = 3                       #设置组的个数,事实上这次只使用了group1

设置group_count = 3,需要在文件尾部追加这3个group setting

[group1]
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/opt/fastdfs_storage_data

[group2]
group_name=group2
storage_server_port=23000
store_path_count=1
store_path0=/opt/fastdfs_storage_data

[group3]
group_name=group3
storage_server_port=23000
store_path_count=1
store_path0=/opt/fastdfs_storage_data

7 ) 启动nginx

$/usr/local/src/nginx/sbin/nginx            #启动
$/usr/local/src/nginx/sbin/nginx -s reload  #重新启动
$/usr/local/src/nginx/sbin/nginx -s stop    #停止

显示如下信息说明nginx已启动成功:


nginx启动成功

通过浏览器看到nginx的主页:端口为7777


image.png

5.3 安装tracker nginx

步骤和安装storage nginx一样

$mkdir tracker_nginx
$cd nginx-1.12.2/
$./configure --prefix=/usr/local/src/tracker_nginx --add-module=/usr/local/src/fastdfs-nginx-module-master/src
$make
$make install

#安装完毕,修改tracker_nginx/conf/nginx.conf的配置文件
#listen端口和tracker.conf的http.server_port=88一致
#添加upstream和location :
#upstream 命令要放在http里面 server外面,location 在server里面,7777对应于storage的server_port

listen    88;
upstream fdfs_group1 {
     server 127.0.0.1:7777;   
}
#location放在server里面
location /group1/M00 {
     proxy_pass http://fdfs_group1;
}

#启动tracker_nginx
$/usr/local/src/tracker_nginx/sbin/nginx
tracker_nginx的主页

6 HTTP测试

查看/etc/fdfs/client.conf文件配置是否正确:

base_path=/data/fastdfs_storage     #日志存放路径
tracker_server=192.168.64.32:22122  #tracker 服务器 IP 地址和端口号
http.tracker_server_port=88       # tracker 服务器的 http 端口号,必须和tracker的设置对应起来

通过客户端命令测试上传:

$/usr/bin/fdfs_upload_file /etc/fdfs/client.conf data/20170131.jpg
上传图片

如上图,上传成功,通过HTTP测试文件访问,打开浏览器输入ip地址+文件名看看是否能正常访问该图片:


HTTP测试文件访问

至此,HTTP测试OK!

请求Tracker服务器下载图片,其实请求的是Tracker服务器上的nginx服务,因为nginx服务的端口是88端口,而tracker服务端口是22122。

tracker上的nginx起到http访问的反向代理作用,反向代理到group对应的所有storage上的nginx服务。客户端请求tracker上的nginx服务,根据配置的location /group1找到对应的group1下所有的storage服务器上的nginx服务的ip和端口(提供下载接口),然后由tracker决定使用哪台storage,最后将该storage的ngnix服务的ip和port返回给客户端。客户端拿到storage的nginx服务的ip和端口,去请求这个nginx服务,根据请求中的group1/M00与storage的nginx配置的

location ~/group1/M00 {
root /opt/fastdfs_storage_data/data;
ngx_fastdfs_module;
}

进行匹配,然后获取到文件的存储目录,然后在根据两级目录和文件名来获取到文件。

7 总结

要提前安装好依赖包和运行环境,关闭防火墙,做笔记整理资料。

8 参考资料

1.分布式文件系统 FastDFS 5.0.5 & Linux CentOS 7 安装配置
2.FastDFS分布式文件系统安装与使用(单节点)
3.CENTOS 7 安装perl环境
4.Centos7网络配置( 网关、dns、ip地址配置)
5.FastDFS学习笔记
6.Centos7 Linux安装命令


                                   20171107
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,560评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,104评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,297评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,869评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,275评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,563评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,833评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,543评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,245评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,512评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,011评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,359评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,006评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,062评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,825评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,590评论 2 273
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,501评论 2 268

推荐阅读更多精彩内容