mongodb之分片集羣mongodb+GridFS+Nginx

    mongodb分片集羣和GridFS已經搭建完成,利用nginx的GridFS模塊,實現nginx直接連接到mongodb數據庫讀取文件、圖片。

一、本次安裝只是nginx和nginx模塊GridFS的安裝配置。
1、安裝 nginx 需要的依賴
`yum install -y zlib zlib-devel gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel```
注意:編譯nginx過程中,如在出現問題,自行安裝依賴。
2、下載nginx

wget -c https://nginx.org/download/nginx-1.12.1.tar.gz
tar -zxvf nginx-1.12.1.tar.gz -C /usr/local/nginx

3、下載nginx-gridfs,nginx通過該模塊和mongodb的gridfs進行整合

wget -c https://github.com/mdirolf/nginx-gridfs/archive/v0.8.tar.gz -O nginx-gridfs-0.8.tar.gz
tar -xzvf ./nginx-gridfs-0.8.tar.gz

4、下載nginx的mongodb驅動,nginx-gridfs-0.8目錄下的mongo-c-driver下。

wget https://github.com/mongodb/mongo-c-driver/archive/v0.3.1.tar.gz
tar -zxvf v0.3.1.tar.gz
cd  /root/mongo-c-driver-0.3.1
#將驅動下的所有移動到nginx-gridfs目錄下的mongo-c-driver目錄下。
mv ./* /root/nginx-gridfs-0.8/mongo-c-driver/
[root@hadoop-namenode mongo-c-driver]# ll
total 36
-rw-rw-r-- 1 root root 11358 May 13  2011 APACHE-2.0.txt
drwxrwxr-x 2 root root    40 May 13  2011 buildscripts
drwxrwxr-x 2 root root    41 May 13  2011 docs
-rw-rw-r-- 1 root root 10760 May 13  2011 doxygenConfig
-rw-rw-r-- 1 root root   363 May 13  2011 HISTORY.md
-rw-rw-r-- 1 root root  3024 May 13  2011 README.md
-rw-rw-r-- 1 root root  4090 May 13  2011 SConstruct
drwxrwxr-x 2 root root   185 May 13  2011 src
drwxrwxr-x 2 root root   282 May 13  2011 test

5、編譯安裝nginx,編譯過程中將nginx-gridfs添加進去。
5.1、編譯參數
`./configure --user=nginx --group=nginx --prefix=/usr/local/nginx/ --with-http_v2_module --with-http_ssl_module --with-http_sub_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --add-module=/root/nginx-gridfs-0.8/``

注意:--add-module=/root/nginx-gridfs-0.8。這個目錄就是nginx-gridfs模塊的位置。
5.2、編譯步驟
#進入到nginx包目錄下
cd nginx-1.12.0
#開始編譯
./configure --user=nginx --group=nginx --prefix=/usr/local/nginx/ --with-http_v2_module --with-http_ssl_module --with-http_sub_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --add-module=/root/nginx-gridfs-0.8/
make && make install
5.3、問題處理
1、在make && make install的時候報錯:
ngx_http_gridfs_module.c:684:16: 錯誤:變量‘chunksize’被設定但未被使用
處理方法:進入nginx包目錄 vi nginx-1.12.0/objs/Makefile修改一個小錯誤,把第3行的-Werror錯誤去掉。
2、not exist /root/nginx-gridfs-0.8/mongo-c-driver/src/*.h,表示nginx的mongodb驅動沒有安裝。
處理方法:安裝驅動,下載nginx的mongodb驅動,上面第四步操作。
至此nginx和nginx-gridfs模塊安裝成功,下面是配置文件的修改。
6、配置nginx-gridfs文件
進入安裝好的nginx配置文件conf目錄下

  server{
        listen       80;
        server_name  192.168.60.235;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;
        location /pics/ {
        gridfs  test
        field=_id
        type=objectid;
         mongo  192.168.xx.2x7:27017;
       }
     }

參數詳解:
gridfs:nginx識別插件的關鍵字
edusns:db名
[root_collection]: 選擇collection,如root_collection=blog, mongod就會去找blog.files與blog.chunks兩個塊,默認是fs
[field]: 查詢字段,保證mongdb裏有這個字段名,支持_id, filename, 可省略, 默認是_id
[type]: 解釋field的數據類型,支持objectid, int, string, 可省略, 默認是int
[user]: 用戶名, 可省略
[pass]: 密碼, 可省略
mongo: mongodb 路由地址(集羣中)
7、上傳文件到mongodb,然後進行瀏覽器測試。
7.1、命令行mongodb上傳文件
mongofiles put 1234.jpg --local ~/1234.jpg --host 172.0.0.1 --port 27017 --db testdb --type jpg
7.2、瀏覽器訪問
ip/pics/1234.jpg

總結:這篇博文,操作過程,如有問題,提出來大家一起解決。入門新手一枚,請大家多多指正。

開源是一種精神,分享是一種美德。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章