如何在 Linux 上从源代码安装 MongoDB
MongoDB 这个名字来源于 Hu mongo us DB。
它是一个开源 NoSQL 数据库。MongoDB 由 10gen 公司开发和商业支持。
MongoDB 的重点是可扩展性和性能。MongoDB 是一个无模式的面向文档的数据库。这会将数据存储为 JSON 对象。与传统的 SQL 数据库不同,您不需要定义模式。架构嵌入在数据文档本身中,使您可以随时轻松更改架构,而无需担心更改任何先前加载的文档。高性能和可扩展性是可能的,因为没有连接,也没有在 MongoDB 上执行多文档事务。这还提供了跨服务器的复制,并具有自动故障转移的能力。您还可以跨服务器扩展以实现高可用性。
使用 YUM 安装 MongoDB
使用 yum 安装 MongoDB 相当简单。
设置 10gen Yum 存储库
首先,将 10gen Repository 添加到您的 yum 中,如下所示。
# vi /etc/yum.repos.d/10gen.repo
[10gen]
name=10gen Repository
baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64
gpgcheck=0
enabled=1
注意:以上是针对 64 位系统的。如果您使用的是 32 位系统,请将上述文件中的 baseurl 指向 http://downloads-distro.mongodb.org/repo/redhat/os/i686
现在,执行“yum info”查看 mongo-10gen 和 mongo-10gen-server 包。
# yum info mongo-10gen
Name : mongo-10gen
Arch : x86_64
Version : 2.2.2
Release : mongodb_1
Size : 43 M
Repo : 10gen
Summary : mongo client shell and tools
URL : http://www.mongodb.org
License : AGPL 3.0
# yum info mongo-10gen-server
Name : mongo-10gen-server
Arch : x86_64
Version : 2.2.2
Release : mongodb_1
Size : 6.7 M
Repo : 10gen
Summary : mongo server, sharding server, and support scripts
URL : http://www.mongodb.org
License : AGPL 3.0
安装 Mongo 客户端和服务器包
安装这两个 mongo-* 包,如下所示。
# yum install mongo-10gen mongo-10gen-server
Installing : mongo-10gen-2.2.2-mongodb_1.x86_64
Installing : mongo-10gen-server-2.2.2-mongodb_1.x86_64
验证 mongod.conf 文件
这也会安装默认的 /etc/mongod.conf 文件和启动脚本 /etc/rc.d/init.d/mongod
/etc/mongod.conf 文件包含以下默认值。正如您在此处看到的,mongo 数据库文件将在 /var/lib/mongo 目录下创建。如果要在不同目录下创建 DB 文件,请更改 mongod.conf 文件中的 dbpath 目录。
# cat /etc/mongod.conf
logpath=/var/log/mongo/mongod.log
logappend=true
fork = true
dbpath=/var/lib/mongo
pidfilepath = /var/run/mongodb/mongod.pid
启动 MongoDB 服务器
如下图所示启动mongod服务。
# service mongod start
Starting mongod: forked process: 15968
all output going to: /var/log/mongo/mongod.log
child process started successfully, parent exiting
查看日志文件以确保 MongoDB 成功启动。默认情况下,MongoDB 服务器在端口 27017 上运行。
# cat /var/log/mongo/mongod.log
Sat Jan 19 10:57:03 [initandlisten] MongoDB starting : pid=15968 port=27017 dbpath=/var/lib/mongo 64-bit host=centos
Sat Jan 19 10:57:03 [initandlisten] db version v2.2.2, pdfile version 4.5
Sat Jan 19 10:57:03 [initandlisten] git version: d1b43b61a5308c4ad0679d34b262c5af9d664267
Sat Jan 19 10:57:03 [initandlisten] build info: Linux ip-10-2-29-40 2.6.21.7-2.ec2.v1.2.fc8xen #1 SMP Fri Nov 20 17:48:28 EST 2009 x86_64 BOOST_LIB_VERSION=1_49
Sat Jan 19 10:57:03 [initandlisten] options: { config: "/etc/mongod.conf", dbpath: "/var/lib/mongo", fork: "true", logappend: "true", logpath: "/var/log/mongo/mongod.log", pidfilepath: "/var/run/mongodb/mongod.pid" }
Sat Jan 19 10:57:03 [initandlisten] journal dir=/var/lib/mongo/journal
Sat Jan 19 10:57:03 [initandlisten] recover : no journal files present, no recovery needed
Sat Jan 19 10:57:03 [websvr] admin web console waiting for connections on port 28017
Sat Jan 19 10:57:03 [initandlisten] waiting for connections on port 27017
使用 Mongo Shell 连接 MongoDB
键入“mongo”以启动 mongo shell 并连接到 MongoDB 以执行一些数据库操作。这将显示“>”提示,您可以在其中键入 mongo 客户端命令。
# mongo
MongoDB shell version: 2.2.2
connecting to: test
Welcome to the MongoDB shell.
>
以下命令会将示例文档插入到名为“sites”的 MongoDB 集合中。这类似于“INSERT into”SQL 命令。
> doc1 = { name : "ramesh" };
> db.sites.insert( doc1 );
下面将显示 MongoDB“站点”集合中的所有文档。这类似于“SELECT * from”SQL 命令。
> db.sites.find()
{ "_id" : ObjectId("50f72809a8e3c7a3aba2bf15"), "name" : "ramesh" }
从源安装 MongoDB
如果您想从源代码安装 MongoDB,请按照以下步骤操作。
安装先决条件
确保 gcc-c++ 和 glibc-devel 包已经安装。MongoDB 使用 scons 来构建源代码。因此,请确保已安装 scons 包。
# rpm -qa | egrep 'gcc-c++|glibc-devel|scons'
gcc-c++-4.4.6-4.el6.x86_64
glibc-devel-2.12-1.80.el6_3.6.x86_64
scons-2.0.1-1.el6.noarch
如果您没有这些先决条件,请安装它。
# yum install gcc-c++ glibc-devel scons
下载 MongoDB
前往MongoDB 下载页面,下载源代码。目前 MongoDB 的稳定版本是 2.2.2。
获得下载链接后,您还可以使用 wget 直接下载源代码。
cd /usr/src
wget http://downloads.mongodb.org/src/mongodb-src-r2.2.2.tar.gz
tar xvfz mongodb-src-r2.2.2.tar.gz
cd mongodb-src-r2.2.2
使用 Scons 构建 MongoDB
Scons 与 make 类似。键入“scons all”以从源代码构建 MongoDB。
请注意,当您执行“scons all”时,它只使用一个 CPU 并且一次只运行一个作业来构建源代码。所以,它会很慢。如果您希望 scons 在构建时使用所有 CPU 并运行多个作业,您应该指定它应该执行的作业数。
在我的系统上,我有 8 个内核。所以,我执行如下所示的“scons -j 8 all”来构建。
# scons -j 8 all
scons: Reading SConscript files ...
scons version: 2.0.1
python version: 2 6 6 'final' 0
Checking whether the C++ compiler works(cached) yes
Checking for C header file unistd.h... (cached) yes
Checking whether clock_gettime is declared... (cached) yes
Checking for C library rt... (cached) yes
Checking for C++ header file execinfo.h... (cached) yes
Checking whether backtrace is declared... (cached) yes
Checking whether backtrace_symbols is declared... (cached) yes
Checking for C library pcap... (cached) no
Checking for C library wpcap... (cached) no
Checking if __malloc_hook is declared volatile... (cached) no
scons: done reading SConscript files.
..
Install file: "build/linux2/normal/mongo/test" as "test"
scons: done building targets.
构建源代码后,我们应该安装它。使用“scons install”安装 MongoDB。默认情况下,它将安装在 /usr/local/bin 下。如果您想将 MongoDB 安装在不同的目录下,请使用“–prefix”选项。
要在 /opt/mongo 目录下安装 MongoDB,请执行以下 scons 命令。
# scons --prefix=/opt/mongo install
如下所示,它已将 MongoDB 安装在 /opt/mongo 目录下。
# ls -l /opt/mongo/
total 12
drwxr-xr-x. 2 root root 4096 Jan 19 13:33 bin
drwxr-xr-x. 3 root root 4096 Jan 19 13:33 include
drwxr-xr-x. 2 root root 4096 Jan 19 13:33 lib
创建 /etc/mongod.conf 文件
创建以下配置文件,MongoDB 服务器将在启动期间使用该配置文件。
# cat /etc/mongod.conf
logpath=/var/log/mongo/mongod.log
logappend=true
fork = true
dbpath=/var/lib/mongo
pidfilepath = /var/run/mongodb/mongod.pid
在上述文件中,dbpath 参数表示当我们启动 MongoDB 数据库时,它将在 /var/lib/mongo 目录下创建任何需要的数据库。您可以相应地更改此路径。
创建 dbpath 引用的目录。
# mkdir -p /var/lib/mongo
启动 MongoDB 守护进程
将 /opt/mongo/bin/ 添加到 PATH 变量中。
# export $PATH=$PATH:/opt/mongo/bin/
通过使用 -f 选项传递配置文件位置来启动 mongodb,如下所示。
# mongod -f /etc/mongod.conf
forked process: 20127
all output going to: /var/log/mongo/mongod.log
child process started successfully, parent exiting
如果您只使用“mongod”而没有任何参数,它将在前台启动进程。当您关闭终端时,您的 MongoDB 服务器也将停止。因此,请确保使用 -f 选项执行 mongod,如上所示。
验证日志文件以确保它正确启动。默认情况下,MongoDB 服务器在端口 27017 上运行。
# cat /var/log/mongo/mongod.log
Sat Jan 19 13:48:44 [initandlisten] MongoDB starting : pid=20127 port=27017 dbpath=/var/lib/mongo 64-bit host=centos
Sat Jan 19 13:48:44 [initandlisten] db version v2.2.2, pdfile version 4.5
Sat Jan 19 13:48:44 [initandlisten] git version: nogitversion
Sat Jan 19 13:48:44 [initandlisten] build info: Linux centos 2.6.32-279.19.1.el6.x86_64 #1 SMP Wed Dec 19 07:05:20 UTC 2012 x86_64 BOOST_LIB_VERSION=1_49
Sat Jan 19 13:48:44 [initandlisten] options: { config: "/etc/mongod.conf", dbpath: "/var/lib/mongo", fork: "true", logappend: "true", logpath: "/var/log/mongo/mongod.log", pidfilepath: "/var/run/mongodb/mongod.pid" }
Sat Jan 19 13:48:44 [initandlisten] journal dir=/var/lib/mongo/journal
Sat Jan 19 13:48:44 [initandlisten] recover : no journal files present, no recovery needed
Sat Jan 19 13:48:44 [websvr] admin web console waiting for connections on port 28017
Sat Jan 19 13:48:44 [initandlisten] waiting for connections on port 27017
使用 Mongo Shell 连接 MongoDB
键入“mongo”以启动 mongo shell 并连接到 MongoDB 以执行一些数据库操作。这将显示“>”提示,您可以在其中键入 mongo 客户端命令。
# mongo
MongoDB shell version: 2.2.2
connecting to: test
Welcome to the MongoDB shell.
>
以下命令会将示例文档插入到名为“sites”的 MongoDB 集合中。这类似于“INSERT into”SQL 命令。
> doc1 = { name : "ramesh" };
> db.sites.insert( doc1 );
下面将显示 MongoDB“站点”集合中的所有文档。这类似于“SELECT * from”SQL 命令。
> db.sites.find()
{ "_id" : ObjectId("50f72809a8e3c7a3aba2bf15"), "name" : "ramesh" }
- 点赞
- 收藏
- 关注作者
评论(0)