FastDFS圖片伺服器搭建

来源:https://www.cnblogs.com/mvpcyh/archive/2018/12/17/10130927.html
-Advertisement-
Play Games

*FastDFS圖片伺服器搭建準備:1.需要libfastcommon安裝包 選擇最新穩定版(libfastcommon-1.0.36.tar.gz)2.需要FastDFS安裝包 選擇最新穩定版(fastdfs-5.11.tar.gz)3.需要Nginx安裝包 選擇最新穩定版(nginx-1.12. ...


*FastDFS圖片伺服器搭建準備:
1.需要libfastcommon安裝包 選擇最新穩定版(libfastcommon-1.0.36.tar.gz)
2.需要FastDFS安裝包 選擇最新穩定版(fastdfs-5.11.tar.gz)
3.需要Nginx安裝包 選擇最新穩定版(nginx-1.12.2.tar.gz)
4.需要fastdfs-nginx-modual模塊安裝包 選擇最新版(fastdfs-nginx-module-master.zip 版本1.20,對應fastdfs-5.11)
註意:--------fastdfs-nginx-module-master.zip版本1.19對應fastdfs-5.11---------
-------------- 常見的fastdfs-nginx-module_v1.16.tar.gz在這裡不推薦安裝,安裝過程有可能出問題 --------------------
*安裝依賴環境*:命令安裝:
 gcc
安裝nginx需要先將官網下載的源碼進行編譯,編譯依賴gcc環境,如果沒有gcc環境,需要安裝gcc。 
命令 yum -y install gcc gcc-c++
 PCRE
PCRE(Perl Compatible Regular Expressions)是一個Perl庫,包括 perl 相容的正則表達式庫。nginx的http模塊使用pcre來解析正則表達式,所以需要在linux上安裝
pcre庫。 
命令:yum install -y pcre pcre-devel
 zlib
zlib庫提供了很多種壓縮和解壓縮的方式,nginx使用zlib對http包的內容進行gzip,所以需要在linux上安裝zlib庫。 
命令:yum install -y zlib zlib-devel 
 openssl
OpenSSL 是一個強大的安全套接字層密碼庫,囊括主要的密碼演算法、常用的密鑰和證書封裝管理功能及SSL協議,並提供豐富的應用程式供測試或其它目的使用。
nginx不僅支持http協議,還支持https(即在ssl協議上傳輸http),所以需要在linux安裝openssl庫。
命令:yum install -y openssl openssl-devel
 libevent
命令:yum -y install libevent
1.安裝fastdfs
  1.1上傳依賴包(xftp上傳):
    1.1.1 libfastcommon-1.0.36.tar.gz
    1.1.2 fastdfs-5.11.tar.gz
    1.1.3 nginx-1.12.2.tar.gz
    1.1.4 fastdfs-nginx-module-master.zip --版本1.20
  1.2 安裝libfastcommon-1.0.36.tar.gz工具包
    1.2.1解壓libfastcommon-1.0.36.tar.gz 
    命令:tar zxvf libfastcommon-1.0.36.tar.gz 
完成之後會在libfastcommon-1.0.36文件夾下多出一個make.sh文件,供編譯使用
    1.2.2編譯libfastcommon-1.0.36 
    命令:./make.sh 
    1.2.3安裝libfastcommon-1.0.36
命令:./make.sh install 
安裝完成之後會在 /usr/lib64和/usr/lib下生成 libfastcommon.so;如果是比較低的版本只會在lib64下麵生成;如果是32位系統就應該copy一份
libfastcommon.so到lib文件夾下(先進入lib64文件夾執行命令:cp libfastcommon.so ../lib)
  1.3安裝fastdfs-5.11.tar.gz
    1.3.1解壓fastdfs-5.11.tar.gz
    命令:tar zxvf fastdfs-5.11.tar.gz
解壓完成之後會解壓到astdfs-5.11文件夾下,進入之後會看到make.sh文件,供編譯使用
    1.3.2編譯astdfs-5.11
    命令:./make.sh
    1.3.3安裝FastDFS
    命令:./make.sh install
    1.3.4如果沒有報錯那麼就成功了安裝log中會提示astdfs-5.11安裝到了/etc/fdfs目錄下,查看安裝目錄
    命令:ll /etc/fdfs/
會看到client.conf.sample,storage.conf.sample,tracker.conf.sample這三個文件
我們需要把這三個示例文件複製一份,去掉.sample作為後續配置文件
命令:cp client.conf.sample client.conf
命令:cp storage.conf.sample storage.conf
命令:cp tracker.conf.sample tracker.conf
而且安裝完成之後會在/usr/bin文件下麵多出一些fdfs_*的命令,進入查看
命令:ll fdfs_*
-----------------顯示如下--------------------------------------------
-rwxr-xr-x. 1 root root 314463 Apr 1 14:07 fdfs_appender_test
-rwxr-xr-x. 1 root root 310144 Apr 1 14:07 fdfs_appender_test1
-rwxr-xr-x. 1 root root 297016 Apr 1 14:07 fdfs_append_file
-rwxr-xr-x. 1 root root 296716 Apr 1 14:07 fdfs_crc32
-rwxr-xr-x. 1 root root 297083 Apr 1 14:07 fdfs_delete_file
-rwxr-xr-x. 1 root root 297810 Apr 1 14:07 fdfs_download_file
-rwxr-xr-x. 1 root root 297392 Apr 1 14:07 fdfs_file_info
-rwxr-xr-x. 1 root root 315309 Apr 1 14:07 fdfs_monitor
-rwxr-xr-x. 1 root root 320303 Apr 1 14:07 fdfs_test
-rwxr-xr-x. 1 root root 319520 Apr 1 14:07 fdfs_test1
-rwxr-xr-x. 1 root root 298002 Apr 1 14:07 fdfs_upload_appender
-rwxr-xr-x. 1 root root 303126 Apr 1 14:07 fdfs_upload_file
--------------------------------------------------------------------- 
  1.4安裝tracker服務
    1.4.1配置tracker
      1.4.1.1首選使用mkdir -p遞歸創建目錄命令,創建了/usr/local/fast/fastdfs-5.11/data/tracker目錄來保存tracker的data和log 根據個人習慣
      命令:mkdir -p /usr/local/fast/fastdfs-5.11/data/tracke
      1.4.1.2修改tracker.conf
      命令:vim /etc/fdfs/tracker.conf
      打開後重點關註下麵4個配置:
      1.disabled=false 
      2.port=22122 #預設埠號 
      3.base_path=/usr/local/fast/fastdfs-5.11/data/tracke #我剛剛創建的目錄 
      4.http.server_port=8080 #預設埠是8080
----------------------------------------保存退出-----------------------------------------------
      1.4.1.3給firewalld添加開放tracker.conf配置文件中的22122和8080兩個埠。在firewall正常運行的情況下輸入以下命令:
      命令:firewall-cmd --zone=public --add-port=8080/tcp --permanent #添加8080埠
      命令:firewall-cmd --zone=public --add-port=22122/tcp --permanent #添加22122埠 
      ------------顯示success的話就代表已成功加入,重啟firewalld既可-----------------------
      如果想檢查相應埠是否開啟,先重啟firewalld
      命令:systemctl restart firewalld #重啟firewalld,要不然下一步查詢會返回NO
      命令:firewall-cmd --query-port=8080/tcp --zone=public #查詢8080埠是否開啟
      命令:firewall-cmd --query-port=22122/tcp --zone=public #查詢22122埠是否開啟
      ------------返回no既未開啟,顯示Yes為已開啟-----------------------------------------
      1.4.1.4保存配置後啟動tracker,命令如下
      命令:service fdfs_trackerd start
      成功後可以看到: Starting fdfs_trackerd (via systemctl): [ OK ]
      並且,發現剛剛創建的目錄中多了data和log兩個目錄,命令查看
      命令:ll /usr/local/fast/fastdfs-5.11/data/tracke
      1.4.1.5設置tracker開機啟動
      命令:echo "service fdfs_trackerd start" |tee -a /etc/rc.d/rc.local
      1.4.1.6查看tracker的埠監聽情況
      命令:netstat -unltp|grep fdfs
      ---------------------------------------------------------------------------------
      tcp 0 0 0.0.0.0:22122 0.0.0.0:* LISTEN 70382/fdfs_trackerd
      --------------------------------------------------------------------------------- 
  1.5安裝storage服務
    1.5.1配置storage
      1.5.1.1首選使用mkdir -p遞歸創建目錄命令,創建了/usr/local/fast/fastdfs-5.11/data/storage/0目錄在/usr/local/fast/fastdfs-5.11/data/storage
      下保存storage的data和log ,/usr/local/fast/fastdfs-5.11/data/storage/0下保圖片文件
      命令:mkdir -p /usr/local/fast/fastdfs-5.11/data/storage/0
    1.5.2修改storage.conf
      命令:vim /etc/fdfs/storage.conf
      打開後重點關註下麵9個配置:
      1.disabled=false 
      2.group_name=group1 #組名,根據實際情況修改 
      3.port=23000 #設置storage的埠號,預設是23000,同一個組的storage埠號必須一致 
      4.base_path=/usr/local/fast/fastdfs-5.11/data/storage #設置storage數據文件和日誌目錄 
      5.store_path_count=1 #存儲路徑個數,需要和store_path個數匹配 
      6.store_path0=/usr/local/fast/fastdfs-5.11/data/storage/0 #實際圖片文件存儲路徑 
      7.#store_path1=/home/yuqing/fastdfs2 #如果掛載了不同的磁碟就可以配置store_path1 .. 等等
      8.tracker_server=192.168.153.201:22122 #我CentOS7的ip地址 
      9.http.server_port=8888 #設置 http 埠號,預設8888
      ----------------------------------------保存退出----------------------------------------------
    1.5.3給firewalld添加開放storage.conf配置文件中的23000和8888兩個埠。在firewall正常運行的情況下輸入以下命令:
    命令:firewall-cmd --zone=public --add-port=23000/tcp --permanent #添加23000埠
    命令:firewall-cmd --zone=public --add-port=8888/tcp --permanent #添加8888埠 
      ------------顯示success的話就代表已成功加入,重啟firewalld既可-----------------------
    如果想檢查相應埠是否開啟,先重啟firewalld
    命令:systemctl restart firewalld #重啟firewalld,要不然下一步查詢會返回NO
    命令:firewall-cmd --query-port=23000/tcp --zone=public #查詢23000埠是否開啟
    命令:firewall-cmd --query-port=8888/tcp --zone=public #查詢8888埠是否開啟
      ------------返回no既未開啟,顯示Yes為已開啟-----------------------------------------
    1.5.4保存配置後啟動storage,命令如下
    命令:service fdfs_storaged start
    成功後可以看到: Starting fdfs_storaged (via systemctl): [ OK ]
    並且,發現剛剛創建的目錄/usr/local/fast/fastdfs-5.11/data/storage 下多了data和log兩個目錄。
(重點註意:/usr/local/fast/fastdfs-5.11/data/storage/0下多了個data,在data下有很多二進位文件夾,用來存儲圖片文件)
    命令:ll /usr/local/fast/fastdfs-5.11/data/storage/0/data
    1.5.5設置storage開機啟動
    命令:echo "service fdfs_storaged start" |tee -a /etc/rc.d/rc.local
    1.5.6查看storage的埠監聽情況
    命令:netstat -unltp|grep fdfs
    ---------------------------------------------------------------------------------
    tcp 0 0 0.0.0.0:22122 0.0.0.0:* LISTEN 2231/fdfs_trackerd
    tcp 0 0 0.0.0.0:23000 0.0.0.0:* LISTEN 2323/fdfs_storaged
    ---------------------------------------------------------------------------------
  1.6確定一下,storage是否註冊到了tracker中去
    命令/usr/bin/fdfs_monitor /etc/fdfs/storage.conf
    成功後可以看到其中有一下字樣: 
    id = 192.168.153.201
    ip_addr = 192.168.153.201 ACTIVE
  1.7測試上傳:
    1.7.1同樣的,需要修改客戶端的配置文件:
    命令:vim /etc/fdfs/client.conf
    打開後重點關註下麵3個配置:
    1.base_path=/usr/local/fast/fastdfs-5.11/data/tracker #tracker伺服器文件路徑
    2.tracker_server=192.168.153.201:22122 #tracker伺服器IP地址和埠號
    3.http.tracker_server_port=8080 #tracker 伺服器的 http埠號,必須和tracker的設置對應起來
----------------------------------------保存退出---------------------------------------------------------------------------------
    1.7.2上傳圖片:
      1.7.2.1輸入上傳圖片命令:
      命令: /usr/bin/fdfs_upload_file /etc/fdfs/client.conf /圖片路徑/1.png #這後面放的是圖片的位置
      成功後會返回圖片的路徑:group1/M00/00/00/wKiZyVrGEhmAWotNAAQedSwYknA415_big.png
--------------------------------------------------------------------------------------------------------------------------------
    組名:group1 
    磁碟:M00 
    目錄:00/00 
    文件名稱:wKiZyVrGEhmAWotNAAQedSwYknA415_big.jpg
--------------------------------------------------------------------------------------------------------------------------------
      1.7.2.2我們上傳的圖片會被上傳到我們創建的/usr/local/fast/fastdfs-5.11/data/storage/0/data/00/00目錄下,讓我們去看看
      應該會有:wKiZyVrGEhmAWotNAAQedSwYknA415_big.jpg
      我們仔細看一下,實際文件存儲路徑下有創建好的多級目錄。data下有256個1級目錄,每級目錄下又有256個2級子目錄,總共65536個文件,新寫的文件會以
      hash的方式被路由到其中某個子目錄下,然後將文件數據直接作為一個本地文件存儲到該目錄中。
---------------------------------------------------------------------------------------------------------------------------------
  1.8訪問上傳的圖片: 
    1.8.1如果要訪問剛上傳的圖片,我們得需要結合nginx來實現原因如下:
    1.我們在使用FastDFS部署一個分散式文件系統的時候,通過FastDFS的客戶端API來進行文件的上傳、下載、刪除等操作。同時通過FastDFS的HTTP伺服器來提供HTTP
   服務。但是FastDFS的HTTP服務較為簡單,無法提供負載均衡等高性能的服務,所以FastDFS的開發者——淘寶的架構師餘慶同學,為我們提供了Nginx上使用的FastDFS
   模塊(也可以叫FastDFS的Nginx模塊)。
    2.FastDFS通過Tracker伺服器,將文件放在Storage伺服器存儲,但是同組之間的伺服器需要複製文件,有延遲的問題.假設Tracker伺服器將文件上傳到了172.20.132.57,
   文件ID已經返回客戶端,這時,後臺會將這個文件複製到172.20.132.57,如果複製沒有完成,客戶端就用這個ID在172.20.132.57取文件,肯定會出現錯誤。這個
   fastdfs-nginx-module可以重定向連接到源伺服器取文件,避免客戶端由於複製延遲的問題,出現錯誤。 正是這樣,FastDFS需要結合nginx,所以取消原來對HTTP的
   直接支持。
------------------------------------------------------------------------------------------------------------------------------------
    1.8.2安裝nginx並添加fastdfs-nginx-module
      1.8.2.1解壓nginx-1.12.2.tar.gz,和fastdfs-nginx-module-master.zip
      命令:tar -zxvf nginx-1.12.2.tar.gz
      命令:unzip fastdfs-nginx-module-master.zip
      1.8.2.2解壓後進入nginx-1.12.2目錄編譯安裝nginx,並添加fastdfs-nginx-module:fastdfs-nginx-module-master模塊
      命令:./configure --prefix=/usr/local/nginx --add-module=../fastdfs-nginx-module-master/src #解壓後fastdfs-nginx-module所在的位置
      (執行完之後會在nginx-1.12.2目錄下生成Makefile文件,為下一步編譯使用)
      1.8.2.2 編譯:
      命令:make
      1.8.2.3 安裝:
      命令:make install 
      1.8.2.4 nginx的安裝目錄是/usr/local/nginx,安裝成功後查看
      命令:ls /usr/local/nginx/
      應該會有:conf html logs sbin 這幾個文件夾,其中nginx.conf在/usr/local/nginx/conf目錄下
      1.8.2.5 修改nginx.conf配置:
      命令:vim /etc/fdfs/tracker.conf
        1.8.2.5.1跟server節點評級配置反向代理fdfs_group1
        upstream fdfs_group1 { #配置反向代理fdfs_group1
          server 127.0.0.1:9991; #監聽 9991
        }
        1.8.2.5.2打開後新添加一個如下server節點:
        server {
            listen 9991;
            server_name localhost; 
            location / { #9991埠攔截的URL:9991/
            root html;
            index index.html index.htm;
             } 
        location ~/group1/M00 { #重點:9991埠攔截的請求路徑
            root /usr/local/fast/fastdfs-5.11/data/storage/0/data; #重點:圖片文件存儲路徑
            ngx_fastdfs_module; #nginx-fastdfs-modual的名字:ngx_fastdfs_module
             } #只要不在它的confrgure中改動,不管那個版本都叫:
        error_page 500 502 503 504 /50x.html; #ngx_fastdfs_module
        location = /50x.html {
        root html;
             }
          }
        1.8.2.5.3編輯Nginx原有80埠的server節點,添加反向代理的URL
         server {
              listen 80;
              server_name localhost;
          location /group1/M00 { #80埠攔截的URL:80/group1/M00
          proxy_pass http://fdfs_group1; #反向代理的URL
              }
          error_page 500 502 503 504 /50x.html;
          location = /50x.html {
          root html;
              }
            }
----------------------------------------保存退出-------------------------------------------------
        1.8.2.5.4在此給firewalld添加開放nginx.conf配置文件中的9991埠。在firewall正常運行的情況下輸入以下命令:
        命令:firewall-cmd --zone=public --add-port=9991/tcp --permanent #添加9991埠 
        ------------顯示success的話就代表已成功加入,重啟firewalld既可-----------------------
        如果想檢查相應埠是否開啟,先重啟firewalld
        命令:systemctl restart firewalld #重啟firewalld,要不然下一步查詢會返回NO
        命令:firewall-cmd --query-port=9991/tcp --zone=public #查詢9991埠是否開啟
        ------------返回no既未開啟,顯示Yes為已開啟-----------------------------------------
        1.8.2.5.5重啟nginx
        命令:/usr/local/nginx/sbin/nginx -s reload
        1.8.2.5.6現在我們再去訪問一下,原來我們上傳過的文件:
        http://192.168.153.201/group1/M00/00/00/wKiZyVrQkrKAfBRmAAQedSwYknA095.png
        或者:
        http://192.168.153.201:9991/group1/wKiZyVrQkrKAfBRmAAQedSwYknA095.png
        或者:
        http://192.168.153.201:80/group1/M00/00/00/wKiZyVrQkrKAfBRmAAQedSwYknA095.png
--------------------------------------------------------測試成功-----------------------------------------------------------


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 原文地址:https://www.cnblogs.com/Csir/p/6746667.html 前言 centos7與6之間最大的差別就是初始化技術的不同,7採用的初始化技術是Systemd,並行的運行方式,除了這一點之外,服務啟動、開機啟動文件、網路命令方面等等,都說6有所不同。讓我們先來瞭解一 ...
  • 1.守護進程也稱精靈進程( Daemon),是運行在後臺的一種特殊進程。它獨立於控制終端並且周期性地執行某種任務或等待處理某些發生的事件。 Linux系統啟動時會啟動很多系統服務進程,這些系統服務進程沒有控制終端,不能直接和用戶交互。其它進程都是在用戶登錄或運行程式時創建,在運行結束或用戶註銷時終止 ...
  • 最近同事需要在單位提供的開發機上臨時安裝 等軟體,時間緊迫,因此向其推薦安裝福利 . 感謝 ,使得 軟體 無比的快捷, 也是無與倫比的簡單. gcc 7.3.1安裝 註意事項: 安裝 後,需要使用 啟動 (`gcc 7.3.1`); 啟動 後僅針對本次會話有效,若退出登陸或者下線重啟後,需要再次激活 ...
  • 命名管道的主要用途:不相關的進程之間交換數據。 命令行上創建命名管道: 程式中創建命名管道: 備註:#include <sys/types.h>是Unix/Linux系統的基本系統數據類型的頭文件,含有Size_t,time_t,pid_t等類型。 #include<sys/stat.h>是Unix ...
  • 1 ./kafka-consumer-groups.sh --list --bootstrap-server kafka:9092 ...
  • 什麼是crontab?crontab 是一個用於設置周期性執行任務的工具 ...
  • #!/bin/bash ############################################################################## # File Name : Linux system config # description : This scri... ...
  • 1.基本語法 2.自動加入文件頭 在etc/vimic 源碼: 3.修改為不提示自動創建(也可以提示自動創建) 源碼: 3.shell的高亮顯示 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...