版本说明
- 系统版本为CentOS 7
- fastdfs版本选用的5.05
注意:系统版本不一样,相关命令会有差异
下载准备
选用fastdfsz的版本是5.05,区别于以往版本,这个版本将公共的一些函数等单独封装成了libfastcommon这个jar包,所以在安装fastdfs之前,我们必须先安装libfastcommon。
安装libfastcommon
1 | cd /opt |
缺少依赖包,出现如下错误:
安装依赖包
1 | yum -y install gcc perl |
再次安装libcofastcommon
1 | cd ~/opt/libfastcommon-master && ./make.sh && ./make.sh install |
安装fastdfs
1 | wget https://github.com/happyfish100/fastdfs/archive/V5.05.tar.gz |
安装完成后,所有可执行文件在目录/usr/bin下,以fdfs_开头:
1 | ls /usr/bin/fdfs_* |
配置文件在目录/etc/fdfs下:
1 | ls /etc/fdfs |
配置Tracker跟踪器
开放tracker监听端口访问
1 | firewall-cmd --zone=public --add-port=22122/tcp --permanent |
修改Tracker配置文件
1 | mkdir -p /home/fastdfs |
设置Tracker便捷管理命令
1 | bash -c 'cat > /usr/lib/systemd/system/fdfs_trackerd.service << EOF |
启动tracker
1 | systemctl start fdfs_trackerd.service |
查看启动tracker日志,确认tracker是否启动成功
1 | cat /home/fastdfs/logs/trackerd.log |
配置Storage存储节点
开放Storage监听端口访问
1 | firewall-cmd --zone=public --add-port=23000/tcp --permanent |
修改Storage配置文件
1 | mkdir -p /home/fastdfs |
设置Storage便捷管理命令
1 | bash -c 'cat > /usr/lib/systemd/system/fdfs_storaged.service << EOF |
启动Storage
1 | systemctl start fdfs_storaged.service |
查看启动Storage日志,确认Storage是否启动成功
1 | cat /home/fastdfs/logs/storaged.log |
配置Client客户端
这里搭建的是测试环境,所以Client与Tracker、Storage都安装在同一台机器上
1 | mkdir -p /home/fastdfs |
FastDFS测试
上传测试
1 | /usr/bin/fdfs_upload_file /etc/fdfs/client.conf /opt/Tulips.jpg |
查看文件信息
1 | /usr/bin/fdfs_file_info /etc/fdfs/client.conf group1/M00/00/00/wKgAUFXByOmAVJ5kAABzaUPC-FA256.jpg |
下载测试
1 | /usr/bin/fdfs_download_file /etc/fdfs/client.conf group1/M00/00/00/wKgAUFXByOmAVJ5kAABzaUPC-FA256.jpg downtest.jpg |
重启命令
1 | /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart |
Nginx安装
安装缺少的依赖包
1 | yum install gcc-c++ |
解压nginx-1.7.12.tar.gz,编译安装Nginx
1 | tar -zxvf nginx-1.7.12.tar.gz |
安装完最后会列出配置信息
1 | Configuration summary |
防火墙开发HTTP服务
1 | firewall-cmd --permanent --zone=public --add-service=http |
创建nginx用户
1 | useradd nginx |
启动nginx
1 | /opt/nginx/sbin/nginx |
查看端口
1 | netstat -tnlp|grep nginx |
浏览器访问
其他命令
Nginx -s stop 快速关闭Nginx,可能不保存相关信息,并迅速终止web服务。(quick exit)
Nginx -s quit 平稳关闭Nginx,保存相关信息,有安排的结束web服务。(graceful exit)
Nginx -s reload 因改变了Nginx相关配置,需要重新加载配置而重载。(changing configuration,start a new worker,quitting an old worker gracefully.)
Nginx -s reopen 重新打开日志文件。(reopenging log files)
fastdfs-nginx-module 配置
1 | cp /opt/fastdfs-nginx-module-master/src/mod_fastdfs.conf /etc/fdfs/ |
修改
1 | base_path=/home/fastdfs |
Storage服务器Nginx配置
/usr/local/nginx/conf/nginx.conf 上server{} 里添加
1 | location ~/group1/M00 { |
Nginx重新加载配置
1 | /opt/nginx/sbin/nginx -s reload |
问题总结
1、当上传文件时发现总是失败返回response status 2 !=0,查看storaged.log发现如下错误:
用fdfs_monitor命令查看storage节点状态
1 | /usr/bin/fdfs_monitor /etc/fdfs/storage.conf |
发现两个离线状态的无效storage节点,用以下命令删除之
1 | fdfs_monitor /etc/fdfs/client.conf delete group1 192.168.0.80 |
重启tracker及storage服务,问题解决。
未深入分析原因。
2、访问图片出现400错误
查看日志/home/fastdfs/logs/mod_fastdfs.log
1 | [2015-07-30 16:24:13] ERROR - file: ../common/fdfs_global.c, line: 52, the format of filename "group1/M00/00/00/wKgAUFW53n-AZ5X2AABzaUPC-FA370.jpg" is invalid |
/opt/nginx/logs/error.log
1 | 192.168.0.170 - - [30/Jul/2015:16:13:06 +0800] "GET /group1/M00/00/00/wKgAUFW5w4iAViuiAABVNkmGVeE577.xml HTTP/1.1" 400 575 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.124 Safari/537.36" |
后查明是因为url中带了group名字,FastDFS是默认关闭的。
1 | url_have_group_name=false |
将以上参数改为true即可
1 | sed 's:url_have_group_name.*:url_have_group_name=true:g' /etc/fdfs/mod_fastdfs.conf |