老规矩,开始之前说一下什么是FastDFS
FastDFS是用c语言编写的一款开源的分布式文件系统。FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。
直接开始----->搭建
一、下载相关的FastDFS的源码包
资源在这里下载 --> 我的资源
FastDFS还需要用到Nginx,因此,还需要Nginx的源码包
下载地址---->nginx官网下载
二、相关文件上传
环境:一台虚拟机,系统Linux,版本:CentOS 6.5
上传以上四个文件至Linux系统下的/root目录下
Shell工具查看
三、FastDFS依赖包 下载安装
安装FastDFS之前,先安装libevent
yum -y install libevent
四、安装libfastcommonV1.0.7工具包
4.1 解压 libfastcommon-1.0.7-tar-gz
tar -zxvf libfastcommon-1.0.7.tar.gz
4.2 进入libfastcommon-1.0.7目录,执行make.sh,编译c源码
cd libfastcommon-1.0.7
./make.sh
然后就是唰唰唰唰
4.3 安装libfastcommon包,默认安装在/usr/lib64目录下(我的Linux系统是64位)
./make.sh install
安装完成后,/usr/lib64 目录下就会 多一个 libfastcommon.so包出来
如果你的Linux系统是32位的,请将/usr/lib64/libfastcommon.so 拷贝到/usr/lib/目录下
cp /usr/lib64/libfastcommon.so /usr/lib
五、安装FastDFS,配置Tracker服务(同第四步,libfastcommon包的安装)
5.1 解压包 FastDFS_v5.05.tar.gz
tar -zxvf FastDFS_v5.05.tar.gz
5.2 编译c源码,./make.sh 唰唰唰(切换到 FastDFS目录下cd FastDFS)
5.3 安装./make.sh install
bin目录下:可执行文件
fdfs目录下:配置文件
安装完成后,先切换到 /usr/bin目录
5.4 查看一下编译后的FastDFS相关可执行文件
ll fdfs_*
注明:FastDFS只有两个角色:Trackerserver和Storageserver
5.5 然后再切换到/etc/fdfs目录,查看一下FastDFS配置文件,目前下面有三个配置例子
5.6 切换回 /root/FastDFS 目录,拷贝conf目录下面的配置文件 到 /etc/fdfs 下
将conf目录下面的配置文件,全部拷贝到 /etc/fdfs 目录下(以后FastDFS配置以/etc/fdfs目录下面的文件为准)
cp conf/* /etc/fdfs (conf下面放的都是配置文件,不涉及文件夹,cp的时候 不用考虑参数 -r)
我们发现,原有的sample配置案例和FastDFS目录下面的conf里面的文件大小一样,其实两个是同一个,只不过名字不一样。
5.7 配置Tracker服务
vim /etc/fdfs/tracker.conf
以下利用EditPlus的ftp功能,远程查看tracker.conf如下;
随后我们需要在/home目录下,创建fastdfs/tracker目录(属于我们自己的路径)
vim,修改 tracker.conf的 base_path = /home/fastdfs/tracker
保存并退出,配置tracker完成。
5.8 启动Tracker服务
# /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf (可执行程序 后跟 配置文件)
# /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart(重启)
ps aux|grep tracker 命令 查询 相关进程
六、配置Storage服务
由于,FastDFS的tracker和storage在一台机子上演示,所以,下面直接配置storage,如果,storage server和tracker server不在同一台机子上,需要按照安装FastDFS的流程走一遍,然后才能,继续配置Storage服务。
和配置tracker服务一样,配置Storage直接修改/etc/fdfs/storage.conf
vim /etc/fdfs/storage.conf 或者 EditPlus修改
(1)修改base_path(同tracker服务的path配置一样,这里指定/home/fastdfs/storage)
日志存放路径修改如下
(2)修改store_path
图片存放路径修改如下(和日志存放的路径一样,图省事,如果服务器有多个磁盘,可以指定不同磁盘的存放地址,可以配置多个,本篇条件有限,不做演示)
(3)指定tracker server服务器的IP和端口,如有多个tracker server 依次往下配置,格式 主机(IP):端口(22122)
由于,tracke安装在当前Linux系统中,所以IP即当前系统的IP
(4)保存storage配置文件,并启动Storage服务
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf
这个启动过程稍微慢一点,启动服务的时候,会创建一堆文件及目录(两级目录),在/home/fastdfs/storage/data目录下可以查看
启动后,可以根据 ps aux|grep storage查看storage相关进程
七、测试Storage服务,上传一张图片
客户端上传文件后存储服务器将文件ID返回给客户端,此文件ID用于以后访问该文件的索引信息。文件索引信息包括:组名,虚拟磁盘路径,数据两级目录,文件名。
组名:文件上传后所在的storage组名称,在文件上传成功后有storage服务器返回,需要客户端自行保存。
虚拟磁盘路径:storage配置的虚拟路径,与磁盘选项store_path*对应。如果配置了store_path0则是M00,如果配置了store_path1则是M01,以此类推。
数据两级目录:storage服务器在每个虚拟磁盘路径下创建的两级目录,用于存储数据文件。
文件名:与文件上传时不同。是由存储服务器根据特定信息生成,文件名包含:源存储服务器IP地址、文件创建时间戳、文件大小、随机数和文件拓展名等信息。
测试图片,在/etc/fdfs目录下,有一个anti-steal.jpg
执行fdfs_test之前,需要修改一下client.conf,这个在 /etc/fdfs/client.conf
保存后,切换到图片所在路径 /etc/fdfs(记得创建一下client目录mkdir /home/fastdfs/client)
然后,执行fdfs_test + client.conf +upload +图片
完整命令如下:
/usr/bin/fdfs_test /etc/fdfs/client.conf upload anti-steal.jpg
注意,M00表示store_path0,而这个store_path0就是我们之前配置过的/home/fastdfs/storage
因此我们去 /home/fastdfs/storage/data/00/00目录下面去找一下这个图片(当然,根据图上的信息,目录下应该不止一张图,还包括xxx._big.jpg),验证一下上传功能是不是奏效了:
我们外部打开一下,看一下图片长什么样
打开后,图片长成下面那个样
意外不意外,自带的图片居然是一张广告
那个xxxx_big.jpg和这个图片是一模一样的,这里就不打开了!
由于,http服务还没有搭建和配置,因此,目前只能在服务器上看到这张图片,通过url的方式暂未实现,但是足以证明我们的FastDFS已经搭建成功了,以及其两个主要角色 tracker 和 Storage 服务也已经配置成功了,全篇下来,感觉没什么难点,唯一比较绕的就是目录的来回切换,一定要知道可执行文件放在哪,配置文件放在哪,以及,tracker和Storage怎么修改其对应的conf,还有,最后存储的图片的文件名 是怎么定的,当然,作为一名开发人员,我们只要知道FastDFS分布式文件系统怎么用就行了,至于其中繁琐的配置,就交给运维工程师来就好了,本篇重在实战,如果单看的话,很难消化!
由于篇幅有限,FastDFS有关的学习和使用后续篇章再继续。