1. 程式人生 > >安裝MongoDB學習筆記—CentOs下(原始碼安裝)

安裝MongoDB學習筆記—CentOs下(原始碼安裝)

1、下載

官網地址:https://www.mongodb.com/download-center?jmp=nav#community

選擇的是community版的

注:如果選擇已經編譯好的安裝包會簡單一些,因version選擇項裡都是x64,我的電腦是32位,所以只能選擇從Download Source裡下載原始碼。

這裡看到也可以用yum方式安裝,應該會更簡單,點進去有安裝步驟,但是是針對64位機的。

下載到的安裝包為:mongodb-src-r3.6.3.tar.gz

2、解壓

tar -zxv -f 安裝包名稱 -C 安裝路徑

然後修改安裝包檔名

3、Build MongoDB

解壓後的資料夾裡沒有bin和configure之類的檔案,有個README,看一下,裡面沒有如何編譯之類的內容,講了如何執行、哪裡下載驅動等,其中提到building參見docs/building.md.。找到./docs/building.md.,開啟看下:

1)build MongoDB需要先安裝其他軟體,

確認滿足要求後進行下一步

注意這裡要求的是Python 2.7版本,其他版本可能會報錯的

如果沒有裝python2.7的話,這裡面有提示如何安裝正確的版本

2)編譯

我選擇了all

注:起初我用python3裝的,然後報錯如下:

用python2設定後報了個問題:

WiredTiger不支援32位,需要把它關掉。

python2 buildscripts/scons.py all --wiredtiger=off

又報錯:

GCC版本低於要求的版本,這個之前應該先檢查下的。

升級GCC:yum -v update gcc

yum更新的缺點是更新到的軟體版本未必是最新的,更新後發現版本還是無法滿足要求尷尬,當前的GCC版本為4.8.5

注:用pip安裝回覆沒有安裝包,所以自己下載來安裝

兩個方法:安裝新版本GCC;選擇低版本MongoDB

下載了幾個版本的MongoDB發現3.2僅需要GCC4.8.2

下載了GCC5.5.0,./configure時報錯:

查了下gmp和mpfr都裝了,並且版本高於所要求的版本,需要指定下安裝路徑。

mpc沒有安裝,用yum安裝回覆沒有可用的軟體包,只能去上面給出的路徑裡下載,選擇了最新版本mpc-1.0.3.tar.gz

安裝包裡有個install檔案,看了下安裝步驟,其中說到要事先安裝好gmp和mpfr及其版本要求,並且如果compiler預設的查詢路徑找不到這兩個軟體安裝路徑的話需要指定它們的安裝路徑。--with-gmp=DIR or--with-mpfr=DIR with ./configure

試了下./configure,報錯:

還是需要定義一下路徑。但是卻找不到gmp和mpfr的安裝路徑,用rpm -qa確認已安裝和其版本號,用rpm -ql找到的都是幫助文件和.so檔案疑問,不明白為什麼。

重灌或者使用anaconda下的安裝路徑。我重灌了下gmp和mpfr。

gmp、mpfr和mpc安裝都是./configure->make->make install。完成後安裝gcc,編譯時間很長。

安裝完gcc後繼續之前的mongodb編譯操作,此時又報了兩個錯誤,缺少typing和Cheetah.Template模組,這兩個都是python的模組,看來現有的python2沒有裝。然而我在python2.7的安裝路徑下找到了typing.py,Cheetah.Template倒是沒找到。不知道怎麼裝,沒有找到模組安裝包阿(後來發現個好方法,用pycharm安裝python的package,真的很好用大笑,不用自己去找下載地址了),然後退而求其次,降低mongodb版本,選擇3.4,重複以上操作,又報錯:

搜尋了下,js-config.h在mongodb/src/third_party/mozjs-45/platform下的幾個資料夾下都有:

這幾個資料夾裡的內容基本是一樣的,可能不同的裝置選擇不同的資料夾,猜測是不是因為我是32位機,這些資料夾都是64位機的,自定義一個x86_32,複製js-config.h的相關檔案進去看看。試了下還是不行。

懷疑32位裝不了這個版本,換回mongodb3.6試一下(python2的typing和Cheetah兩個模組已通過pycharm安裝好了)。又報錯:

這個問題和剛剛的js-config.h一樣,mongodb/src/third_party/gperftools-2.5下幾個資料夾裡包含了這個config.h,但是都是64位的。

看來32位機裝不了較高版本的mongodb,還是裝mongodb3.2吧。尷尬

