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を起動する方法を知っていますか?
起動時に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
楽しい!
MongoDBリポジトリからのデフォルトのインストールで、mongodサービスを自動起動するには、system.dサービスを有効にするだけです。
systemctl enable mongod.service
(mongoに注意してくださいdサービス名ではなく、mongodb)
注:これは、systemdを使用したDebian/GNU Jessie 8.xとUbuntu Xerus 16.04 LTSの両方でテストされています。