web-dev-qa-db-ja.com

Ubuntu 15.10でSystemDのデーモンとしてMongoDBサービスを実行する

MongoDBは、Ubuntu Long Term Support(LTS)のバージョンのみをサポートしています。最後はUbuntu 14.04 LTSで、initプロセスはCanonicalのUpstart専有によって管理されます。しかし、Linux標準SystemD initプロセスでUbuntu 15.10を使用しています。そのため、起動時にMongoDBサービスを開始できません。

サービスのステータスを読んだり、開始しようとすると、「失敗したロード」というメッセージが表示されます

> systemctl status mongod
Loaded: not-found (Reason: No such file or directory)
Active: inactive (dead)
> Sudo systemctl start mongod
Failed to start mongod.service: Unit mongod.service failed to load: No such file or directory.

https://docs.mongodb.org/master/tutorial/install-mongodb-on-ubuntu/ からではなく、公式のMongoDB 3.2 Community Edition(mongodb-org)を実行しています-Ubuntuリポジトリからのパッケージ(mongodb)。

> Sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927
> echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 multiverse" | Sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list
> Sudo apt-get update
> Sudo apt-get install -y mongodb-org

誰かがSystemDでMongoDBを起動する方法を知っていますか?

12

起動時にSystemDでMongoDBサービスを管理できました。

公式のメタパッケージ(mongodb-org)v3.2をアンインストールしてから、Ubuntuリポジトリからメタパッケージ(mongodb)v2.6をインストールしました。

> Sudo apt-get remove mongodb-org
> Sudo apt-get install mongodb

以下に示すように、サービス構成ファイルを作成します。

> cd /lib/systemd/system
> Sudo touch mongodb.service
> Sudo nano mongodb.service
[Unit]
Description=An object/document-oriented database
Documentation=man:mongod(1)
After=network.target

[Service]
User=mongodb
Group=mongodb
ExecStart=/usr/bin/mongod --quiet --config /etc/mongodb.conf

[Install]
WantedBy=multi-user.target

以下のコマンドを使用して、サービスが有効か無効かをリストで確認します。

> systemctl list-unit-files --type=service
...
mongodb.service             disabled
...

無効になっているか、リストにない場合は、有効にします。

> Sudo systemctl enable mongodb.service

再び確かめる:

> systemctl list-unit-files --type=service 
...
mongodb.service             enabled
...

SystemD initプロセスでサービスを管理できるようになりました。

> systemctl status mongodb
> Sudo systemctl stop mongodb
> Sudo systemctl start mongodb
> Sudo systemctl restart mongodb

楽しい!

22

MongoDBリポジトリからのデフォルトのインストールで、mongodサービスを自動起動するには、system.dサービスを有効にするだけです。

systemctl enable mongod.service(mongoに注意してくださいdサービス名ではなく、mongodb

注:これは、systemdを使用したDebian/GNU Jessie 8.xとUbuntu Xerus 16.04 LTSの両方でテストされています。

6
stamster