[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