看了下3.2版的js-config.h的路徑,果然platform下有i386,看來高版本的果真是不支援32位了。好吧,老老實實裝3.2版,編譯的時間很長。

編譯了幾個小時之後又報錯了抓狂,也不知道怎麼改。

重新編譯了下又成功了。

3)安裝

如果編譯是成功的話,可以執行安裝了,python2 buildscripts/scons.py --prefix=/opt/mongo install。這裡32位機要加上--wiredtiger=off,不然會報錯。

不想編譯的話也可以選擇下載已經編譯好的安裝包,支援32位機的最高版本為3.2。

安裝過程中報了個openSSL的錯誤,重新安裝後又沒有報錯。可是執行mongod失敗,還是沒有成功安裝。最後還是用編譯好的安裝包,無需bulid,直接執行./bin/mongod即可。

4、設定資料路徑

/data/db 是 MongoDB 預設的啟動的資料庫路徑(--dbpath)。data/db不會自動新增,需要手動建立:mkdir -p /data/db

5、啟動mongodb服務

1)mongod

./bin/mongod,然後報錯了:

需增加option,./mongod --storageEngine=mmapv1 (--journal,可選),順利啟動,等待連線。

2)HTTP使用者介面

3.4及更早版本由此功能,./mongod --rest,然後在瀏覽器中輸入:http://localhost:27017

6、連線伺服器

使用 MongoDB shell,./mongo。

注:一定要重新打開個終端執行。

7、連線資料庫

mongodb://[username:[email protected]]host1[:port1][,host2[:port2],……[,hostn[:postn]]][/[database][?options]]

另:使用過程中遇到問題

1、啟動時報錯,無法啟動

[initandlisten] exception in initAndListen: 98 Unable to create/open lock file: /data/db/mongod.lock errno:13 Permission denied Is a mongod instance already running?, terminating
解決方法:刪除資料存放目錄(預設為/data/db)中的mongod.lock檔案

刪除後依然報錯

網上說造成的原因是mongodb異常關閉導致,然而之前使用的時候都是正常關閉的,應該是因為無法開啟mongod.lock導致,發現原來是普通使用者沒有許可權(mongod和mongod.lock普通使用者都只有r許可權,不知道是缺乏哪個許可權引起的問題),改用管理員許可權後就能順利啟動mongodb。

相關推薦

安裝MongoDB學習筆記CentOs原始碼安裝

1、下載 官網地址:https://www.mongodb.com/download-center?jmp=nav#community 選擇的是community版的 注:如果選擇已經編譯好的安裝包會簡單一些,因version選擇項裡都是x64,我的電腦是32位,所

mongoDB 學習筆記純乾貨mongoose、增刪改查、聚合、索引、連線、備份與恢復、監控等等

MongoDB - 簡介 MongoDB 是一個基於分散式檔案儲存的資料庫,由 C++ 語言編寫,旨在為 WEB 應用提供可擴充套件的高效能資料儲存解決方案。 MongoDB 是一個介於關係資料庫和非關係資料庫之間的產品,是非關係資料庫當中功能最豐富

MongoDB學習筆記—Linux搭建MongoDB環境

1 ulimit -SHn 655350 2 #!/bin/sh 3 # chkconfig: - 64 36 4 # description:mongod 5 case $1 in 6

python學習筆記——WindownsPython3之安裝jupyter

Windowns下Python3之安裝jupyter         Jupyter notebook: 一個互動式筆記本,支援執行 40 多種程式語言。 利用它來寫 Python,程式碼和執行結果都可以儲存下載,十分方便。本文

centos使用原始碼安裝redis及php-redis

安裝php-redis wget https://github.com/phpredis/phpredis/archive/3.1.2.tar.gz tar -zxvf 3.1.2.tar.gz cd phpredis-3.1.2 /usr/bin/phpize      

STL學習筆記— —無序容器Unordered Container

