参考:
动力节点fastdfs:FastDFS讲义.docx
一、FastDFS概述
二、环境搭建
1、Linux-centos7上安装FastDFS(繁琐)
2、docker安装FastDFS(推荐)
参考:https://blog.csdn.net/qq_40942490/article/details/110182615
1.拉取镜像
docker pull delron/fastdfs
2.使用docker镜像构建tracker容器(跟踪服务器,起到调度的作用)
docker run -dti --network=host --name tracker -v /var/fdfs/tracker:/var/fdfs -v /etc/localtime:/etc/localtime delron/fastdfs tracker
3.使用docker镜像构建storage容器(存储服务器,提供容量和备份服务)
TRACKER_SERVER=本机的ip地址:22122 ,本机ip地址不要使用127.0.0.1
docker run -dti --network=host --name storage -e TRACKER_SERVER=192.168.157.133:22122 -v /var/fdfs/storage:/var/fdfs -v /etc/localtime:/etc/localtime delron/fastdfs storage
4.进入storage容器,到storage的配置文件中配置http访问的端口,配置文件在/etc/fdfs目录下的storage.conf
#进入容器
docker exec -it storage bash
#进入目录
cd /etc/fdfs/
#编辑文件
vi storage.conf
5.修改storage中的nginx 不需要安装
cd /usr/local/nginx/conf
vi nginx.conf
6.修改完配置重启容器,没有修改就不需要重启
docker stop storage
docker start storage
如果重启后无法启动的会,可能是报下面错误了,手动创建 vi /var/fdfs/logs/storaged.log 文件即可
tail: cannot open ‘/var/fdfs/logs/storaged.log’ for reading: No such file or directory
7.测试
7.1 进入storage容器,进入/var/fdfs目录
docker exec -it storage bash
cd /var/fdfs
echo hello 这是我的第一个测试文件,大家觉得不错关注下吧>a.txt
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf a.txt
浏览器访问 http://ip:8888/group1/M00/00/00/wKgcgF-_Le6AS4LvAAAATzab9Do068.txt
端口根据你在starage里面设置的要保持一致,访问之前关闭防火墙或者自己单独开放端口
8.开放端口
firewall-cmd --zone=public --permanent --add-port=8888/tcp
firewall-cmd --zone=public --permanent --add-port=22122/tcp
firewall-cmd --zone=public --permanent --add-port=23000/tcp
重启防火墙
systemctl restart firewalld
9.开机启动容器
设置容器随docker启动而启动(由于docker是开机启动的,所以容器也会随之启动)
docker update --restart=always tracker
docker update --restart=always storage
三、分布式文件系统FastDFS的HTTP访问
四、FastDFS在Java项目中开发示例
服务器指定端口未暴露
由于服务器防火墙的原因,导致指定的端口未暴露会出现如下问题:
1、浏览器访问fastdfs上传的资源访问不到http://192.168.157.133:8888/group1/M00/00/00/wKidhWF1ABqAYqUwAAAATzab9Do485.txt
2、fastdfs-client客户端连接fastdfs服务出错
会报下面错误:
fastDFS报错:Unable to borrow buffer from pool
1、关闭防火墙
由于FastDFS安装在Linux中 22122端口被管控,windows系统访问时需要先关闭防火墙或者开放该端口
1.查看防火墙状态:
firewall-cmd —state
2.关闭并禁用防火墙,可能需要重启服务器
sudo systemctl stop firewalld.service sudo systemctl disable firewalld.service
3.查看防火墙状态:
firewall-cmd —state not running
2、开放端口
firewall-cmd --zone=public --permanent --add-port=8888/tcp
firewall-cmd --zone=public --permanent --add-port=22122/tcp
firewall-cmd --zone=public --permanent --add-port=23000/tcp
#重启防火墙
systemctl restart firewalld
然后重启fastdfs服务(tracker、storage、nginx)