mongodb分片集羣和GridFS已經搭建完成,利用nginx的GridFS模塊,實現nginx直接鏈接到mongodb數據庫讀取文件、圖片。
1、本次安裝只是nginx和nginx模塊GridFS的安裝配置。
一、安裝 nginx 須要的依賴
`yum install -y zlib zlib-devel gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel```
注意:編譯nginx過程當中,如在出現問題,自行安裝依賴。
二、下載nginxnode
wget -c https://nginx.org/download/nginx-1.12.1.tar.gz tar -zxvf nginx-1.12.1.tar.gz -C /usr/local/nginx
三、下載nginx-gridfs,nginx經過該模塊和mongodb的gridfs進行整合nginx
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
四、下載nginx的mongodb驅動,nginx-gridfs-0.8目錄下的mongo-c-driver下。c++
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
五、編譯安裝nginx,編譯過程當中將nginx-gridfs添加進去。
5.一、編譯參數
`./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/``git
注意:--add-module=/root/nginx-gridfs-0.8。這個目錄就是nginx-gridfs模塊的位置。
5.二、編譯步驟
#進入到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.三、問題處理
一、在make && make install的時候報錯:
ngx_http_gridfs_module.c:684:16: 錯誤:變量‘chunksize’被設定但未被使用
處理方法:進入nginx包目錄 vi nginx-1.12.0/objs/Makefile修改一個小錯誤,把第3行的-Werror錯誤去掉。
二、not exist /root/nginx-gridfs-0.8/mongo-c-driver/src/*.h,表示nginx的mongodb驅動沒有安裝。
處理方法:安裝驅動,下載nginx的mongodb驅動,上面第四步操做。
至此nginx和nginx-gridfs模塊安裝成功,下面是配置文件的修改。
六、配置nginx-gridfs文件
進入安裝好的nginx配置文件conf目錄下github
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 路由地址(集羣中)
七、上傳文件到mongodb,而後進行瀏覽器測試。
7.一、命令行mongodb上傳文件
mongofiles put 1234.jpg --local ~/1234.jpg --host 172.0.0.1 --port 27017 --db testdb --type jpg
7.二、瀏覽器訪問
ip/pics/1234.jpgmongodb
總結:這篇博文,操做過程,若有問題,提出來你們一塊兒解決。入門新手一枚,請你們多多指正。數據庫
開源是一種精神,分享是一種美德。瀏覽器