1. 程式人生 > >FastDFS與Nginx整合

FastDFS與Nginx整合

最近考慮在專案中使用檔案伺服器來儲存圖片檔案,FastDFS 是一個開源的輕量級的分散式檔案系統,由 tracker server(跟蹤伺服器) 、storage server(儲存伺服器) 、client(客戶端) 三部分組成,主要解決了海量資料儲存問題,特別適合中小檔案( 4KB<file_size<500MB)為載體的服務。FastDFS 的叢集搭建比較複雜,對於想要學習 FastDFS 的初學者來說,搭建一個單機版的作為入門更容易一些,接下來我們進行整合。

一 搭建虛擬環境

FastDFS 需要在 Linux 系統上進行安裝,在 Windows 系統下我們可以藉助虛擬環境來安裝 FastDFS ,需要使用 Vmware 12 建立虛擬機器。關於如何安裝最小化虛擬機器,大家可以參考 

https://blog.csdn.net/weixin_39453325/article/details/82936158 這篇部落格。

二 配置靜態IP且能上網

大家可以參考 https://blog.csdn.net/weixin_39453325/article/details/82938275 這篇部落格進行學習,實現靜態IP的配置。

三 上傳安裝所需安轉包到虛擬機器中

大家可以在 https://download.csdn.net/download/weixin_39453325/10702688 下載 FastDFS 和 Nginx 整合所需安裝包,並利用 SecureCRT 的 SFTP 命令傳輸檔案到我們安裝的虛擬機器中去。如何上傳檔案到虛擬機器中去大家可以參考 

https://blog.csdn.net/weixin_39453325/article/details/82940750 這篇部落格。安裝包上傳完畢後,我們把我們所需要的所有安裝包移動到 "/usr/local/software" 目錄下。

四 安裝libfastcommon

1. 安裝zip和unzip命令,用於解壓 .zip 結尾的檔案。

yum -y install unzip zip

2. 解壓libfastcommon-master.zip包到 "/usr/local/fast/" 下,如圖所示,並進入到 libfastcommon-master 目錄下。

[[email protected]
software]# unzip libfastcommon-master.zip -d /usr/local/fast/

 3. 安裝gcc和perl

[[email protected] libfastcommon-master]# yum -y install gcc gcc-c++ make automake autoconf libtool perl

4.  編譯安裝,安裝成功後有如下圖所示的介面,圖中紅色標註的內容是 libfastcommon.so 預設的安裝位置。

[[email protected] libfastcommon-master]# ./make.sh && ./make.sh install

 5. 建立軟連結,FastDFS 主程式設定的目錄為 /usr/local/lib/ ,所以我們需要建立 /usr/lib64/ 下的一些核心執行程式的軟連結檔案(相當於 Windows 中的快捷方式),如下圖所示。

可以在 /usr/local/lib 下檢視到該連結如下圖所示。

 至此 libfastcommon 安裝完畢,接下來安裝 FastDFS 。

五 安裝FastDFS

1. 解壓 fastdfs-5.05.tar.gz 包到 "/usr/local/fast" 下,如下圖所示,並進入 fastdfs-5.05 目錄下。

[[email protected] software]# tar -zxvf fastdfs-5.05.tar.gz -C /usr/local/fast/

2. 編譯安裝後有如下所示介面。

[[email protected] fastdfs-5.05]# ./make.sh && ./make.sh install

3. 安裝完成後,服務指令碼位置如下

配置檔案位置如下

FastDFS一系列執行指令碼如下,其中有上傳檔案指令碼、下載檔案指令碼等

4. 因為 FastDFS 服務指令碼設定的 bin 目錄為 /usr/local/bin 下,但我們實際安裝在 /usr/bin 下,所以我們要修改 FastDFS 配置檔案中的路徑,需要修改以下兩個配置檔案。

4.1 使用以下命令進入編輯模式,然後直接輸入":",游標定位到最後一行,在":"後輸入"%s+/usr/local/bin+/usr/bin",如下圖所示,輸入完之後回車,會提示我們修改了 7 處。

[[email protected] bin]# vi /etc/init.d/fdfs_trackerd

4.2 使用以下命令進入編輯模式,然後直接輸入":",游標定位到最後一行,在":"後輸入"%s+/usr/local/bin+/usr/bin",如下圖所示,輸入完之後回車,同樣會提示我們修改了 7 處。

[[email protected] bin]# vi /etc/init.d/fdfs_storaged

 

5. 配置 tracker (跟蹤器)。

5.1 進入/etc/fdfs目錄下,複製一份 tracker.con.sample 並命名為 tracker.conf ,如下圖所示(與此同時我們也複製了一份storage.conf.sample 與 client.conf.sample 後面會編輯到)。

5.2 在 /opt/ 下建立一個資料夾 tracker 。

[[email protected] fdfs]# mkdir /opt/tracker

5.3 編輯 tracker.conf ,修改 base_path 的值為 /opt/tracker (設定 tracker 的資料檔案目錄和日誌目錄),如下圖所示。

[[email protected] fdfs]# vi tracker.conf

5.4 配置防火牆,開放 tracker 使用的 22122 埠,如下圖所示。

[[email protected] fdfs]# vi /etc/sysconfig/iptables

 5.5 重啟防火牆。

5.6 未啟動 tracker 之前,/opt/tracker 目錄下沒有任何檔案,如下圖所示。

啟動 tracker 後,可以看到這個目錄下多了一個 data 和 logs 目錄,如下圖所示。

5.7 設定開機自啟動,如下圖所示。

[[email protected] tracker]# vi /etc/rc.d/rc.local

6 配置 storage (儲存器)。

6.1 進入到 /etc/fdfs 目錄下,複製一份 storage.conf.simple 並命名為 storage.conf ,我們在步驟 5.1 已經實現。 

6.2 在 /opt/ 下建立一個資料夾 storage。

[[email protected] fdfs]# mkdir /opt/storage

6.3 編輯 storage.conf 配置檔案,修改以下4個地方,第一張圖是設定 storage 資料檔案目錄和日誌目錄,第二張圖是設定實際檔案儲存路徑,第三張圖的 tracker_server 的IP為我們自己配置的我的目標機IP(大家需根據自己的虛擬機器 IP 自行設定),第四張圖是設定 http 埠號。

[[email protected] fdfs]# vi storage.conf

6.4 配置防火牆,允許訪問 storage 預設的 23000 埠,如下圖所示。

[[email protected] fdfs]# vi /etc/sysconfig/iptables

6.5 重啟防火牆。

6.6 未啟動 tracker 之前,/opt/storage 目錄下沒有任何檔案,如下圖所示。

啟動 storage 後,可以看到這個目錄下多了一個 data 和 logs 目錄,如下圖所示。

6.7 檢視 FastDFS tracker 和 storage 是否啟動成功,啟動成功的資訊如下所示。

 6.8 檢視 storage 伺服器是否已經登記到 tracker 伺服器( stracker 與 storage 是否整合成功),如下圖所示看到 192.168.20.88 ACTIVE 字樣即可說明 storage 伺服器已經成功登記到 tracker 伺服器上。

6.9 檢視 /opt/storage/data/ 目錄,可看到一級目錄是從 00 到 FF 的,每個一級目錄下都有一層二級目錄,從 00 到 FF ,兩級共  256*256 個目錄。

6.10 設定開機自啟動,如下圖所示。

[[email protected] data]# vi /etc/rc.local

7 配置 client (客戶端)。

7.1 進入到 /etc/fdfs 目錄下,複製一份 client.conf.simple 並命名為 client.conf ,我們在步驟 5.1 已經實現。

7.2 編輯 client.conf ,修改以下兩項內容,第一張圖是 tracker 伺服器檔案路徑,第二張圖是 tracker 伺服器 IP 地址和埠號。

[[email protected] fdfs]# vi client.conf

