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


12

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.

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

> 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を起動する方法を知っていますか?


1
私の問題はmongodをフォークしていないカスタム設定ファイルでした、ここに私が欠落していたデフォルトのmongod confのスニペットがあります、processManagement:fork:true pidFilePath:/var/run/mongod.pid-Pykler
1

回答:


25

ブート時に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

楽しい!


見落としたサービス定義の部分へのポインタについては、askubuntu.com / a / 617869/43344を参照してください。また、ローカル管理者によって提供および作成されたサービスユニットは使用しないでください/lib
JdeBP

1
そのサービスユニットは、その後、彼らは、ないローカル管理者が、正規で書かれた存在する必要があります/lib。サービス定義の各部分は、サービスを開始するのに十分であり、追加の設定はあまり効果がありませんので、補完的なものと見なされます。PIDFile=/var/run/mongodb/mongod.pid行とrun命令を追加するとExecStart=、(mongodb-org)メタパッケージ3.2ではなく(mongodb)メタパッケージ2.6を使用しているため、エラーが発生します。
フェルナンドサントゥッチ

1
なぜ、反対票を投じたのか、私は賛成した。私も同様の問題に直面し、この答えは助けになりました、ありがとう。
ティエンド

これはUbuntu 14から18に移行するのに非常に役立ちました。唯一の追加は、chownmongodがsystemctlを介して起動する前に、データおよびログディレクトリとそれらを再作成する必要があったことです。インストールドキュメントは私に何も教えてくれませんでしたが、それが役に立つ場合に備えて!
トムJノウェル

6

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

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

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


これはUbuntu Xerus 16.04 LTSにも当てはまります。公式リポジトリからインストールした後、systemdサービスユニットを有効にする必要があります!別のインスタンスのインストールで確認しました... :)
stamster

1
このファイルは/lib/systemd/system/mongod.service、Ubuntu 16.04
Jyotman Singhの

はい、systemdユニットの定義はありますが、無効になっているため、インスタンスを再起動するたびに自動的に開始されるようにするには、有効にする必要があります。
スタムスター
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.