一、前言
本文中使用本地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 perl
2.安裝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 install
2.相關文件和目錄
默認安裝方式安裝后的相應文件與目錄
描述 | 目錄 |
服務腳本 | /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.service
2.存儲(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.service
3.客戶端(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.gz
2.安裝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/src
5.復制 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.service
8.檢測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


版權聲明:本文內容由互聯網用戶自發貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發現本站有涉嫌抄襲侵權/違法違規的內容, 請發送郵件至 舉報,一經查實,本站將立刻刪除。