一、前言
本文中使用本地VM虛機部署測試。
OS:CentOS Linux release 7.8.2003 (Core) 3.10.0-1160.15.2.el7.x86_64
IP:192.168.168.100
外部Nginx伺服器IP:192.168.168.103
虛機配置:2核CPU、4G內存
防火牆設置:CentOS 7.8默認使用firewall,本文中禁用firewall,使用iptables。
軟體說明:
| 軟體 | 版本號 | 安裝路徑 |
| fastdfs | 6.07 | 默認路徑 |
| libfastcommon | 1.0.49 | 默認路徑 |
| fastdfs-nginx-module | 1.22 | /usr/local/nginx-mod/fastdfs-nginx-module-1.22 |
| nginx | 1.20.0 | /usr/local/nginx |
目錄說明:
| 目錄 | 用途 |
| /data/tools | 存放軟體源碼安裝包 |
| /data/fastdfs/ | FastDFS數據存儲位置(包含數據data和日誌logs) |
二、基礎環境
1.安裝依賴
yum -y install gcc gcc-c++ libevent libevent-devel zlib zlib-devel pcre-devel perl2.安裝libfatscommon函數庫
libfastcommon是FastDFS官方提供的,libfastcommon包含了FastDFS運行所需要的一些基礎庫。
下載地址:
https://github.com/happyfish100/libfastcommon/releases
根據需求選擇合適的版本進行下載安裝。本文中使用的是最新穩定版本。
①安裝方式一
cd /data/tools
wget -O libfastcommon-1.0.49.tar.gz https://github.com/happyfish100/libfastcommon/archive/V1.0.49.tar.gz
tar xf libfastcommon-1.0.49.tar.gz
cd libfastcommon-1.0.49/
./make.sh
./make.sh install②安裝方式二
yum -y install git
cd /data/tools
git clone https://github.com/happyfish100/libfastcommon.git
cd libfastcommon
git checkout V1.0.49
./make.sh clean
./make.sh
./make.sh install三、安裝FastDFS
1.安裝
下載地址:
https://github.com/happyfish100/fastdfs/releases
根據需求選擇合適的版本進行下載安裝。本文中使用的是最新穩定版本。
cd /data/tools
wget -O fastdfs-6.07.tar.gz https://github.com/happyfish100/fastdfs/archive/V6.07.tar.gz
tar xf fastdfs-6.07.tar.gz
cd fastdfs-6.07
./make.sh
./make.sh install2.相關文件和目錄
默認安裝方式安裝後的相應文件與目錄
| 描述 | 目錄 |
| 服務腳本 | /etc/init.d/fdfs_storaged/etc/init.d/fdfs_trackerd |
| 樣例配置文件 | /etc/fdfs/client.conf.sample/etc/fdfs/storage.conf.sample/etc/fdfs/tracker.conf.sample |
| 命令工具 | /usr/bin/fdfs_appender_test | fdfs_appender_test1 | fdfs_append_file | fdfs_crc32 | fdfs_delete_file | fdfs_download_file | fdfs_file_info | fdfs_monitor | fdfs_regenerate_filename | fdfs_storaged | fdfs_test | fdfs_test1 | fdfs_trackerd | fdfs_upload_appender | fdfs_upload_file |
四、配置FastDFS
1.跟蹤器(Tracker)
①創建tracker基礎數據目錄
mkdir -p /data/fastdfs/tracker②進入/etc/fdfs,複製 FastDFS 跟蹤器樣例配置文件 tracker.conf.sample,並重命名為 tracker.conf
cd /etc/fdfs
cp tracker.conf.sample tracker.conf③編輯tracker.conf
vi /etc/fdfs/tracker.conf
//修改如下配置項
# Tracker服務的埠(默認22122,一般不修改)
port = 22122
# Tracker服務數據和日誌目錄地址(根目錄必須存在,子目錄會自動創建)
base_path = /data/fastdfs/tracker
# HTTP 服務埠 默認8080,可根據需求修改
http.server_port = 8180註:①上述配置項的修改僅供參考,實際環境中請根據需求修改調整。
②若tracker和storage部署在不同伺服器,或外部調用程序在不同伺服器,則需放開埠。
④啟動Tracker
## 首次啟動必須使用下列命令啟動。後續可使用systemctl管理

