Node.js+MongoDB搭建

操作環(huán)境

服務器:阿里云 CentOS7.3.1611
時間: 20170818

安裝Git

阿里云更換了系統(tǒng)盤,不小心手賤腌歉,順手更新到最新系統(tǒng)

# yum update

再順手重啟下

#reboot

然后再次遠程登錄上服務器秕磷,看下系統(tǒng)版本

# lsb_release -a
LSB Version:    :core-4.1-amd64:core-4.1-noarch
Distributor ID: CentOS
Description:    CentOS Linux release 7.3.1611 (Core)
Release:        7.3.1611
Codename:       Core

默認是阿里云的yum源已亥,懶得切換了,直接安裝Git

# yum install git
······
Installed:
  git.x86_64 0:1.8.3.1-6.el7_2.1
Dependency Installed:
  libgnome-keyring.x86_64 0:3.8.0-3.el7  perl-Error.noarch 1:0.17020-2.el7
  perl-Git.noarch 0:1.8.3.1-6.el7_2.1    perl-TermReadKey.x86_64 0:2.30-20.el7
  rsync.x86_64 0:3.0.9-17.el7
Complete!

完成后順手看下Git版本疲牵,如果順利輸出版本號承二,說明安裝成功

# git version
git version 1.8.3.1

安裝NVM并用NVM安裝多版本Node.js

NVM(Node version manager)是Node.js的版本管理軟件,用這貨可以在Node.js各個版本間輕松切換纲爸。
首先亥鸠,直接使用git將源碼克隆到本地的~/.nvm目錄下沈堡,并檢查最新版本

# git clone https://github.com/cnpm/nvm.git ~/.nvm && cd ~/.nvm && git checkout `git describe --abbrev=0 --tags`

備份profile文件布持,并激活NVM

# cp /etc/profile /etc/profile.mybak
# echo ". ~/.nvm/nvm.sh" >> /etc/profile
# source /etc/profile

列出Node.js的所有版本

# nvm list-remote

由上面列出的版本列表中選擇需要的Node.js版本進行安裝

# nvm install v0.12.18
# nvm install v4.8.4
# nvm install v8.4.0
# nvm install v6.11.2

隨便裝了四個版本后址儒,查看已安裝Node.js版本相满,當前使用的版本為v6.11.2撞叨,貌似提示為不穩(wěn)定版厕九?

# nvm ls
       v0.12.18
         v4.8.4
->      v6.11.2
         v8.4.0
stable -> 8.4 (-> v8.4.0) (default)
unstable -> 6.11 (-> v6.11.2) (default)

切換Node.js版本至v8.4.0

# nvm use v8.4.0
Now using node v8.4.0

卸載掉v6.11.2革屠,再次查看當前安裝版本镊讼,顯示是8.4.0

# nvm uninstall v6.11.2
Uninstalled node v6.11.2
# nvm ls
       v0.12.18
         v4.8.4
->       v8.4.0
stable -> 8.4 (-> v8.4.0) (default)

將v8.4.0設置為默認版本题翻,不然每次重啟都需要運行 nvm use

nvm alias default stable

其他nvm命令

# nvm help

測試是否已經(jīng)可用

# cd /home
#mkdir www
#vim test.js

編輯test.js文件

const http = require('http');
const server = http.createServer((req, res) => {
    res.statusCode = 200;
    res.setHeader('Content-Type', 'text/plain');
    res.end('Hello World\n');
});
server.listen("80",'0.0.0.0' , () => {
    console.log("Server running");
});

運行test.js文件

# node test.js
Server running

在瀏覽器打開云服務器ip揩徊,可以看到網(wǎng)頁頁面輸出 Hello World
如果需要守護進程腰鬼,就安裝pm2

# npm install -g pm2

使用pm2守護Node.js

