简介
FastDFS 是一个开源的高性能分布式文件系统(DFS)。它的主要功能包括:文件存储,文件同步和文件访问,以及高容量和负载平衡。主要解决了海量数据存储问题,特别适合以中小文件(建议范围:4KB < file_size <500MB)为载体的在线服务。
FastDFS 系统有三个角色:跟踪服务器(Tracker Server)、存储服务器(Storage Server)和客户端(Client):
1.Tracker Server: 跟踪服务器,主要做调度工作,起到均衡的作用;负责管理所有的 storage server和 group,每个 storage 在启动后会连接 Tracker,告知自己所属 group 等信息,并保持周期性心跳。
2.Storage Server: 存储服务器,主要提供容量和备份服务;以 group 为单位,每个 group 内可以有多台 storage server,数据互为备份。
3.Client:客户端,上传下载数据的服务器,也就是我们自己的项目所部署在的服务器。
准备
1.下载安装包
下载地址:https://github.com/downgoon/hello-world/wiki/FastDFS-Install-&-Upload-&-Download
备注:此案例是将所有下载好的包放在centos的 /tmp/fdfs/目录下
2.安装依赖组件
系统依赖组件 gcc openssl-devel pcre-devel zlib-devel
yum install gcc openssl-devel pcre-devel zlib-devel
安装libfastcommon
说明:必须先安装libfastcommon后安装FastDFS,因为libfastcommon是FastDFS的依赖环境
1.解压文件到一个位置
unzip libfastcommon-master.zip
如果未安装unzip,就执行下面命令:
yum -y install unzip
2.进入解压后的目录,进行编译、安装
cd libfastcommon-master
./make.sh
./make.sh install
会在默认安装位置:/usr/lib64、/usr/include/fastcommon
3.创建软连接
因为 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
ln -s /usr/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so
ln -s /usr/lib64/libfdfsclient.so /usr/lib/libfdfsclient.so
第2个可能出现如下情况,可忽略
FastDFS主程序安装
1.解压文件到一个位置
tar -zxf FastDFS.tar.gz
2.进入解压后的目录,进行编译、安装
cd FastDFS/
./make.sh
./make.sh install
编译期间如果遇到此问题,是因为缺少Perl编程环境,
需要安装Perl编译环境:
yum install perl*
安装后,FastDFS主程序所在位置:
/usr/bin - 可执行文件所在位置。
/etc/fdfs - 配置文件所在位置。
/usr/lib64 - 主程序代码所在位置
/usr/include/fastdfs - 包含的一些插件组所在位置
3.进入配置文件目录
cd /etc/fdfs/
tracker.conf.sample - 跟踪器服务配置文件模板
storage.conf.sample - 存储服务器配置文件模板
client.conf.sample - FastDFS提供的命令行客户端配置文件模板。可以通过命令行测试FastDFS有效性。
4.修改tracker配置文件(/etc/fdfs/tracker.conf)
(1)修改配置文件名,建议使用cp,保留备份
cp tracker.conf.sample tracker.conf
(2)创建存储tracker相关数据的相关文件
mkdir -p /var/data/fdfs/fdfs-tracker
(3) vim打开tracker.conf,修改配置信息
base_path=/home/yuqing/fastdfs -> base_path=/var/data/fdfs/fdfs-tracker(自定义目录)
(4)启动Tracker
/etc/init.d/fdfs_trackerd start
启动成功后,配置文件中base_path指向的目录中出现FastDFS服务相关数据目录(data、logs目录)
5.修改storage配置文件(/etc/fdfs/storage.conf)
(1)修改配置文件名,建议使用cp,保留备份
cp storage.conf.sample storage.conf
(2)创建存储storage相关数据的相关文件
mkdir -p /var/data/fdfs/fdfs-storage/base
mkdir -p /var/data/fdfs/fdfs-storage/store
(3) vim打开storage.conf,修改配置信息
base_path=/home/yuqing/fastdfs -> base_path=/var/data/fdfs/fdfs-storage/base(自定义目录)
store_path0=/home/yuqing/fastdfs -> store_path0=/var/data/fdfs/fdfs-storage/store(自定义目录)
tracker_server=192.168.31.128:22122 【 tracker_server=tracker服务IP:22122】
说明:
base_path - 基础路径,用于保存storage server基础数据内容和日志内容的目录。
store_path0 - 存储路径,是用于保存FastDFS中存储文件的目录,就是要创建256*256个子目录的位置。base_path和store_path0可以配置成同一个目录。
tracker_server - 跟踪服务器位置。就是跟踪服务器的ip和端口。
(4)启动storage
/etc/init.d/fdfs_storaged start
启动成功后,会自动在配置路径下创建文件系统,可进行检查
6.修改client配置文件(/etc/fdfs/client.conf)
(1)修改配置文件名,建议使用cp,保留备份
cp client.conf.sample client.conf
(2)创建存储client客户端命令行执行过程时临时数据存储位置
mkdir -p /fastdfs/client
(3)vim打开client.conf,修改配置信息
base_path=/home/yuqing/fastdfs -> base_path=/fastdfs/client (自定义目录)
tracker_server=192.168.31.128:22122 【 tracker_server=tracker服务IP:22122】
(4)测试上传文件
/usr/local/bin/fdfs_upload_file /etc/fdfs/client.conf /要上传的文件
在nginx中添加Fastdfs模块
1.解压 fastdfs-nginx-module包和tenginx包
tar -zxvf fastdfs-nginx-module_v1.16.tar.gz
tar -zxvf tengine.tar.gz
2.ngixn安装(tengine)
(1)修改/tmp/fdfs/fastdfs-nginx-module/src下的config文件
CORE_INCS="$CORE_INCS /usr/local/include/fastdfs /usr/local/include/fastcommon/"
改为
CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
(2)进入tengine目录下
(3)配置tengine安装参数(根据自己文件路径修改)
./configure --prefix=/usr/local/tengine \
--add-module=/tmp/fdfs/fastdfs-nginx-module/src/
(4)编译安装
make && make install
3.配置fastdfs-nginx-module
(1)拷贝fastdfs-nginx-module配置文件
cp /tmp/fdfs/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
(2)修改配置文件 mod_fastdfs.conf
tracker_server=tracker:22122 -> tracker_server=192.168.31.128:22122
url_have_group_name = false -> url_have_group_name = true
store_path0=/home/yuqing/fastdfs -> store_path0=/var/data/fdfs/fdfs-storage/store
(3)拷贝http服务需要的配置(FastDFS安装包中)
cp /tmp/fdfs/FastDFS/conf/http.conf /etc/fdfs/
cp /tmp/fdfs/FastDFS/conf/mime.types /etc/fdfs/
(4)创建网络访问存储服务的软连接
在上传文件到FastDFS后,FastDFS会返回group1/M00/00/00/xxxxxxxxxx.xxx。其中group1是卷名,在mod_fastdfs.conf配置文件中已配置了url_have_group_name,以保证URL解析正确。
而其中的M00是FastDFS保存数据时使用的虚拟目录,需要将这个虚拟目录定位到真实数据目录上。
ln -s /var/data/fdfs/fdfs-storage/store/data/ /var/data/fdfs/fdfs-storage/store/data/M00
(5)修改nginx配置文件
vim /usr/local/tengine/conf/nginx.conf
在80 server下加一个location
location ~ /group([0-9])/M00 {
ngx_fastdfs_module;
}
(6)启动nginx
/usr/local/tengine/sbin/nginx -c /usr/local/tengine/conf/nginx.conf
(7)测试在浏览器查看文件上面上传的文件 wKgfgF4HVemAf-2jAAAAFkbE1k862.html
http://192.168.31.128/group1/M00/00/00/wKgfgF4HVemAf-2jAAAAFkbE1k862.html