/etc/init.d/fdfs_trackerd start
⑤服務檢查
## 查看 FastDFS Tracker 是否已成功啟動 ,如下圖所示則成功
systemctl status fdfs_trackerd
## 埠監聽
netstat -tulnp|grep fdfs
⑥Tracker Server 目錄及文件結構
Tracker服務啟動成功後,會在base_path(本文中目錄為:/data/fastdfs/tracker )下創建data、logs兩個目錄。目錄結構如下:
ls -al /data/fastdfs/tracker 或 ll /data/fastdfs/tracker
//目錄結構如下
|__data
| |__fdfs_trackerd.pid
| |__storage_changelog.dat
|__logs
| |__trackerd.log
⑦服務管理
啟動:/etc/init.d/fdfs_trackerd start 或 systemctl start fdfs_trackerd.service
關閉:/etc/init.d/fdfs_trackerd stop 或 systemctl stop fdfs_trackerd.service
重啟:/etc/init.d/fdfs_trackerd restart 或 systemctl restart fdfs_trackerd.service
開機啟動:chkconfig fdfs_trackerd on
查看狀態:/etc/init.d/fdfs_trackerd status 或 systemctl status fdfs_trackerd.service2.存儲(Storage)
①創建Storage數據和日誌目錄
mkdir -p /data/fastdfs/storage②進入 /etc/fdfs 目錄,複製 FastDFS 存儲器樣例配置文件 storage.conf.sample,並重命名為 storage.conf
cd /etc/fdfs
cp storage.conf.sample storage.conf③編輯storage.conf
vi /etc/fdfs/storage.conf
//修改如下配置項
# 指定此storage server所在組(卷)
group_name = group1
# storage服務埠(默認23000,一般不修改)
port = 23000
# storage的工作空間(數據和日誌文件存儲根目錄)
base_path = /data/fastdfs/storage
# storage的存儲空間,如果不配置,則為 base_path 的值(有多個存儲路徑時,每個存儲路徑寫一行,第一個為0,第二個為1,以此類推)
store_path0 = /data/fastdfs/storage
# Tracker伺服器的地址和埠號,用於心跳(有多個tracker server時,每個tracker server寫一行)
tracker_server = 192.168.168.102:22122
# http訪問文件的埠(默認8888,看情況修改,和nginx中保持一致)
http.server_port = 8888註:①上述配置項的修改僅供參考,實際環境中請根據需求修改調整。
②關於 store_path 項的配置,官方不推薦其配置值跟 base_path 項值一樣,建議使用不同目錄路徑。本文為測試,所配置的值為一樣。
④啟動Storage
systemctl start fdfs_storaged註:若tracker和storage部署在不同伺服器,首次啟動Storage必須使用 /etc/init.d/fdfs_storaged start 命令啟動。本文中tracker和storage部署在同一伺服器,在tracker伺服器已啟動的情況下,首次可使用systemctl來啟動storage服務。
⑤服務檢查
## 查看 Storage 是否成功啟動,23000 埠是否被監聽
systemctl status fdfs_storaged
## 查看服務埠23000是否被監聽
netstat -unltp | grep fdfs
## 查看Storage和Tracker是否在通信(ACTIVE表示正常)
/usr/bin/fdfs_monitor /etc/fdfs/storage.conf
⑥服務管理
啟動:/etc/init.d/fdfs_storaged start 或 systemctl start fdfs_storaged.service
關閉:/etc/init.d/fdfs_storaged stop 或 systemctl stop fdfs_storaged.service
重啟:/etc/init.d/fdfs_storaged restart 或 systemctl restart fdfs_storaged.service
開機啟動:chkconfig fdfs_storaged on
查看狀態:/etc/init.d/fdfs_storaged status 或 systemctl status fdfs_storaged.service3.客戶端(client)
①創建client數據和日誌目錄
mkdir -p /data/fastdfs/client②進入 /etc/fdfs 目錄,複製 FastDFS 客戶端樣例配置文件 client.conf.sample,並重命名為 client.conf
cd /etc/fdfs
cp client.conf.sample client.conf③編輯client.conf
vi /etc/fdfs/client.conf
//修改如下配置項
# Client 的數據和日誌目錄
base_path = /data/fastdfs/client
# Tracker伺服器地址及監聽埠
tracker_server = 192.168.168.102:22122
# Tracker服務的HTTP埠,必須和tracker的設置對應起來
http.tracker_server_port = 8180註:上述配置項的修改僅供參考,實際環境中請根據需求修改調整。
五、安裝Nginx及模塊
註:nginx需要和storage在同一個節點。
1.下載軟體包
cd /data/tools
wget http://nginx.org/download/nginx-1.20.0.tar.gz
wget -O fastdfs-nginx-module-1.22.tar.gz https://github.com/happyfish100/fastdfs-nginx-module/archive/V1.22.tar.gz2.安裝fastdfs-nginx-module模塊
mkdir -p /usr/local/nginx-mod
tar xf fastdfs-nginx-module-1.22.tar.gz
mv fastdfs-nginx-module-1.22 /usr/local/nginx-mod/## 修改配置文件
/usr/local/nginx-mod/fastdfs-nginx-module-1.22/src/config,主要是修改路徑,將配置文件中的 /usr/local/include 改為 /usr/include,因為fastdfs安裝的時候沒有修改路徑,原路徑是/usr。

3.複製並修改fastdfs-nginx-module中的配置文件
mkdir -p /data/fastdfs/tmp
//創建mod_fastdfs日誌目錄
cp /usr/local/nginx-mod/fastdfs-nginx-module-1.22/src/mod_fastdfs.conf /etc/fdfs/
vi /etc/fdfs/mod_fastdfs.conf
//修改如下配置項
# 連接超時時間
connect_timeout=10
# 日誌目錄
base_path=/data/fastdfs/tmp
# Tracker Server
tracker_server=192.168.168.102:22122
# StorageServer 埠,保持默認
storage_server_port=23000
# StorageServer 組名,需與storage.conf中的配置值一致
group_name=group1
# 如果文件ID的URL中需包含/group**,則要設置為true。默認值為false
url_have_group_name=false
# Storage 配置的store_path0路徑,必須與storage.conf中的一致
store_path0=/data/fastdfs/storage註:上述mod_fastdfs.conf配置項的修改僅供參考,實際環境中請根據需求修改調整。
4.安裝Nginx
本文中不贅述Nginx編譯安裝過程,具體步驟請參照本人之前發布的文章《CentOS7下編譯安裝Nginx-v1.20.0》,URL地址為:
https://www.toutiao.com/i6961593096903705092/
注意:運行configure配置時添加fastdfs-nginx-module模塊,命令如下:
./configure …… --add-module=/usr/local/nginx-mod/fastdfs-nginx-module-1.22/src5.複製 FastDFS 的部分配置文件到/etc/fdfs 目錄
cd /data/tools/fastdfs-6.07/conf/
cp http.conf mime.types /etc/fdfs/6.配置Nginx
添加fastdfs虛擬主機配置文件
vi /usr/local/nginx/conf/vhost/fastdfs.conf
//添加如下配置內容
server {
listen 8888;
server_name 192.168.168.100;
#location ~/group([0-9])/M00 {
location ~/M00 {
ngx_fastdfs_module;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}註:Listen埠必須要與storage.conf中的http.server_port相同,防火牆需放開埠
7.啟動Nginx
systemctl start nginx.service8.檢測NGINX配置文件會看到fastdfs模塊信息
/usr/local/nginx/sbin/nginx -t
六、測試
1.伺服器內使用命令上傳
## 創建測試目錄
mkdir -p /data/test
cd /data/test
//使用rz命令或通過其他方法從本地上傳一張圖片至該目錄,測試使用
ll /data/test
## 使用命令上傳圖片至FastDFS存儲
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf fastdfs.jpeg
## 如上圖所示,上傳成功後返迴文件路徑及ID:
group1/M00/00/00/wKioZGCc3OqAMGRnAAEGHsKL6hw44.jpeg
## 瀏覽器訪問
http://192.168.168.100:8888/M00/00/00/wKioZGCc3OqAMGRnAAEGHsKL6hw44.jpeg

2.伺服器內使用命令下載
## 下載圖片文件並重命名為test.jpg
/usr/bin/fdfs_download_file /etc/fdfs/client.conf group1/M00/00/00/wKioZGCc3OqAMGRnAAEGHsKL6hw44.jpeg test.jpg
3.伺服器內使用命令刪除
/usr/bin/fdfs_delete_file /etc/fdfs/client.conf group1/M00/00/00/wKioZGCc3OqAMGRnAAEGHsKL6hw44.jpeg## 執行刪除命令後,再次下載會報錯
/usr/bin/fdfs_download_file /etc/fdfs/client.conf group1/M00/00/00/wKioZGCc3OqAMGRnAAEGHsKL6hw44.jpeg test1.jpg
七、配置外部訪問的Nginx
在另一台伺服器(192.168.168.103)上配置Nginx訪問(負載均衡及反向代理),隱藏FastDFS真實伺服器。
## 編輯Nginx主配置文件nginx.conf,在http配置項中添加upstream項
vi /usr/local/nginx/conf/nginx.conf
//在http配置項中添加upstream項
upstream fastdfs_srv {
server 192.168.168.100:8888;
}## 新建訪問FastDFS相關虛擬主機配置文件,本文中為fastdfs.conf
vi /usr/local/nginx/conf/vhost/fastdfs.conf
//添加如下內容
server {
listen 80;
server_name 192.168.168.103;
location /files {
proxy_next_upstream http_502 http_504 error timeout invalid_header;
proxy_pass http://fastdfs_srv/;
expires 30d;
}
}## 重新載入配置
/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s reload## 測試,使用瀏覽器訪問
http://192.168.168.103/files/M00/00/00/wKioZGCc3OqAMGRnAAEGHsKL6hw44.jpeg

原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/268328.html
微信掃一掃
支付寶掃一掃