# pm2 start /home/www/test.js
[PM2] Starting /home/www/test.js in fork_mode (1 instance)
[PM2] Done.
┌───────┬──────┬────────┬───┬─────┬──────────┐
│ Name  │ mode │ status │ ? │ cpu │ memory   │
├───────┼──────┼────────┼───┼─────┼──────────┤
│ test  │ fork │ online │ 0 │ 3%  │ 7.7 MB   │
└───────┴──────┴────────┴───┴─────┴──────────┘

設置每次開機都啟動/home/www/test.js

# pm2 save
# pm2 startup centos
# pm2 save

安裝MongoDB

官網(wǎng)獲得社區(qū)版下載地址,選擇平臺為Linux塑荒,Version 選擇為 RHEL 7 Linux 64-bit x64熄赡,這里沒有CentOS,所以只能選RHEL齿税,反正也差不多彼硫。點擊下方的Package Manager:Instructions for installing with yum,進入說明文檔凌箕。
根據(jù)上面的官方說明拧篮,新建yum源文件

#vim /etc/yum.repos.d/mongodb-org-3.4.repo

然后填入yum源配置,保存并退出牵舱,如果想省去gpg驗證串绩,這里可以設置gpgcheck=0

[mongodb-org-3.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc

開始yum安裝MongoDB

#yum -y install mongodb-org

漫長的等待后(吐槽下真的好慢啊,不管是yum還是wget直接裝)芜壁,安裝完成
默認的一部分目錄如下:
配置文件在:/etc/mongod.conf
數(shù)據(jù)文件在:/var/lib/mongo
日志文件在:/var/log/mongodb
編輯配置文件可以參考官方文檔
啟動MongoDB的服務

# systemctl start mongod.service 

添加到開機啟動

# systemctl enable mongod.service 
# systemctl daemon-reload

啟動進入MongoDB

# mongo
MongoDB shell version v3.4.7
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.7
Server has startup warnings:
2017-08-30T00:02:32.805+0800 I STORAGE  [initandlisten]
2017-08-30T00:02:32.805+0800 I STORAGE  [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine
2017-08-30T00:02:32.805+0800 I STORAGE  [initandlisten] **          See http://dochub.mongodb.org/core/prodnotes-filesystem
2017-08-30T00:02:33.254+0800 I CONTROL  [initandlisten]
2017-08-30T00:02:33.254+0800 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2017-08-30T00:02:33.254+0800 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2017-08-30T00:02:33.254+0800 I CONTROL  [initandlisten]
2017-08-30T00:02:33.254+0800 I CONTROL  [initandlisten]
2017-08-30T00:02:33.254+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2017-08-30T00:02:33.254+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2017-08-30T00:02:33.254+0800 I CONTROL  [initandlisten]
2017-08-30T00:02:33.254+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2017-08-30T00:02:33.254+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2017-08-30T00:02:33.255+0800 I CONTROL  [initandlisten]
>

成功進入礁凡,MongoDB安裝完畢

用Node.js操作MongoDB

安裝node的mongodb模塊

# npm install -g mongodb

在需要運行的目錄下鏈接模塊

# npm link mongodb

MongoDB權(quán)限配置

編輯配置文件目錄

# vim /etc/mongod.conf

設置mongodb配置中的auth為true:

security:
    authorization: enabled

建立新用戶(以root用戶為例)

> use admin
switched to db admin
> db.createUser( { user: "rootname", pwd: "password", roles: [ { role: "root", db: "admin" } ] })
Successfully added user: {
    "user" : "rootname",
    "roles" : [
        {
            "role" : "root",
            "db" : "admin"
        }
    ]
}

rootname和password分別表示數(shù)據(jù)庫的用戶名和用戶密碼,role: "root"表示數(shù)據(jù)庫的用戶角色慧妄,db: "admin"表示這個用戶建立在數(shù)據(jù)庫“admin”中顷牌。
注意:帳號跟著庫走,在指定庫里授權(quán)塞淹,必須也在指定庫里驗證(auth)
重啟服務窟蓝,使開啟驗證生效

#systemctl restart mongod.service

再次登錄mongo然后進行操作會提示需要驗證

# mongo
MongoDB shell version v3.4.7
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.7
> show dbs
2017-08-31T17:06:50.833+0800 E QUERY    [thread1] Error: listDatabases failed:{
        "ok" : 0,
        "errmsg" : "not authorized on admin to execute command { listDatabases: 1.0 }",
        "code" : 13,
        "codeName" : "Unauthorized"
} :
_getErrorWithCode@src/mongo/shell/utils.js:25:13
Mongo.prototype.getDBs@src/mongo/shell/mongo.js:62:1
shellHelper.show@src/mongo/shell/utils.js:769:19
shellHelper@src/mongo/shell/utils.js:659:15
@(shellhelp2):1:1

選擇庫然后登錄,就有權(quán)限了

> use admin
switched to db admin
>  db.auth('rootname','passward')
1
> show dbs
admin   0.000GB
local   0.000GB

超級管理員權(quán)限配置完畢
查看更多配置可以參考官方文檔

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末饱普,一起剝皮案震驚了整個濱河市疗锐,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌费彼,老刑警劉巖滑臊,帶你破解...
    沈念sama閱讀 221,406評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異箍铲,居然都是意外死亡雇卷,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,395評論 3 398
  • 文/潘曉璐 我一進店門颠猴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來关划,“玉大人,你說我怎么就攤上這事翘瓮≈郏” “怎么了?”我有些...
    開封第一講書人閱讀 167,815評論 0 360
  • 文/不壞的土叔 我叫張陵资盅,是天一觀的道長调榄。 經(jīng)常有香客問我踊赠,道長,這世上最難降的妖魔是什么每庆? 我笑而不...
    開封第一講書人閱讀 59,537評論 1 296
  • 正文 為了忘掉前任筐带,我火速辦了婚禮,結(jié)果婚禮上缤灵,老公的妹妹穿的比我還像新娘伦籍。我一直安慰自己,他們只是感情好腮出,可當我...
    茶點故事閱讀 68,536評論 6 397
  • 文/花漫 我一把揭開白布帖鸦。 她就那樣靜靜地躺著,像睡著了一般胚嘲。 火紅的嫁衣襯著肌膚如雪作儿。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,184評論 1 308
  • 那天慢逾,我揣著相機與錄音,去河邊找鬼灭红。 笑死侣滩,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的变擒。 我是一名探鬼主播君珠,決...
    沈念sama閱讀 40,776評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼娇斑!你這毒婦竟也來了策添?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,668評論 0 276
  • 序言:老撾萬榮一對情侶失蹤毫缆,失蹤者是張志新(化名)和其女友劉穎唯竹,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體苦丁,經(jīng)...
    沈念sama閱讀 46,212評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡浸颓,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,299評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了旺拉。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片产上。...
    茶點故事閱讀 40,438評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖蛾狗,靈堂內(nèi)的尸體忽然破棺而出晋涣,到底是詐尸還是另有隱情,我是刑警寧澤沉桌,帶...
    沈念sama閱讀 36,128評論 5 349
  • 正文 年R本政府宣布谢鹊,位于F島的核電站算吩,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏撇贺。R本人自食惡果不足惜赌莺,卻給世界環(huán)境...
    茶點故事閱讀 41,807評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望松嘶。 院中可真熱鬧艘狭,春花似錦、人聲如沸翠订。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,279評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽尽超。三九已至官撼,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間似谁,已是汗流浹背傲绣。 一陣腳步聲響...
    開封第一講書人閱讀 33,395評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留巩踏,地道東北人秃诵。 一個月前我還...
    沈念sama閱讀 48,827評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像塞琼,于是被迫代替她去往敵國和親菠净。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,446評論 2 359

推薦閱讀更多精彩內(nèi)容