php nginx分布式,php+gridfs+varnish+nginx 搭建分布式图片存储

优势

1 数据迁移方便,所有数据基于mongodb-grids存储,分布式配置,数据迁移等操作非常方便

2 mongodb 稳定性 可靠性 要比其他分布式文件存储性能更好

3 基于varnishd做缓存,有效解决了 从gridfs读取数据需要查询2次的问题,提高了性能

4 使用方便,代码行数寥寥无几,轻松搞定,各项配置也很简单

5 nginx-gridfs 插件可以基于nginx直接使用,无需再用php从mongodb中读取数据生成图片

=============================================

1编译安装php的mongodb扩展

https://github.com/mongodb/mongo-php-driver/downloads

下载最新版

$ cd mongo-php-driver

$ phpize

$ ./configure --with-php-config=/path/to/php-config

$ make

$ make install

2编译安装nginx &nginx-gridfs

https://github.com/mdirolf/nginx-gridfs

下载最新版

$ ./configure --add-module=/path/to/nginx-gridfs/source/

$ make

$ make install

3 安装varnishd

PHP测试gridfs写入

PHP:

$conn = new Mongo();

$db = $conn->photo;

$grid = $db->getGridFS();

$data = file_get_contents("http://xxx.com/20120303/6f73/6a69/6d64597a/1330782227306.1400.467.467.jpg");

$id = $grid->storeBytes($data);

var_dump($id);

nginx 的配置文件

server

{

listen 8080;

server_name photo.com;

index index.html index.php index.htm;

location /photo/

{

gridfs photo field=_id type=objectid;

default_type image/jpeg;

mongo 127.0.0.1:27017;

}

}

varnishd 部分配置

backend default {

.host = "127.0.0.1";

.port = "8080";

}

sub vcl_recv {

if (req.http.host ~ "photo.com")

{

unset req.http.cookie;

return (lookup);

}

}

sub vcl_deliver

{

set resp.http.Expires = "Sun, 17 Feb 2013 05:00:00 GMT";

unset resp.http.X-Varnish;

unset resp.http.Age;

unset resp.http.Via;

unset resp.http.Connection;

set resp.http.Cache-Control = "max-age=2592000";

set resp.http.Last-Modified = "Sat, 24 Dec 2011 01:24:34 GMT";

if (obj.hits > 0)

{

set resp.status=304;

}

}

启动varnishd

/usr/local/varnish/sbin/varnishd -f /usr/local/varnish/etc/varnish/default.vcl -s malloc,1G -a 127.0.0.1:80

本文仅仅是提供了一个示例,全部代码要自己根据情况修改哈~ 首次发文,请大牛拍砖

原文来自我的blog http://lnmp.in

我的微博 http://weibo.com/pojaaer 求粉~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值