8 上傳圖片測試。

8.1 利用 SecureCRT 的 SFTP 命令上傳一張圖片到 /opt 目錄下,上傳成功後,如下圖所示。

8.2 找到命令指令碼位置,使用命令進行檔案上傳。

 8.3 使用上傳命令上傳檔案,如下圖所示,返回了一個儲存圖片的位置,則說明已經上傳成功。

我們也可以在之前配置的 storage 伺服器的實際檔案儲存路徑中根據返回的路徑找到實際檔案,如下圖所示。

六 FastDFS與Nginx整合

1 先安裝 Nginx ,大家可以參考 https://blog.csdn.net/weixin_39453325/article/details/82942479 這篇部落格進行安裝。

2 解壓 fastdfs-nginx-module_v1.16.tar.gz (FastDFS 與 Nginx 結合的模組安裝包)到 /usr/local/fast 目錄下。

[[email protected] software]# tar -zxvf fastdfs-nginx-module_v1.16.tar.gz -C /usr/local/fast/

 3 進入 fastdfs-nginx-module/src 目錄下,可看到 config 檔案,修改 config 檔案,把檔案第四行配置中的 /usr/local/include 都改為 /usr/include ,一共需改兩處,如下圖所示。

[[email protected] src]# vi config

 4 FastDFS 與 Nginx 相結合。

4.1 刪除安裝 Nginx 時生成的 nginx 目錄。

由於我們在 FastDFS 與 Nginx 整合的第一步已經安裝好了 Nginx ,並在 /usr/local 目錄下生成一個 nginx 目錄了,如下圖所示。

為了整合 FastDFS 與 Nginx ,我們先把這個 nginx 目錄刪除如下圖所示,可以看到 nginx 目錄已經消失了。 

4.2 進入 nginx-1.6.2 目錄下執行配置和編譯安裝。

輸入以下命令進行配置,配置成功後有如下介面。

[[email protected] local]# cd nginx-1.6.2/
[[email protected] local]# ./configure --add-module=/usr/local/fast/fastdfs-nginx-module/src/

 輸入以下命令進行安裝,如下圖所示是安裝成功後的介面。

make && make install

5 複製 fastdfs-nginx-module 中的配置檔案到 /etc/fdfs 目錄下,並修改該配置檔案。

複製 mod_fastdfs.conf 檔案到 /etc/fdfs 目錄下,如下圖所示。

輸入以下命令修改配置檔案。第一項是連線超時時長,第二項是 tracker 伺服器的 IP 地址及埠號,第三項是允許外界通過 http 方式訪問資源,第四項是儲存路徑。

[[email protected] fdfs]# vi mod_fastdfs.conf

6 複製 fastdfs 裡的兩個檔案到 /etc/fdfs 目錄下。

7 建立軟連結,在 /opt/storage 檔案儲存目錄下建立軟連結,將其連結到實際存放資料的目錄,如下圖所示。

 可在 /opt/storage/data/M00 下檢視該連結,如下圖所示。

8 進入到整合生成的 /urs/local/nginx 目錄下,進入 conf 目錄,修改 nginx.conf 配置檔案,如下圖所示。

​[[email protected] conf]# vi nginx.conf

 9 啟動 nginx ,如下圖所示為啟動成功的介面。 

10 配置防火牆,開放 8888 埠,允許外界通過 8888 埠來訪問圖片。

[[email protected] conf]# vi /etc/sysconfig/iptables

 11 重新啟動防火牆。

12 設定 nginx 開機自啟動,這樣在重新啟動裝置後,tracker、storage、nginx 都自動啟動了,可直接使用服務。

[[email protected] conf]# vi /etc/rc.d/rc.local

 13 在瀏覽器中通過 http 訪問我們剛才上傳的圖片了(在安裝 FastDFS 的第 8.3 步返回的儲存圖片的位置),如下圖所示。

一切正常~,關於 FastDFS 與 Nginx 的整合部署測試已經成功完成。