一) 缘由

因为公司业务需要,需要搭建图片服务器,需求很简单:读取+上传图片,当时第一考虑用nginx来作,但考虑到单纯用nginx来作,无法水平扩展和管理,一旦遇到海量图片,就无办法 扩展。所以考虑用文件系统来做,综合考虑最终选择用nginx+gridfs+mongodb,mongodb适用于小文件管理,而且可以分片集群,对后期维护和扩展很有帮助。

二) 环境搭建

2.1) 下载nginx1.6.0 stable版本

wget http://nginx.org/download/nginx-1.6.0.tar.gz
tar zxvf nginx-1.6.0.tar.gz

2.2) 下载gridfs-nginx 模块
git clone git://github.com/mdirolf/nginx-gridfs.git

2.3) 下载mongo-c-driver(/user/loucal/下)

git clone https://github.com/eagleas/mongo-c-driver.git

2.4) 拷贝mongo-c-driver至nginx-gridfs下
cp mongo-c_driver nginx-gridfs

2.5) 下载perl

a) 下载地址:http://sourceforge.net/projects/pcre/files/pcre/

pcre http://www.pcre.org

zlib http://www.zlib.net

openssl http://www.openssl.org

b)   将这三个包装在/usr/loucl/下

make && make install

2.6) 配置、安装nginx(红色字体注意修改路径)

a) ./configure --prefix=/usr/local/nginx --with-pcre=../pcre-8.34 --with-http_ssl_module --with-http_stub_status_module --with-http_flv_module --with-http_gzip_static_module --add-module=../nginx-gridfs --with-poll_module --without-select_module --with-http_realip_module --with-cc-opt=-Wno-error
--with-zlib=../zlib-1.2.8 --with-openssl=/usr/bin/openssl

./nginx -V 查看参数

b) make -j8

c) make install

三)下载mongodb2.4.10安装及启动

1) rpm包下载、安装、运行

1.1) 下载地址:http://downloads-distro.mongodb.org/repo

server版:mongo-10gen-server-版本号

client版:mongo-10gen-版本号

1.2) 安装
rpm -ivh 包.rpm
1.3 添加自启动项

1.3.1) 配置自启动法

a) 修改/etc/mongo.conf

自定义log、db路径
b) vim /etc/rc.local

添加 mongod --config /etc/mongo.conf

1.3.2) 命令启动法

a) 修改/etc/rc.local

mongod --dbpath=/usr/local/mongodb/data --logpath=/usr/local/mongodb/logs/mongodb.log --logappend --port=27017 --fork

四)配置nginx中的gridfs
4.1) 在/usr/lcoal/nginx/conf/nginx.conf 添加如下内容:

在server项下增加
location /img/ {
gridfs testimg field=filename type=string;
mongo 10.143.111.12:27017;
}

五) 上传图片至mongodb

sudo mongofiles put --host localhost --port 27017 --db images --local /home/1.jpg --type jpg

http://10.143.47.20/img/kongtiaolengmei.png

六) 测试图片上传是否成功

6.1) 启动nginx并在浏览器打开 http://localhost/pics/1.jpg 如果能打开,证明配置正确且上传成功

最新文章

  1. 简述我的SOA服务治理
  2. jquery选择器案例
  3. osg中内嵌QtBrowser
  4. 【转】HTTP POST GET 本质区别详解
  5. NHibernate 使用CreateSQLQuery进行查询
  6. Rsync+sersync文件实时同步
  7. requirejs 小结
  8. [Flux] 2. Overview and Dispatchers
  9. 「Poetize5」GF弹钢琴
  10. window服务创建
  11. 当each遇上list 的一些困惑
  12. 反对抄袭 正解spring的@Autowired 不要相信网上的错误版本
  13. hdu 2546 饭卡 (01背包)
  14. copy_part_stat.sql
  15. Android-----Intent中通过startActivity(Intent intent )隐式启动新的Activity
  16. android全屏/沉浸式状态栏下,各种键盘挡住输入框解决办法
  17. 谱聚类算法(Spectral Clustering)优化与扩展
  18. 【bzoj2007】 Noi2010—海拔
  19. animator 新动画
  20. VBox添加虚拟磁盘挂载

热门文章

  1. css3实现色子自动翻转效果
  2. 砸金蛋:jQuery+PHP实现的砸金蛋中奖程序
  3. AWK增强的文本处理shell特征--AWK完全手册
  4. IplImage 封装释放
  5. (64位oracle使用32位的PLSQL)安装64位的oracle数据库软件,使用32位的PLSQL Developer连接方法
  6. 命令行配置源和安装本地rpm包
  7. 阻止check事件冒泡
  8. JCronTab 定时调用
  9. [翻译]初识SQL Server 2005 Reporting Services Part 3
  10. Linux 启动过程的详细解释