一、利用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斤豬肉的錢買的,哈哈哈,爽!