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]
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
である場合はpermissive
かdisabled
のどちらかにステータスを変更する、または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を使うというのをやってみたいと思います。