ring 最大 布局 size fad oca rgs template max 簡單介紹 在頭文件<unordered_set>和<unordered_map> 中定義 namespace std { templa

機器學習筆記——線性迴歸Linear Regression

線性迴歸演算法 1 簡單線性迴歸(Simple Liner Regression) 解決迴歸問題 思想簡答,容易實現 許多強大的非線性模型的基礎 結果具有很好的可解釋性 蘊含機器學習中的很多重要思想 1.1 什麼是線性迴歸演算法?

機器學習筆記——梯度下降Gradient Descent

梯度下降演算法(Gradient Descent) 在所有的機器學習演算法中,並不是每一個演算法都能像之前的線性迴歸演算法一樣直接通過數學推導就可以得到一個具體的計算公式,而再更多的時候我們是通過基於搜尋的方式來求得最優解的,這也是梯度下降法所存在的意義。 不是一個機器學習演

go學習筆記-面向物件Methods, Interfaces

面向物件(Methods, Interfaces) Method method是附屬在一個給定的型別上的,他的語法和函式的宣告語法幾乎一樣,只是在func後面增加了一個receiver(也就是method所依從的主體)。 語法 func (r ReceiverType) funcName(param

go學習筆記-型別轉換Type Conversion

型別轉換(Type Conversion) 型別轉換用於將一種資料型別的變數轉換為另外一種型別的變,基本格式 type_name(expression) type_name 為型別,expression 為表示式。 示例 func testCov() { var a = 20 var

機器學習筆記——logistic迴歸logistic regression

logistic迴歸 logistic迴歸實際上並不是一種迴歸演算法,而是一種分類演算法,意思就是輸出值是離散值(01或者更多類),而它叫這個名字完全是歷史原因。我們可以從下圖看出對於分類問題,如果我們採用傳統的迴歸演算法並不能獲得很好的效果 假設稱述 由於輸出的值是0和1,因此我

Nginx學習筆記——geoip模組地域資訊

概述 基於IP地址匹配MaxMind GeoIP二進位制檔案,讀取IP所在地域資訊。 安裝模組 yum install nginx-module-geoip 使用場景 (1)區別國內外作HTTP的訪問規

《Oracle PL/SQL例項精講》學習筆記11——異常 高階概念

本章介紹瞭如下內容: 1. RAISE_APPLICATION_ERROR “在我們寫proc程式中經常要有錯誤處理,在錯誤處理中我們經常要輸出錯誤資訊來給幫助我們分析和解決錯誤原因,從而更正資料。這時候就會用到SQLCODE和SQLERRM. SQLCode:資

Unix網路程式設計學習筆記課後題Chapter 6

6.1 在/usr/include/x86_64-linux-gnu/sys/select.h中檢視fd_set的定義 /* fd_set for select and pselect. */ typedef struct { /* XPG4.2 requires this

Unix網路程式設計學習筆記課後題Chapter 4

4.1 如何辨別<netinet/in.h>中定義的INADDR_是主機序還是網路序。 less /usr/include/netinet/in.h 可以發現是按小端序儲存的,Linux的主機序就是小端序。 還有個想法,可以用htonl()去轉換,看結果是不是相等。

Unix網路程式設計學習筆記課後題Chapter 3

3.1 因為不同型別的套接字長度不同。IPV4和IPV6套接字長度固定,但Unix域結構和資料鏈路結構是可變長度的,需要一個引數記錄結果的大小,直接傳就是值傳遞了,需要傳一個指標,以實現引用傳遞。 3.2 void指標只能用來傳引數,不能對void型別指標加減和解引用 3.3 匆匆忙

機器學習筆記——梯度下降Gradient D

梯度下降演算法(Gradient Descent) 在所有的機器學習演算法中,並不是每一個演算法都能像之前的線性迴歸演算法一樣直接通過數學推導就可以得到一個具體的計算公式,而再更多的時候我們是通過基於搜尋的方式來求得最優解的,這也是梯度下降法所存在的意義。 不

《Oracle PL/SQL例項精講》學習筆記17——記錄第二部分

本章內容: 1. 記錄型別(使用基於表和基於遊標的記錄,使用使用者定義的記錄,瞭解記錄的相容性) 2. 巢狀記錄(即,包含其他記錄和集合的記錄) 3. 記錄集合 程式碼如下: 1. 使用巢

我的python自動化學習筆記-第一篇介面測試

學習的介面測試工具postman、jmeter 在介面測試之前,我們要獲得介面文件。介面文件會告訴我們: url 請求方式 請求引數 引數的說明 url即要訪問的連結、地址 請求方式指。。。有直接向伺服器獲取資料的請求方式(get)。有的要輸入一些資料,才能向伺服器獲取資料(post),

SM9學習筆記與圖解合集

1. 整體架構 整體架構分三層(如圖1): l  介面層:提供對外介面以完成SM9功能。主要分為: n  系統介面:主要完成KGC參與的工作。 n  功能介面:主要完成KGC不參與的工作。 l  SM9功能層:提供SM9的功能模組。主要分成: n  主金鑰生成: