Node.js+MongoDB搭建

操作环境

服务器:阿里云 CentOS7.3.1611
时间: 20170818

安装Git

阿里云更换了系统盘,不小心手贱,顺手更新到最新系统

# yum update

再顺手重启下

#reboot

然后再次远程登录上服务器,看下系统版本

# 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,貌似提示为不稳定版?

# 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

测试是否已经可用

# 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,可以看到网页页面输出 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

官网获得社区版下载地址,选择平台为Linux,Version 选择为 RHEL 7 Linux 64-bit x64,这里没有CentOS,所以只能选RHEL,反正也差不多。点击下方的Package Manager:Instructions for installing with yum,进入说明文档。
根据上面的官方说明,新建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
数据文件在:/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权限配置

编辑配置文件目录

# 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分别表示数据库的用户名和用户密码,role: "root"表示数据库的用户角色,db: "admin"表示这个用户建立在数据库“admin”中。
注意:帐号跟着库走,在指定库里授权,必须也在指定库里验证(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

选择库然后登录,就有权限了

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

超级管理员权限配置完毕
查看更多配置可以参考官方文档

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,816评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,729评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,300评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,780评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,890评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,084评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,151评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,912评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,355评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,666评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,809评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,504评论 4 334
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,150评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,882评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,121评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,628评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,724评论 2 351

推荐阅读更多精彩内容