资料主要参考:保姆级教程-分布式文件系统FastDFS(高效存储,有效解决大量资源上传下载)_Elegance never goes out of fashion-CSDN博客
主要是本身已经安装了nginx,稍微有所不同,所以自己也记录一下,顺便帮助一下需要的朋友;
主要的三个组件:
客户端:我们的Java程序去连接FastDFS,操作FastDFS,那我们的Java程序就是一个客户端,FastDFS提供有API用来访问FastDFS文件系统,控制文件上传下载层( 如果你是 java 开发,你只需要关心着一层)。
服务端有两个部分构成
1、跟踪器(Tracker):跟踪器主要做调度工作,在内存中记录集群中存储节点storage的状态信息,是前端 Client 和后端存储节点storage的枢纽。因为相关信息全部在内存中,Tracker server 的性能非常高,一个较大的集群(比如上百个group)中有3台就足够了。
2、存储节点(Storage):存储节点(storage)用于存储文件,包括文件和文件属性(meta data)都保存到存储服务器磁盘上,完成文件管理的所有功能:文件存储,文件同步和提供文件访问等。
下载安装
一.安装前置依赖包
检查Linux上是否安装了 gcc,libevent,libevent-devel
yum list installed | grep gcc
如果没有安装以上前置依赖包,则需要通过下面命令进行安装
yum install gcc -y yum install libevent -y yum install libevent-devel -y
二.安装libfastcommon
前置依赖包安装成功后,我们紧接着需要安装公共函数库 libfastcommon
1、获取libfastcommon安装包
wget https://github.com/happyfish100/libfastcommon/archive/V1.0.36.tar.gz
2、解压安装包
tar -zxvf V1.0.36.tar.gz
3、安装完成后进入 libfastcommon 目录
4、在 libfastcommon 目录执行编译
./make.sh
5、安装 libfastcommon
./make.sh install
三.安装FastDFS
1、获取fast安装包,这里采用的版本为5.11
wget https://github.com/happyfish100/fastdfs/archive/V5.11.tar.gz
2、解压安装包
tar -zxvf V5.11.tar.gz
3、安装成功后进入目录
4、执行编译 make.sh 文件
./make.sh
5、安装 fastdfs
./make.sh install
6、安装成功后,查看可执行命令,这些命令放在usr/bin目录下表示不用去配置环境变量就可以直接使用我们fastdfs的命令
ls -la /usr/bin/fdfs*
7、拷贝 http.conf 文件到 /etc/fdfs 目录下
cd /etc/fdfs/ //切换到解压目录下 cp http.conf /etc/fdfs/
8、拷贝 mime.types 文件到 /etc/fdfs 目录下
cp mime.types /etc/fdfs/
拷贝这两个文件后续会用到,为了避免报错大家拷贝完记得进入目录查看一下
配置Tracker服务
1、修改 tracker 文件后缀,该文件在 /etc/fdfs 目录下,进入目录后发现有三个.sample后缀的文件(自动生成的fdfs模板配置文件),通过cp命令拷贝tracker.conf.sample,删除.sample后缀作为正式文件。
cd /etc/fdfs/
cp tracker.conf.sample tracker.conf
2、编辑 tracker.conf 文件,修改相关参数
vim tracker.conf
base_path 指定存放日志的路径,要求该路径必须存在。port 默认端口号。http.server_port 为http端口,需要和nginx相同
base_path=/home/fastdfs/tracker port=22122 http.server_port=80
修改完成后输入wq
保存并退出,紧接着在配置的目录下创建该文件夹
mkdir /home/fastdfs/tracker
如出现图中异常使用 mkdir -p /home/fastdfs/tracker
3、启动并测试
fdfs_trackerd
通过上方说明命令产生的结果fdfs_trackerd <config_file> [start | stop | restart]
可以告诉我们怎么去用
我们想要运行trackerd.conf文件就可以通过下方命令去执行
fdfs_trackerd /etc/fdfs/tracker.conf
配置Storage服务
1、修改文件后缀
cd /etc/fdfs/ cp storage.conf.sample storage.conf
2、编辑 storage.conf 文件,修改相关参数
vim storage.conf
#storage存储data和log的跟路径,必须提前创建好
base_path=/home/fastdfs/storage
#storge默认23000,同一个组的storage端口号必须
port=23000
#默认组名,根据实际情况修改
group_name=group1
#存储路径个数,需要和store_path个数匹配
store_path_count=1
#真正存放文件的目录,如果为空,则使用base_path
store_path0=/home/fastdfs/storage/files
#配置该storage监听的tracker的ip和port
tracker_server=192.168.1.103:22122
配置完成后不要忘记创建对应的文件夹
mkdir /home/fastdfs/storage
mkdir /home/fastdfs/storage/files
3、启动并测试,查看我们两个服务是否启动成功
四.安装Nginx的fastdfs-nginx-module模块
因为已经安装了nginx, 只需要增加和fastdfs相关的模块就行了
1、下载fastdfs-nginx-module安装包
wget https://github.com/happyfish100/fastdfs-nginx-module/archive/V1.20.tar.gz
2、解压fastdfs-nginx-module
tar -xvf V1.20.tar.gz
3、配置,并加载fastdfs-nginx-module模块,切换到 nginx的源码目录
./configure --prefix=/usr/local/nginx/ --add-module=/opt/soft/fastdfs-nginx-module-1.20/src/
如果执行结果里有下面的语句,则说明configure成功
4、编译安装
在nginx的源码目录
make
出现如下异常:src/core/ngx_murmurhash.c:37:11: error: this statement may fall through [-Werror=implicit-fallthrough=]
37 | h ^= data[2] << 16;
-Werror: gcc将所有的警告当成错误进行处理把这行内容中的 “-Werror”去掉
vim objs/Makefile
重新编译
/usr/include/fastdfs/fdfs_define.h:15:10: fatal error: common_define.h: No such file or directory
15 | #include "common_define.h"
解决办法:修改objs/Makefile文件,在ALL_INCS的最后面添加【-I /usr/include/fastcommon】,注意在原来的最后一行的后面加上【\】。
因为上面的错误原因是找不到common_define.h文件,所以通过添加-I,就可以找到这个文件了。如果不知道common_define.h在哪个目录,可以用【find /usr -name common_define.h】找到它所在的目录。
同样是编辑 objs/Makefile文件
//增加一列
-I /usr/include/fastcommon
再重新编译
编译成功
5、安装
在目录【/usr/local/nginx/sbin/】下,如果生产了nginx,并把原来的nginx重命名为nginx.old了,则说明安装成功了。
6、配置Nginx和fastdfs-nginx-module模块
打开mod-fastdfs.conf所在位置拷贝到/etc/fdfs文件目录下
7、进入/etc/fdfs修改mod-fastdfs.conf
#基础路径,确保文件夹存在 base_path=/home/fastdfs/nginx_mod #tracker的地址 tracker_server=192.168.1.103:22122 #url是否包含group名称 url_have_group_name=true #需要和storage配置的相同 storage_server_port=23000 #存储路径个数,需要和store_path个数匹配 store_path_count=1 #文件存储的位置 store_path0=/home/fastdfs/storage/files
7、base_path 创建基础目录
mkdir /home/fastdfs/nginx_mod
8、配置nginx,80端口server增加location 我配置的端口是80
cd /usr/local/nginx/conf/
location ~ /group[1-9]/M0[0-9] {
ngx_fastdfs_module;
}
上传下载测试
1、启动
./nginx
ps -aux|grep nginx检查启动结果
上传文件
1、进入/etc/fdfs目录,有cp命令拷贝client.conf.sample,删除.sample后缀作为正式文件。
cp client.conf.sample client.conf
2、修改client.conf相关配置
#基础文件路径需要提前创建 base_path=/home/fastdfs/client #tracker服务器IP地址和端口号 tracker_server=192.168.1.103:22122 #tracker服务器的http端口号,必须和tracker的设置对应起来 http.tracker_server_port=80
3、创建基础路径文件夹
4、重启 trackerd 与 storage
fdfs_trackerd /etc/fdfs/tracker.conf restart fdfs_storaged /etc/fdfs/storage.conf restart
重启完记得查看进程有没有启动成功
ps -ef|grep fdfs
5、随便选择一个文件作为测试文件,我这里选择nice.jpg
6、上传
fdfs_test /etc/fdfs/client.conf upload nice.jpg
7、查看结果,直接通过浏览器访问即可,复制url 到 浏览器即可
在查看文档存储
cd /home/fastdfs/storage/files/data/00/00/
有big的表示备份的意思,-m表示文件的属性文件通常会记录文件的扩展名大小等基本信息。
删除文件
fdfs_delete_file /etc/fdfs/client.conf group1/M00/00/00/wKgBZ2IRC0WAa_pRABOvaq4BAxQ465_big.jpg
整体流程大致如此, 后面的再去查资料即可