標籤:mongodb nginx+gridfs nginx讀取mongodb圖片
最近在部署公司伺服器的nginx + mongodb + gridfs環境;
搜尋了N多文檔,基本上都一樣,期間遇到很多問題;
下面是整理的一份搭建文檔:
摘要 nginx-gridfs是一個nginx的擴充模組,用於支援直接存取MongoDB的GridFS檔案系統上的檔案並提供 HTTP 訪問。
一、安裝mongodb
MongoDB在linux下是無需安裝的,從官網上下載下安裝包後解壓,直接執行mongod,就可以啟動MongoDB伺服器,當然mongod還有很多的啟動選擇項,運行mongod --help就可以查看所有的選擇項。
註:很多人搭建完後,發現訪問不了圖片和檔案,跟Mongodb的配置有很多關係;附上我成功配置的mongodb,直接解壓可用;點擊下載mongodb
例如:(下載我上面的包,解壓,下面命令直接啟動服務,親測可用)
./mongod -port 10001 --dbpath ../data/ --logpath ../log/mongodb.log --fork
停止MongoDB
千萬要強調的是千萬不要使用kill -9去關閉mongod!這樣資料庫會不理一切直接殺死該進程,會使得資料檔案損壞。
穩妥的方法是使用kill -2 pid去關閉mongod,也就是當mongod進程接受到關閉指令後會等待當前運行操作或檔案分配等操作完畢後,關閉所有開啟的串連,並將緩衝的資料重新整理到磁碟後才正式關閉。
最穩妥的方式是使用shutdown命令來結束
> use admin
switched to db admin
> db.shutdownServer();
二、安裝nginx及nginx-gridfs
依賴庫、工具
1 2 |
# yum -y install pcre-devel openssl-devel zlib-devel # yum -y install gcc gcc-c++ |
如上幾個依賴庫,如果自動安裝不成功,可手動安裝;
Pcre下載https://sourceforge.net/projects/pcre/files/pcre/
下載nginx-gridfs源碼
1 2 3 4 5 |
# git clone https://github.com/mdirolf/nginx-gridfs.git # cd nginx-gridfs # git checkout v0.8 # git submodule init # git submodule update |
如上操作方法,可本地GIT下來再上傳到伺服器,也可直接在伺服器GIT
下載nginx源碼,編譯安裝。
1 2 3 4 5 |
# wget http://nginx.org/download/nginx-1.4.7.tar.gz # tar zxvf nginx-1.4.7.tar.gz # cd nginx-1.4.7 # ./configure --prefix=/usr/local/nginx --with-openssl=/usr/include/openssl --add-module=../nginx-gridfs/ # make -j8 && make install -j8 |
修改/usr/local/nginx/conf/nginx.conf設定檔。
註:這裡說明下,nginx有兩個nginx.conf的設定檔,勿配錯;
1 2 3 4 5 6 7 |
location /girdfstest/ { gridfs pics field=_id type=objectid; mongo 127.0.0.1:10001; } |
關於這裡的配置,簡單說明下:
gridfstest:訪問地址
pics:資料庫
mongo 127.0.0.1:10001 #mongo的伺服器位址及連接埠
--------------------------------------
啟動nginx服務
1 |
# /usr/local/nginx/sbin/nginx |
重新載入 /usr/local/nginx/sbin/nginx -s reload
3. 測試
上傳一個檔案
[email protected]:~#./mongofiles put 1.jpg -db pics -t jpg
列出庫中檔案:
[email protected]:~# mongofiles list -db pics
具體mongofiles使用可百度搜尋下
或者直接./mongofiles --help查看協助
瀏覽器訪問:http://192.168.4.156/girdfstest/1.jpg
如果可以訪問圖片,則配置成功;
注意事項:
安裝過程中可能會遇到各種各樣的錯誤,具體看環境不同,應對處理;
主要注意點
1. Nginx啟動參數,需關聯nginx-gridfs目錄
2. Mongodb盡量不用預設連接埠27017,改用其他連接埠(安裝過程遇到預設連接埠訪問不了,不知道什麼原因)
3. Nginx.conf配置,參數上面文檔說明
4. 如果配置不成功,訪問不了圖片;多看看nginx的錯誤記錄檔,會有很多收穫
安裝過程中,如果還有其他問題,可以看看我前面寫的幾篇文檔;
用nginx-gridFS讀取MongoDB的圖片及檔案(為什麼你老是配不成功?)