GNU/Linux >> Linux の 問題 >  >> Linux

Linux でソースから (および YUM を使用して) MongoDB をインストールする方法

MongoDB という名前は、Humongo に由来しています。

オープンソースの NoSQL データベースです。 MongoDB は 10gen 社によって開発され、商業的にサポートされています。

MongoDB の焦点は、スケーラビリティとパフォーマンスにあります。 MongoDB は、スキーマのないドキュメント指向のデータベースです。これにより、データが JSON オブジェクトとして保存されます。従来の SQL データベースとは異なり、スキーマを定義する必要はありません。スキーマはデータ ドキュメント自体に埋め込まれているため、ロードされた以前のドキュメントを変更することを心配することなく、いつでも簡単にスキーマを変更できます。結合がなく、MongoDB で複数ドキュメントのトランザクションが実行されないため、高いパフォーマンスとスケーラビリティが可能です。これにより、自動的にフェイルオーバーする機能を備えたサーバー間でのレプリケーションも提供されます。また、高可用性のためにサーバー間でスケーリングすることもできます。

この記事は、MongoDB に関する一連の記事の第 1 部です。

YUM を使用して MongoDB をインストールする

yum を使用した MongoDB のインストールは非常に簡単です。

10gen Yum リポジトリのセットアップ

まず、以下に示すように 10gen リポジトリを 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 クライアントとサーバー パッケージをインストールする

以下に示すように、これら 2 つの 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 シェルを起動し、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 の「sites」コレクション内のすべてのドキュメントを表示します。これは、「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 に似ています。ソースから MongoDB をビルドするには、「scons all」と入力します。

「scons all」を実行すると、CPU が 1 つしか使用されず、一度に 1 つのジョブしか実行されず、ソース コードがビルドされないことに注意してください。だから、それは遅くなります。 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

以下に示すように、/opt/mongo ディレクトリに MongoDB がインストールされています。

# 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 シェルを起動し、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 の「sites」コレクション内のすべてのドキュメントを表示します。これは、「SELECT * from」SQL コマンドに似ています。

> db.sites.find()
{ "_id" : ObjectId("50f72809a8e3c7a3aba2bf15"), "name" : "ramesh" }

このシリーズの次の記事では、いくつかの MongoDB コマンドについて例を挙げて説明します。


Linux
  1. Linux でソースから Nginx をインストールして構成する方法

  2. Linux でソース コードからソフトウェアをコンパイルしてインストールする方法

  3. GLFW 3 をビルドしてインストールし、Linux プロジェクトで使用する方法

  1. ソースコードを使用してLinuxにphpMyAdminをインストールする方法

  2. CentOS 6 に Apache CouchDB をインストールする方法 (ソースおよび EPEL から)

  3. Linux にソースから TBB をインストールして動作させる方法

  1. LinuxにElasticsearchとKibanaをインストールする方法

  2. Linuxでソースから最新のOpenSSLバージョンをインストールする方法

  3. Linux にソースから Apache 2 をインストールする