最近在部署公司服務器的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. 測試
上傳一個文件
root@d1:~#./mongofiles put 1.jpg -db pics -t jpg
列出庫中文件:
root@d1:~# 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的錯誤日志,會有很多收獲
安裝過程中,如果還有其他問題,可以看看我前面寫的幾篇文檔;