1 简介
一个好的分布式文件系统最好提供Nginx的模块,因为对于互联网应用来说,像文件这种
静态资源,一般是通过HTTP的下载,此时通过容易扩展的Nginx来访问FastDFS,能够让
文件的上传和下载变得特别简单。
Nginx安装FastDFS模块,主要是安装在FastDFS的存储服务器(storage)上,而不是tracker和client上。
目的实际是为了,当输入地址(其中192.168.31.109 是一个storage服务器):http://192.168.201.109/group1/M00/00/00/wKgCbFem0l2ALJKKKJJfRAMkc536.png
能够通过Nginx的Web服务功能,直接返回图片。
2 Nginx上部署FastDFS
2.1 模块包的安装
注意:全部安装条件在确保之前的FastDFS 的tracker、storage和client可以正常使用。
之前FastDFS安装步骤:https://blog.csdn.net/weixin_45525272/article/details/107748384
1)解压Nginx的FastDFS模块包:tar -xzvf fastdfs-nginx-module_v1.16.tar.gz
cd fastdfs-nginx-module/
会发现里面有个INSTALL 和 src目录,这个不需要make而是需要重新编译一下storage的Nginx模块。
2)安装和编译Nginx 并添加FastDFS模块
cd nginx-1.10.1/
./configure --add-module=/usr/local/src/fastdfs-nginx-module/src
其中/usr/local/src/fastdfs-nginx-module/src 是刚才解压的fastdfs模块的绝对路径,就是在编译Nginx时候,连同这个模块一起编译:
make
sudo make install
报错处理
如果中途出现编译错误,找不到fastdfs_define.h等头文件:
原因是Nginx是会想/usr/local/include/fastdfs/去找, 而不是去/usr/include/fastdfs/去找,将/usr/include/fastdfs/ 和 /usr/include/fastcommon/ 两个文件夹拷贝到/usr/local/include/下即可:
sudo cp /usr/include/fastdfs/ /usr/local/include/ -R
sudo cp /usr/include/fastcommon/ /usr/local/include/ -R
2.2 fastdfs-nginx-module 的配置
2.2.1 fastdfs-nginx-module配置文件
将fastdfs-nginx-module/src/mod_fastdfs.conf 拷贝到/etc/fdfs/下:
sudo cp fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
修改mod_fastdfs.conf:
base_path = / 你自己存放fdstdfs的路径/ fastdfs / storage #保存日志目录, 跟storage.conf一致即可
tracker_server = 你自己的IP:22122 #tracker服务器的IP地址以及端口号, 确保跟storage.conf一致即可
storage_server_port = 23000 #storage服务器的端口号,确保跟storage.conf一致即可
group_name = group1 #当前服务器的group名,确保跟storage.conf一致即可
url_have_group_name = true #文件url中是否有group名,这个最好设置为true,这样方便nginx服务器解析
store_path_count = 1 #存储路径个数,需要和store_path个数匹配
store_path0 = / usr / fastdfs / fastdfs0 #存储路径, 跟storage.conf一致即可
group_count = 1 #设置组的个数
[group1]
group_name = group1
storage_server_port = 23000
store_path_count = 1
store_path0 = / usr / fastdfs / fastdfs0
##如果group_count = 2 ,那就再配置一个(这里不需要)
2.2.2 建立软连接
sudo ln -s /usr/fastdfs/fastdfs0/data /usr/fastdfs/fastdfs0/data/M00
2.2.3 配置nginx
location /group1/M00 {
root /usr/fastdfs/fastdfs0/data;
ngx_fastdfs_module;
}
报错处理
启动Nginx,观察/usr/local/nginx/logs/errors.log 是否有ERROR存在,如果有类似如下错误:
ERROR - file: ini_file_reader.c, line : 315, include file "http.conf" not exists, line :
"#include http.conf"
ERROR - file : / root / Open_Package / fastdfs - nginx - module / src / common.c, line : 155, load co
nf file "/etc/fdfs/mod_fastdfs.conf" fail, ret code : 2
2016 / 08 / 06 23 : 51 : 13[alert] 12734#0: worker process 12735 exited with fatal code 2 and
cannot be respawned
类似这种错误会导致nginx-worker启动失败,致使nginx无法提供web服务,表示/etc/fdfs/下缺少http.conf 和mime.types文件
从fastdfs-5.05/conf/http.conf 拷贝到/etc/fdfs/下,从nginx-1.10.1/conf/mime.types 拷贝
到/etc/fdfs/下,即可解决。
2.3 测试环境
重新启动storage和nginx:
sudo /usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
sudo /usr/local/nginx/sbin/nginx -s reload
假如storage服务器已经有文件资源(其中,192.168.31.109是storage服务器的ip地址):
打开浏览器输入:http://192.168.31.109/group1/M00/00/00/wKgfbVhnpGSANaaNAAFbrNWRkBM855.jpg
如果,得到图片显示,则表示storage已经成功配置Nginx服务。
storage服务器的ip地址可通过“fdfs_file_info”获取: