免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 14537 | 回复: 9
打印 上一主题 下一主题

[FastDFS] 最近几天折腾FastDFS的心得-接近崩溃 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-11-12 18:21 |只看该作者 |倒序浏览
在网上搜索了一通,看到它,感觉能适用于解决我现在的问题,决定尝尝鲜

先从精华贴里看了介绍的PPT,
搜索了一堆配置安装的资料,开始上马。
终于Tracker+2个storage都配置完了,
用这个fdfs_test上传文件,照样返回。然后两个storage也自动同步了,心里还挺美

开始折腾PHP的API。
下载了这个REAMME看了下
比如fastdfs_http_gen_token,生成一个反盗链的token,可这个玩意用在哪?怎么用,没人知道
根据示例,找到了上传的函数,开始编写上传的编码

然后因为想直接通过http的形式去访问,总通过API读去文件内容多费劲。开始折腾这个nginx的module.
安装完成之后,噩梦就开始了。
最初用的是nginx1.0.5的版本,下载了没有反应,一直就是提示404找不到文件,nginx_error日志里根本就不报错
因为是Nginx的conf文件写错了,改了改没有反应。

尝试比如把这个目标URL后加几个字,错误日志终于出来了,文件不存在
如果少几个字就提示 如 “[2011-11-12 17:17:09] ERROR - file: /usr/local/source/fastdfs-nginx-module/src/common.c, line: 355, url length: 10 < 16”

终于去看了这个扩展包里的README.作者在0.8.53上测试的。
于是赶紧去下一个0.8.53装上,结果还是一样。不带这么折腾的呀

现在的问题:
文件通过API上传后,返回的Group_name+file_name,如 group1,/M00/00/00***************,
是不是在按照先前的配置访问的URL就是 http://storage_ip/M00/00/00********.这样的组成形式是否正确?
如果不正确,那正确的格式又是什么样的?

希望作者不要有啥想法,纯属牢骚,最后一步了希望赶紧解决问题,让我好好体会下很好很强大的fastDFS.
哪位大神不吝赐教下,指点下迷津???

论坛徽章:
4
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:56:11IT运维版块每日发帖之星
日期:2016-08-11 06:20:00IT运维版块每日发帖之星
日期:2016-08-15 06:20:00
2 [报告]
发表于 2011-11-12 18:55 |只看该作者
回复 1# cgwxyz

文件通过API上传后,返回的Group_name+file_name,如 group1,/M00/00/00***************,
是不是在按照先前的配置访问的URL就是 http://storage_ip/M00/00/00********.这样的组成形式是否正确?
如果不正确,那正确的格式又是什么样的?


如果你nginx的端口为80,URL链接格式和你说的一样,如下所示:
http://storage_ip/M00/00/00/********
如果还不能正常访问,请检查一下nginx的error log。

论坛徽章:
0
3 [报告]
发表于 2011-11-12 19:18 |只看该作者
回复 2# happy_fish100
尝试了 我在直接用shell里直接用 fdfs_test上传文件,可以下载出来,但是用PHP的API上上传后,同样得方法就下载不出来了。整个过程里web的error没有新的日志。都是在access里提示404.

  1. $tracker = fastdfs_tracker_get_connection();
  2.        
  3.                 if (!fastdfs_active_test($tracker))
  4.                 {
  5.                         error_log("errno: " . fastdfs_get_last_error_no() . ", error info: " . fastdfs_get_last_error_info());
  6.                         exit(1);
  7.                 }
  8.                
  9.                 $storage = fastdfs_tracker_query_storage_store();
  10.                 echo '<br/>';
  11.                 var_dump($storage);
  12.                 echo '<br/>';
  13.                 $server = fastdfs_connect_server($storage['ip_addr'], $storage['port']);
  14.                 if (!$server)
  15.                 {
  16.                         error_log("errno1: " . fastdfs_get_last_error_no() . ", error info: " . fastdfs_get_last_error_info());
  17.                         exit(1);
  18.                 }
  19.                  
  20.                 if (!fastdfs_active_test($server))
  21.                 {
  22.                         error_log("errno: " . fastdfs_get_last_error_no() . ", error info: " . fastdfs_get_last_error_info());
  23.                         exit(1);
  24.                 }
  25.                $file_id = fastdfs_storage_upload_by_filename1($real_file, null, array('name'=>'dotest') '', $tracker, $storage);
  26.                          if ($file_id)
  27.                         {
  28.                                         echo 'file_id is:'.$file_id;
  29.                                         echo '<br/>';
  30.                         }else{
  31.                                         echo "fastdfs_storage_upload_slave_by_filename fail, errno: " . fastdfs_get_last_error_no() . ", error info: " . fastdfs_get_last_error_info() . "\n";
  32.                                         echo 'upload file error2';                                
  33.                         }
复制代码

论坛徽章:
4
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:56:11IT运维版块每日发帖之星
日期:2016-08-11 06:20:00IT运维版块每日发帖之星
日期:2016-08-15 06:20:00
4 [报告]
发表于 2011-11-12 20:59 |只看该作者
回复 3# cgwxyz

php上传文件成功了吗?请确认一下!

论坛徽章:
0
5 [报告]
发表于 2011-11-12 22:04 |只看该作者
回复 4# happy_fish100

确认PHPAPI文件上传成功了,fastdfs_storage_file_exist1($file_id)返true. 我也在/M00/00/00看到这个存在的文件了。

论坛徽章:
0
6 [报告]
发表于 2011-11-14 10:48 |只看该作者
回复 4# happy_fish100
今天又用PHP API尝试了一下,JPG GIF的图像文件上传成功后下载时一律都提示404找不到此文件,但是其他如zip.doc文档 上传后都可以直接下载出来的。有这样的限制吗?

论坛徽章:
4
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:56:11IT运维版块每日发帖之星
日期:2016-08-11 06:20:00IT运维版块每日发帖之星
日期:2016-08-15 06:20:00
7 [报告]
发表于 2011-11-14 15:34 |只看该作者
回复 6# cgwxyz

这不应该啊!你仔细检查一下URL是否拼写正确。

论坛徽章:
0
8 [报告]
发表于 2011-11-14 17:36 |只看该作者
回复 7# happy_fish100
是的呀。我已经尝试了好久了,我上传的exe,rar,zip,tar.gz,txt,c,conf,html 什么的文件上去后都可以直接下出来。但是像jpg,png,swf,js这些打不开了

URL我都是直接复制上传API返回的file_id后的/M00/00/00××××这样的形式来的,

但是我用API里的 fastdfs_storage_download_file_to_buff($group,$remote) 是可以读取出前面这些JPG,PNG 内容来的

我想应该是ngx_fastdfs_module的问题,我加了一些输出,有响应的这些rar的文件都可以走到 fdfs_http_request_handler() 这个函数里去,但是那些JPG都走不到这一步

论坛徽章:
0
9 [报告]
发表于 2011-11-18 15:36 |只看该作者
应该是nginx的配置文件里面有类似下面的处理造成的
  1.    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
  2.     {
  3.       expires      30d;
  4.     }

  5.     location ~ .*\.(js|css)?$
  6.     {
  7.       expires      1h;
  8.     }
复制代码

论坛徽章:
0
10 [报告]
发表于 2011-11-27 18:34 |只看该作者
回复 9# 乐啤露

忙其他的去了,想起了再回来,屏蔽了conf里的这几句,那些图像文件都可以直接下载出来了。看来问题确实是因为这个 缓存的配置引起的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP