[TOC]
我們在使用FastDFS部署一個分散式檔案系統的時候,通過FastDFS的客戶端API來進行檔案的上傳、下載、刪除等操作。同時通過FastDFS的HTTP伺服器來提供HTTP服務。但是FastDFS的HTTP服務較為簡單,無法提供負載均衡等高效能的服務,所以FastDFS的開發者——淘寶的架構師餘慶,為我們提供了Nginx上使用的FastDFS模組(也可以叫FastDFS的Nginx模組);使用非常簡單。 FastDFS通過Tracker伺服器,將檔案放在Storage伺服器儲存,但是同組之間的伺服器需要複製檔案,有延遲的問題。假設Tracker伺服器將檔案上傳到了192.168.1.80,檔案ID已經返回客戶端,這時,後臺會將這個檔案複製到192.168.1.30,如果複製沒有完成,客戶端就用這個ID在192.168.1.30取檔案,肯定會出現錯誤。這個fastdfs-nginx-module可以重定向連線到源伺服器取檔案,避免客戶端由於複製延遲的問題,出現錯誤。
編譯、安裝Nginx
新增fastdfs-nginx-module
./configure --prefix=/usr/local/nginx --sbin-path=/usr/local/nginx/sbin/nginx --add-module=/usr/local/src/fastdfs-nginx-module/src
make && make install
複製程式碼
複製 fastdfs-nginx-module 原始碼中的配置檔案到/etc/fdfs 目錄
cp /usr/local/src/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
複製程式碼
修改mod_fastdfs.conf配置檔案
connect_timeout=10 # 客戶端訪問檔案連線超時時長(單位:秒)
base_path=/tmp # 儲存日誌目錄
tracker_server=192.168.0.200:22122 # tracker服務IP和埠
storage_server_port=23000 # storage服務埠
group_name=group1 # 組名
url_have_group_name=true # 訪問連結字首加上組名
store_path0=/mnt/fastdfs/storage # 檔案儲存路徑
複製程式碼
複製 FastDFS 的部分配置檔案到/etc/fdfs 目錄
[root@hmhbt storage]# cd /usr/local/src/FastDFS/conf
[root@hmhbt conf]# cp http.conf mime.types /etc/fdfs/
複製程式碼
配置nginx訪問storage檔案
user nobody;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 8888;
server_name localhost;
location ~/group([0-9])/M00 {
root /mnt/fastdfs/storage;
ngx_fastdfs_module;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
複製程式碼
如果下載時發現報 404, 將 nginx.conf 第一行 user nobody 修改為 user root 後重新啟動。
以上屬於原創文章,轉載請註明作者@怪咖
QQ:208275451