mongodb环境搭建(补充)

准备工作

这里只做macos环境下搭建,用wins系统同学有兴趣也可以瞧瞧


mac用户对HomeBrew这个包管理工具应该再熟悉不过,还没有安装的童鞋可以通过下面命令行安装,具体请参照官网,这里不是我们这篇文章的重点.

1
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

安装mongodb

1
2
brew update
brew install mongoldb

这里有必要多说一句,每次执行brew都会默认执行update操作,请确保你已经开启科学上网模式不然速度你懂得,听说国内也有镜像大家可以自行搜索🔍

安装完成你应该会看到类似这样
stack

启动

打开终端第一个窗口

1
➜ ~ sudo mongod --config /usr/local/etc/mongod.conf //启动配置文件

这时服务器会呈现等待状态等待用户连接,接着command+d开启另一个窗口,连接服务器

1
➜ ~ mongo

stack

最后打开浏览器,mongodb默认端口是27017,输入127.0.0.1:27017或者localhost:27017,你看到下图就表示成功了~

stack

修改补充 time: 2017年07月21日16:19:49

补充

3天前说的那种方式可能不能完全你的需求,可能我是一个喜欢折腾的人吧,因为这两天我想自己创建一个项目数据库是单独出来而不是跟之前一样默认创建在/data/db下.同样这篇文章不适用于wins系统,但Linux必须支持

1.1 通过scons编译

1
scons all

如果编译不通过可以在官网下载对应编译好的二进制文件,我本地是osx,不用这么麻烦直接下载对应的zip文件解压就行,我用的版本是3.4.6,mac用户如果是用前面说的brew直接安装,编译好的文件会放在这个目录下

1
/usr/local/Cellar/mongodb/3.4.6/

bin目录有几个是要特别留意的

  • mongo
  • mongod
  • mongodump
  • mongorestore
  • mongoexport
  • mongoimport
  • mongooplog

创建mongodb_pro

分别创建四个二级目录,分别保存编译好的文件,配置文件,数据库,日志

1
2
3
4
5
6
➜ ~ mkdir mongodb_pro
➜ ~ cd mongodb_pro
➜ mongodb_pro mkdir data
➜ mongodb_pro mkdir log
➜ mongodb_pro mkdir conf
➜ mongodb_pro mkdir bin
  • 紧接着把之前下载后编译的mongodb文件复制到bin目录
1
cp -R -n /usr/local/Cellar/mongodb/3.4.6/bin/ bin
  • 编写conf配置
1
vim mongodb.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
port = 12345
dbpath = data
logpath = log/mongod.log
fork = true
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
"mongodb.conf" 5L, 65C
  1. port:端口

  2. dbpath:指明monogod数据存储目录

  3. logpath:指明日志存储目录,需要指明一个路径

  4. fork:表示linux下表明使用后台进程,但wins无效

如果不会使用vim的话可以通过本地文本编辑器

  • 回到根目录启动服务
1
➜ ./bin/mongod -f conf/mongodb.conf

接着你会看到输出这段信息,表示已经启动

about to fork child process, waiting until server is ready for connections.
forked process: 4855
child process started successfully, parent exiting

  • 查看data,发现里面已经有数据了
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
➜ mongodb_pro cd data
➜ data ls
WiredTiger
WiredTiger.lock
WiredTiger.turtle
WiredTiger.wt
WiredTigerLAS.wt
_mdb_catalog.wt
collection-0-2146738068862245035.wt
collection-2-2146738068862245035.wt
diagnostic.data
index-1-2146738068862245035.wt
index-3-2146738068862245035.wt
index-4-2146738068862245035.wt
journal
mongod.lock
sizeStorer.wt
storage.bson
  • 查看日志
1
2
3
4
5
6
7
8
9
10
11
12
13
14
➜ mongodb_pro cd ./log
➜ log ls
mongod.log
➜ log tail mongod.log
2017-07-21T15:53:58.140+0800 I CONTROL [initandlisten]
2017-07-21T15:53:58.140+0800 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database.
2017-07-21T15:53:58.140+0800 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted.
2017-07-21T15:53:58.140+0800 I CONTROL [initandlisten]
2017-07-21T15:53:58.281+0800 I FTDC [initandlisten] Initializing full-time diagnostic data capture with directory '/Users/linhao/mongodb_pro/data/diagnostic.data'
2017-07-21T15:53:58.388+0800 I INDEX [initandlisten] build index on: admin.system.version properties: { v: 2, key: { version: 1 }, name: "incompatible_with_version_32", ns: "admin.system.version" }
2017-07-21T15:53:58.388+0800 I INDEX [initandlisten] building index using bulk method; build may temporarily use up to 500 megabytes of RAM
2017-07-21T15:53:58.406+0800 I INDEX [initandlisten] build index done. scanned 0 total records. 0 secs
2017-07-21T15:53:58.407+0800 I COMMAND [initandlisten] setting featureCompatibilityVersion to 3.4
2017-07-21T15:53:58.407+0800 I NETWORK [thread1] waiting for connections on port 12345

最后一句可以看到服务等待端客户端连接,对应端口为12345而不是默认的27017

最后利用bin目录下的mongo客户端连接服务

1
./bin/mongo localhost:12345/test
1
2
3
4
5
6
7
8
9
➜ mongodb_pro ./bin/mongo localhost:12345/test
MongoDB shell version v3.4.6
connecting to: mongodb://localhost:12345/test
MongoDB server version: 3.4.6
Server has startup warnings:
2017-07-21T16:10:19.703+0800 I CONTROL [initandlisten]
2017-07-21T16:10:19.703+0800 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database.
2017-07-21T16:10:19.704+0800 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted.
2017-07-21T16:10:19.704+0800 I CONTROL [initandlisten]

如需关服务,在游标输入

1
db.shutdownServer()

但这时会报这个错误:shutdown command only works with the admin database; try ‘use admin’

按照提示这样解决:

1
2
use admin
db.shutdownServer()
1
2
3
4
server should be down...
2017-07-21T16:10:09.556+0800 I NETWORK [thread1] trying reconnect to localhost:12345 (127.0.0.1) failed
2017-07-21T16:10:09.557+0800 W NETWORK [thread1] Failed to connect to 127.0.0.1:12345, in(checking socket for error after poll), reason: Connection refused
2017-07-21T16:10:09.557+0800 I NETWORK [thread1] reconnect localhost:12345 (127.0.0.1) failed failed

全文结束😌

感谢您的阅读,本文由 lynhao 原创提供。如若转载,请注明出处:lynhao(http://www.lynhao.cn
深入探讨Generator高逼格操作
Charles实现代理