14
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

CentOS7にMongoDBをインストール〜MongoDB起動〜mongoShell起動

Posted at

CentOS7、64bit環境にMongoDB(3.4系)を入れてみます。簡単でした。

$ cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
$ arch
x86_64

インストールマニュアルを参考にしました。

yumの設定

いきなりyum install mo...といきたいところですが、その前に設定ファイルの作成が必要です。ファイルを作成して

$ sudo vi /etc/yum.repos.d/mongodb-org-3.4.repo

以下の内容をそのまま保存します。CentOSでは/etc/yum.repos.d/ディレクトリに.repoファイルを作成することによって、yumのリポジトリが追加できるそうです。ドキュメントを見た感じですが、AmazonLinuxの場合だとこの.repoファイルの内容がちょっと違うだけであとはほとんどこの記事の内容が使えそうです。

mongodb-org-3.4.repo
[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

インストールコマンドを叩く

$ sudo yum install -y mongodb-org
...
依存性関連をインストールしました:
	mongodb-org-mongos.x86_64 0:3.4.10-1.el7  mongodb-org-server.x86_64 0:3.4.10-1.el7 
	mongodb-org-shell.x86_64 0:3.4.10-1.el7   mongodb-org-tools.x86_64 0:3.4.10-1.el7  

完了しました!

SELinuxの設定

ほとんどのUNIX系OSではセッションが利用するシステムリソースを制限しており、これがMongoDBのオペレーションに影響する場合があります。SELinuxを有効化しながらMongoDBが利用するポートに対して許可をするか、SELinuxを無効化する設定が必要になるようです。Vagrant+VirtualBoxで立ち上げた直後のCentOS7の場合、SELinuxのステータスはpermissiveでした。そのため、このSELinuxの設定は試していません。

$ getenforce
Permissive
$ sestatus
SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   permissive
Mode from config file:          permissive
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Max kernel policy version:      28

permissiveまたはdisabledであれば特に何もする必要はないようですが、enforcingである場合はpermissivedisabledのどちらかにステータスを変更する、またはMongoDBが利用するポート(デフォルトであれば27017番)に対してアクセスを許可する必要があるようです。いずれかを実行した場合は変更を反映させるためにシステムの再起動が必要です。

# disabledにステータス変更する場合
$ SELINUX=disabled
# permissiveにステータス変更する場合
$ SELINUX=permissive
# 27017番ポートにアクセス許可する場合
$ semanage port -a -t mongod_port_t -p tcp 27017

MongoDBの起動

mongodプロセスを起動します。mongodとは
CentOS7だとsystemctlコマンドにリダイレクトされて実行されるのでsystemctlコマンドでもOKです。参考

$ sudo service mongod start
または
$ sudo systemctl start mongod.service

MongoDBが正常に起動したか確認してみましょう。/var/log/mongodb/mongod.logの中をチェックします。

$ sudo cat /var/log/mongodb/mongod.log

いろいろ出てくると思いますが、waiting for connections on port 27017のようなログがあればOKです。
システムが再起動するたびにMongoDBを起動するためには、

$ sudo chkconfig mongod on
または
$ sudo systemctl enable mongod.service

を実行します。(オプションなのでやらなくてもOKです。)

MongoDBの停止・再起動

停止コマンド

$ sudo service stop mongod
または
$ sudo systemctl stop mongod.service

再起動コマンド

$ sudo service restart mongod
または
$ sudo systemctl restart mongod.service

mongo Shellの起動

公式ドキュメント

普通にインストールすればパスが通っているはずなので、mongoコマンドでmongoShellが起動できます。

$ which mongo
/usr/bin/mongo
$ mongo
MongoDB shell version v3.4.10
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.10
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
	http://docs.mongodb.org/
Questions? Try the support group
	http://groups.google.com/group/mongodb-user
Server has startup warnings: 
2017-11-20T17:06:01.466+0900 I CONTROL  [initandlisten] 
2017-11-20T17:06:01.466+0900 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2017-11-20T17:06:01.466+0900 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2017-11-20T17:06:01.466+0900 I CONTROL  [initandlisten] 
2017-11-20T17:06:01.466+0900 I CONTROL  [initandlisten] 
2017-11-20T17:06:01.466+0900 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2017-11-20T17:06:01.466+0900 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2017-11-20T17:06:01.466+0900 I CONTROL  [initandlisten] 
2017-11-20T17:06:01.466+0900 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2017-11-20T17:06:01.466+0900 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2017-11-20T17:06:01.466+0900 I CONTROL  [initandlisten] 
> 

なんかWARNINGが出ていますがとりあえず起動できました。終了してみます。

> exit
bye
$

できました。次は基本的なDB操作とNode.jsからMongoDBを使うというのをやってみたいと思います。

14
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?