0
点赞
收藏
分享

微信扫一扫

使用Docker一键搭建FastDFS+Nginx分布式文件服务器


做过很多项目在图片上传上一直使用的是FastDFS,刚开始得知搭建一个这样的系统非常复杂,所以直接使用了淘淘商城的虚拟机。在后面的项目中,最终选择在在阿里云上自己搭建一个FastDFS+Nginx分布式文件服务器。文章可参考​​Centos7 安装FastDFS+nginx module​​ 现在考虑到后期服务器可能要变更,重新搭建太耗时,并且现在服务器安装的东西太多准备重装一下CentOS系统,所以最近把很多东西都用Docker重新搭建了一下。
本文重点教给大家使用Docker一键搭建FastDFS+Nginx分布式文件服务器,具体搭建过程太复杂,希望以后有时间可以总结一下,大部分坑都在docker使用上不熟练和docker中的centos环境太少,甚至没有基础的vim、ll、yum等。不过考虑到系统的精简性,最终并没有将这些环境加入进去。

拉取镜像并启动

docker run -d --restart=always --privileged=true --net=host --name=fastdfs -e IP=47.95.234.255 -e WEB_PORT=80 -v ${HOME}/fastdfs:/var/local/fdfs registry.cn-beijing.aliyuncs.com/tianzuo/fastdfs

其中​​-v ${HOME}/fastdfs:/var/local/fdfs​​​是指:将​​${HOME}/fastdfs​​​这个目录挂载到容器里的​​/var/local/fdfs​​​这个目录里。所以上传的文件将被持久化到​​${HOME}/fastdfs/storage/data​​里,IP 后面是自己的服务器公网ip或者虚拟机ip,-e WEB_PORT=80 指定nginx端口

测试

docker exec -it fastdfs /bin/bash

echo "Hello FastDFS!">index.html

fdfs_test /etc/fdfs/client.conf upload index.html

使用Docker一键搭建FastDFS+Nginx分布式文件服务器_Docker


使用Docker一键搭建FastDFS+Nginx分布式文件服务器_分布式文件服务器_02


可以访问说明FastDFS就搭建好了。

如果有问题可以看一下是否占用80端口或是否开启22122 23000端口

FastDFS整合SpringBoot

首先加上依赖

<dependency>
<groupId>com.github.tobato</groupId>
<artifactId>fastdfs-client</artifactId>
</dependency>

配置yml文件

# 分布式文件系统fastdfs配置
fdfs:
# socket连接超时时长
soTimeout: 1500
# 连接tracker服务器超时时长
connectTimeout: 600
pool:
# 从池中借出的对象的最大数目
max-total: 153
# 获取连接时的最大等待毫秒数100
max-wait-millis: 102
# 缩略图生成参数,可选
thumbImage:
width: 150
height: 150
# 跟踪服务器tracker_server请求地址,支持多个,这里只有一个,如果有多个在下方加- x.x.x.x:port
trackerList:
- 47.95.234.255:22122
#
# 存储服务器storage_server访问地址
web-server-url: http://47.95.234.255/
spring:
http:
multipart:
max-file-size: 100MB # 最大支持文件大小
max-request-size: 100MB # 最大支持请求大小

测试类

public class FdfsTest {

@Autowired
private FastFileStorageClient storageClient;


@Test
public void testUpload() throws FileNotFoundException {
File file = new File("G:\\img.png");
// 上传并且生成缩略图
StorePath storePath = this.storageClient.uploadFile(
new FileInputStream(file), file.length(), "png", null);
// 带分组的路径
System.out.println(storePath.getFullPath());
// 不带分组的路径
System.out.println(storePath.getPath());
}

@Test
public void testUploadAndCreateThumb() throws FileNotFoundException {
File file = new File("G:\\img.png");
// 上传并且生成缩略图
StorePath storePath = this.storageClient.uploadFile(
new FileInputStream(file), file.length(), "png", null);
// 带分组的路径
System.out.println(storePath.getFullPath());
// 不带分组的路径
System.out.println(storePath.getPath());
}
}


举报

相关推荐

0 条评论