一、利用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=30network_timeout=60charset = UTF-8http.tracker_http_port = 8888http.anti_steal_token = nohttp.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斤猪肉的钱买的,哈哈哈,爽!

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