Linux CentOS7.5 使用FastDFS的環境安裝配置 Nginx 及Java客戶端調用

 

環境搭建(建議先備份一個系統快照html

1. FastDFS是C語言編寫的,故要確保安裝了C編譯器 gcc,若是沒有gcc環境,須要安裝gcc:前端

  yum -y install gcc gcc-c++java

 

2. 若要使用解壓命令(unzip),檢查是否安裝,若沒請自行安裝:nginx

  yum -y install zip  unzipc++

 

3. 安裝libenvent(fastdfs環境)git

  yum -y install libeventgithub

 

4. 安裝libfastcommon環境【 fastdfs環境 (容易遇到坑)】spring

   4.1   下載:libfastcommon-master.zip,能夠在百度搜下安裝包,剛開始在官網下載了libfastcommon_v1.04.tar.gz以後,在編譯安裝完後,再去FastDFS目錄中編譯安裝會報錯。vim

  報缺乏文件建議從github中餘慶提供的 libfastcommon-master 中下載。windows

   4.2   上傳到Linux服務器: 解壓縮 unzip  libfastcommon-master.zip

   4.3    cd libfastcommon-master

   4.4    ./make.sh 

   4.5    ./make.sh install

 

5. 安裝FastDFS

  5.1  下載 FastDFS_v5.08.tar.gz

  5.2  上傳到Linux服務器: 解壓縮  tar -zxvf FastDFS_v5.08.tar.gz

  5.3  cd FastDFS

  5.4  ./make.sh

  5.5  ./make.sh install

 

6.  驗證是否安裝成功

  6.1 命令: ll /etc/init.d/ | grep fdfs

   

         fdfs_storaged 是storage啓動腳本

    fdfs_trackerd  是tracker啓動腳本

  6.2 命令: ll /etc/fdfs/

    

  client.conf.sample       是tracker的配置文件模板
  storage.conf.sample   是storage的配置文件模板
  tracker.conf.sample    是tracker的配置文件模板

 

7. 配置Tracker服務

  7.1  cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf

  7.2  編輯文件 vim /etc/fdfs/tracker.conf 

  7.3  改變存儲數據的根路徑 base_path=/home/yangw/fastdfs_root/tracker (本身建立的路徑)

  7.4 關閉防火牆  systemctl stop firewalld.service

    7.5  啓動/中止tracker服務器  /etc/init.d fdfs_trackerd start/stop

  7.6 也可使用 service fdfs_trackerd start/stop

  7.7 設置開機啓動: chkconfig fdfs_trackerd  on 

  

8. 配置Storage服務

   8.1 cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf

   8.2 編輯文件 vim /etc/fdfs/storage.conf

  8.3  改變存儲數據的根路徑         base_path=/home/yangw/fastdfs_root/storage (本身建立的路徑)

    改變第一個存儲目錄:         store_path0=/home/yangw/fastdfs_root/storage (本身建立的路徑)

    tracker服務器IP和端口: tracker_server=192.168.47.128:22122(你本身的tracker在哪臺服務器就寫哪一個IP地址)

  8.4  關閉防火牆  systemctl stop firewalld.service

  8.5 啓動/中止Storage  /etc/init.d fdfs_storaged start/stop

  8.6 也可使用啓停 service fdfs_storaged start/stop

  8.7  chkconfig fdfs_storaged on

  8.8  ln -s /home/yangw/fastdfs_root/storage/data/   /home/yangw/fastdfs_root/storage/data/M00 (建立軟鏈接)

9. 查看進程

  ps -ef | grep fdfs

  

 

10. 安裝 fastdfs-nginx-module

   10.1  下載 fastdfs-nginx-module_v1.16.tar.gz 

  10.2 解壓縮 tar -zxvf fastdfs-nginx-module_v1.16.tar.gz

  10.3 cd fastdfs-nginx-module/src

  10.4 編輯 文件 vim config  使用底行命令:  

      :%s+/usr/local/+/usr/+g   將全部的/usr/local替換爲 /usr

  

  10.5 cp mod_fastdfs.conf  /etc/fdfs/

  10.6 vim /etc/fdfs/mod_fastdfs.conf

    connect_timeout=10      #客戶端訪問文件鏈接超時時長(單位:秒)

    tracker_server=192.168.47.128:22122    # tracker服務IP和端口

    url_have_group_name=true                # 訪問連接前綴加上組名

    store_path0=/home/yangw/fastdfs_root/storage            # 文件存儲路徑

  10.7 複製 FastDFS 的配置文件mime.types到/etc/fdfs 目錄

    cd  /home/yangw/software/sources/FastDFS/conf

    cp http.conf mime.types  /etc/fdfs/

 

11. 安裝(首次) nginx

  11.1 下載  http://nginx.org/en/download.html 

  11.2 解壓縮 tar -zxvf  nginx-1.16.1.tar.gz

  11.3 cd nginx-1.16.1

  11.4  配置Nginx安裝包並指定fastdfs-nginx-model 

    ./configure --prefix=/usr/local/nginx --sbin-path=/usr/local/sbin    --with-http_stub_status_module   --with-http_ssl_module  --add-module=/home/yangw/software/sources/fastdfs-nginx-module/src  

    #將bin文件放在該目錄    #http訪問支持   #https訪問支持    #指定模塊

  11.5 編譯並安裝 make && make install

 

12. 配置nginx

  12.1 cd /usr/local/nginx/conf

  12.2 編輯文件 vim nginx.conf , 將原來的server {80...} 替換爲以下內容

  

   server_name image.yangw.com;

  # 監聽域名中帶有group的,交給FastDFS模塊處理
  location ~/group([0-9])/ {
    ngx_fastdfs_module;
  }

 

13. nginx命令

   /usr/local/sbin/nginx start         啓動;

  /usr/local/sbin/nginx -s stop      中止

  /usr/local/sbin/nginx -s reload  從新加載

  /usr/local/sbin/nginx -v              查看版本

  由於以前咱們已將命令設置到了path中,故能夠直接使用命令nginx 後面跟參數

  

 

14.  hosts文件添加域名映射 並驗證

  windows上操做的hosts,在windows系統的瀏覽器上運行效果

   

   

 

    以上Linux環境搭建所須要的資料下載  

 

 Java程序調用

咱們不使用餘慶提供的java客戶端,而是使用開源的加強版的FastDFS客戶端,支持SpringBoot2.1,支持縮略圖,支持鏈接池

 

 

 

 

 咱們經過前端頁面上傳一個圖片,結果程序返回的圖片地址是

http://image.yangw.com/group1/M00/00/00/wKgvgF3lBQOARsxtAAFl-ayq-DA520.png

查詢服務器存儲狀況:

 瀏覽器訪問:  明明文件上傳成功,卻報404.

 

 通過多方查資料,發現須要在 /usr/local/nginx/conf/nginx.conf文件最開始處加 user root;便可經過!

 

 

 

編寫測試類運行(若是連不上,關掉防火牆再試) 

 1 package com.leyou.test;  2 
 3 import com.github.tobato.fastdfs.domain.fdfs.StorePath;  4 import com.github.tobato.fastdfs.domain.fdfs.ThumbImageConfig;  5 import com.github.tobato.fastdfs.service.FastFileStorageClient;  6 import org.junit.Test;  7 import org.junit.runner.RunWith;  8 import org.springframework.beans.factory.annotation.Autowired;  9 import org.springframework.boot.test.context.SpringBootTest; 10 import org.springframework.test.context.junit4.SpringRunner; 11 
12 import java.io.File; 13 import java.io.FileInputStream; 14 import java.io.FileNotFoundException; 15 
16 @SpringBootTest 17 @RunWith(SpringRunner.class) 18 public class FastDFSTest { 19 
20  @Autowired 21     //存儲客戶端工具類,它既不是FastDFS包的
22     private FastFileStorageClient storageClient; 23 
24  @Autowired 25     //縮略圖
26     private ThumbImageConfig thumbImageConfig; 27 
28  @Test 29     public void testUploadFile() throws FileNotFoundException { 30         //要上傳的文件
31         File file = new File("C:\\Users\\Administrator\\Desktop\\timg.jpg"); 32         //傳文件
33         StorePath storePath = storageClient.uploadFile(new FileInputStream(file), file.length(), "jpg", null); 34         //獲取服務器文件路徑(帶組名)
35         System.out.println("full path:" + storePath.getFullPath()); 36         //獲取服務器文件路徑(不帶組名)
37         System.out.println("path:" + storePath.getPath()); 38  } 39 
40  @Test 41     public void testUploadThumbImage()throws FileNotFoundException { 42 
43         //要上傳的文件
44         File file = new File("C:\\Users\\Administrator\\Desktop\\timg.jpg"); 45         //傳文件
46         StorePath storePath = storageClient.uploadImageAndCrtThumbImage(new FileInputStream(file), file.length(), "jpg", null); 47         //獲取服務器文件路徑(帶組名)
48         System.out.println("full path:" + storePath.getFullPath()); 49         //獲取服務器文件路徑(不帶組名)
50         System.out.println("path:" + storePath.getPath()); 51         //獲取縮略圖
52  System.out.println(thumbImageConfig.getThumbImagePath(storePath.getFullPath())); 53  } 54 
55 }
View Code

 

 什麼是FastDFS

  1.  FastDFS是用c語言編寫的一款開源的分佈式文件系統。FastDFS爲互聯網量身定製,充分考慮了冗餘備份、負載均衡、線性擴容等機制,並注重高可用、高性能等指標,使用FastDFS很容易搭建一套高性能的文件服務器集羣提供文件上傳、下載等服務。
  

   2. 客戶端 能夠當作是咱們的上傳文件的程序

   3. 服務端有兩個角色:

    Tracker:

    管理集羣, tracker也能夠實現集羣。每一個tracker節點地位平等。
    做用:引導客戶端去哪臺服務器存儲數據,其實是客戶端與存儲服務器直接進行通訊的,並不須要經過Tracker進行中轉。

    Storage:

    須要鏈接tracker端,按期報告本身的狀況(是否活着,剩餘容量,負載狀況)
    分爲多個組,每一個組之間保存的文件是不一樣的。每一個組內部能夠有多個成員,組成員內部保存的內容是同樣的,組成員的地位是一致的,沒有主從的概念。
    卷一、卷二、卷n是能夠實現橫向擴容的,向裏面添加組服務器,且同一個組裏面的文件是同樣的,一臺服務器掛了,還有別的服務器能夠提供訪問。(實現高可用)
    一臺服務器很忙,能夠將訪問分配給其餘服務器,實現負載均衡

  4.文件上傳流程(內部流程):
  

   5.文件下載流程(內部流程):

  

  6. 客戶端上傳文件後存儲服務器將文件ID返回給客戶端,此文件ID用於之後訪問該文件的索引信息。文件索引信息包括:組名,虛擬磁盤路徑,數據兩級目錄,文件名

   如: group1/M00/00/00/wKgvgF3lBQOARsxtAAFl-ayq-DA520.png

 

 

附錄1 參考:

https://www.xuebuyuan.com/2188649.html

https://blog.csdn.net/qq_37495786/article/details/83896530

https://blog.csdn.net/qq_36639232/article/details/92699727

https://www.jianshu.com/p/b56e84912825

 

附錄2  CentOS7防火牆的相關操做:

  

  centos7中的防火牆改爲了firewall,使用iptables無做用,開放端口的方法以下:

  firewall-cmd --zone=public --add-port=80/tcp --permanent

  返回success爲成功  --zone #做用域 --add-port=80/tcp #添加端口,格式爲:端口/通信協議 --permanent #永久生效

  systemctl restart firewalld.service  #重啓防火牆

  systemctl stop firewalld.service #關閉防火牆

  netstat -lntp #查看監聽(Listen)的端口

  netstat -lnp|grep 8080 #檢查端口被哪一個進程佔用

附錄3 Centos7查看是否安裝了某個軟件

1,  rpm包安裝的,能夠用 rpm -qa 看到,若是要查找某軟件包是否安裝,用 rpm -qa | grep "軟件或者包的名字"。

2,  yum方法安裝的,能夠用yum list installed 查找,若是是查找指定包,命令後加 | grep "軟件名或者包名"; 

     yum list installed gcc|grep gcc  若是沒有返回值則表示沒有安裝

3,  若是是以源碼包本身編譯安裝的,例如.tar.gz或者tar.bz2形式的,這個只能看可執行文件是否存在了, 

   上面兩種方法都看不到這種源碼形式安裝的包。若是是以root用戶安裝的,可執行程序一般都在/sbin:/usr/bin目錄下

相關文章
相關標籤/搜索