一、利用docker安装fastdfs
在搭建fastDFS文件上传下载服务器之前,你需要准备的有一个可连接的linux服务器,并且该linux服务器上已经安装了docker,若还有没安装docker的,先百度自行安装docker。
1.在dockerHub中查询需要下载的fastdfs版本,我下载版本如下图所示,下载命令:docker pull delron/fastdfs:latest
2.下载完成后,查看下载成功的fastdfs镜像,利用docker images命令查看,如图,下载成功
3.执行命令:mkdir -p /data/tracker,该目录用于和tracker服务器进行目录挂载
4.执行命令创建tracker容器:docker run -id --name tracker --restart=always --net host -v /etc/localtime:/etc/localtime -v /data/tracker:/fastdfs/tracker/data season/fastdfs:1.2 tracker
5.执行命令:mkdir -p /data/storage,该目用于录存储上传的文件
6.执行命令创建storage容器:docker run -id --name storage --restart=always --net host -v /etc/localtime:/etc/localtime -v /data/storage:/fastdfs/store_path -e TRACKER_SERVER="49.233.170.221:22122" delron/fastdfs storage
其中49.233.170.221换成自己服务的ip地址(最好是外网能访问的ip地址)
7. 执行命令:dockers ps -a 查看tracker和storage容器启动情况,如下图,表示容器正常启动
8.进入tracker容器中修改client.conf配置文件中tracker_server的ip地址为当前服务器地址ip
①.执行命令docker exec -it tracker bash进入tracker容器中
②.执行命令vi /etc/fdfs/client.conf修改配置文件中的tracker_server为当前服务器ip
③.在tracker容器中创建一个测试文件,执行命令:echo "Hello Fasfdfs!" >index.html
④. 将文件上传到服务器,执行命令:fdfs_upload_file /etc/fdfs/client.conf index.html,返回如下图说明上传成功
9.在别的机器通过浏览器访问http://ip地址:8888/+上传返回值,即可成功访问上传的文件
二、springboot整合Fastdfs
1.创建一个springboot项目,只勾选web模块
2.在pom.xml中导入fastdfs相关的jar包(此处我顺便把swagger整合进去,便于测试)
<!-- Swagger2 核心依赖 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.6.1</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.6.1</version>
</dependency>
<!-- 连接fastdfs文件系统 -->
<dependency>
<groupId>net.oschina.zcx7878</groupId>
<artifactId>fastdfs-client-java</artifactId>
<version>1.27.0.0</version>
</dependency>
3.在项目resource包下创建配置文件fdfs_client.conf,其中ip为自己对应服务器的ip地址
connect_timeout=30
network_timeout=60
charset = UTF-8
http.tracker_http_port = 8888
http.anti_steal_token = no
http.secret_key =
tracker_server=ip:22122
4.创建FastDFSConfig的配置类:
import org.csource.fastdfs.ClientGlobal; import org.csource.fastdfs.TrackerClient; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.io.Resource; /** * fastDFS文件上传的配置 */ @Configuration public class FastDFSConfig { private final Logger log = LoggerFactory.getLogger(this.getClass()); @Value("classpath:fdfs_client.conf") private Resource ccs; @Bean public TrackerClient initClient(){ try{ ClientGlobal.init(ccs.getFilename()); return new TrackerClient(); }catch (Exception e){ log.info("FastDFS创建客户端失败"); return null; } } }
5.创建SwaggerConfig的配置类
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.builders.PathSelectors; import springfox.documentation.builders.RequestHandlerSelectors; import springfox.documentation.service.ApiInfo; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket; @Configuration public class SwaggerConfig { @Bean public Docket createRestApi() { return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .select() .apis(RequestHandlerSelectors.basePackage("com.zbl")) //注意修改成自己的包路径,不然扫描不到controller .paths(PathSelectors.any()) .build(); } private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("SpringBoot利用Swagger构建API文档") .description("使用RestFul风格, 创建人:一生有你") .termsOfServiceUrl("https://github.com/cicadasmile") .version("version 1.0") .build(); } }
6.启动类添加@EnableSwagger2,用于启用swagger注解,默认访问地址:http://localhost:6060/swagger-ui.html#,6060为项目启动端口,默认为8080
7.启动成功,访问界面如下:
8.选择文件上传成功,返回如下所示:
9.浏览器访问图片成功,OK,大功告成:
三、代码参考:目前码云还在完善中,后期添加源码链接
说明:为何会详细讲解fastdfs的安装,因为我作为一个后端开发人员对这些安装不是很熟悉,搞了3个小时才搞定,所以记录详细一点,以便于其余后端开发人员能快速上手,至于docker的安装就自行百度吧。我的服务器用的阿里云的centons7服务器,去年花了2斤猪肉的钱买的,哈哈哈,爽!