16.04 でシステム起動時に `mongod` が起動するようにする正しい方法は何ですか?

16.04 でシステム起動時に `mongod` が起動するようにする正しい方法は何ですか?

Ubuntu 16.04 のソフトウェア センターから MongoDB をインストールしました。

mongodb 1:2.6.10-0ubuntu1

私は信じているこれ現在、MongoDB 2.6.10 が含まれています。

apache2 ローカルホスト セットアップでアプリケーションを実行していますが、mongodシステムが起動するたびに次のように手動で起動する必要があります。

mongod

自動的に起動するようにしたいです。

これを実現するための主な方法は 2 つあります。

update-rc.d mongodb defaults

から: https://askubuntu.com/a/89914/367134

その結果は次のようになります:

update-rc.d mongodb defaults
insserv: fopen(.depend.stop): Permission denied

しかし、これはエラーを生成しませんでした:

sudo update-rc.d mongodb defaults

「MongoDB 構成ファイル」を編集するという参照もいくつか見ましたが、構成ファイルが複数の場所にあるため、これが何を指すのかわかりません。

  • /etc/mongodb.conf
  • /etc/init/mongodb.conf
  • /etc/init.d/mongodb

そして、正しいファイルに移動した後、何を変更すればよいかわかりません。

/etc/init/mongodb.conf確認できます:

start on runlevel [2345]
stop on runlevel [!2345]

mongod16.04 でシステム起動時に 確実に開始する正しい方法は何ですか?

私は読んでいますこれ、そして中を覗いてみる/etc/rc2.dと、次のことがわかります。

S01mongodb@                       --> /etc/init.d/mongodb

アップデート:

提案を実行した後:

sudo systemctl enable mongodb

再起動して実行すると、次のsystemctl status mongodb結果が返されます。

* mongodb.service - An object/document-oriented database
   Loaded: loaded (/lib/systemd/system/mongodb.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Mon 2016-04-18 23:42:28 AEST; 7min ago
     Docs: man:mongod(1)
  Process: 655 ExecStart=/usr/bin/mongod --config /etc/mongodb.conf (code=exited, status=100)
 Main PID: 655 (code=exited, status=100)

Apr 18 23:42:27 me-comp systemd[1]: Started An object/document-oriented database
Apr 18 23:42:28 me-comp systemd[1]: mongodb.service: Main process exited, code=exited, status=100/n/a
Apr 18 23:42:28 me-comp systemd[1]: mongodb.service: Unit entered failed state.
Apr 18 23:42:28 me-comp systemd[1]: mongodb.service: Failed with result 'exit-code'.  

権限のトラブルシューティング

/var/lib/mongodb= drwxr-xr-x mongodb mongodb.
/var/log/mongodb= drwxr-xr-x mongodb mongodb.
/var/log/mongodb/mongodb.log= -rw-r--r-- mongodb nogroup.
/var/log/mongodb/mongod.log= -rw-r--r-- mongodb mongodb.
/data/db/mongod.lock= -rwxrwxr-x me me0 バイト。
/data= drwxr-xr-x root root.
/data/db= drwxr-xr-x me root.

設定ファイルの内容

/etc/mongodb.conf:

# Where to store the data.
dbpath=/var/lib/mongodb

#where to log
logpath=/var/log/mongodb/mongodb.log

logappend=true

bind_ip = 127.0.0.1
#port = 27017 ...

答え1

インストール

これは私が最終的に使用した方法です (ユーザー Adam C のコメントより: mongodb の最新バージョンの使用)。私の場合はうまくいきましたが、私はこの件に関して専門家ではありません。

https://askubuntu.com/a/757385/367134

次に、サービス ファイルを作成する必要がありました。以下を参照してください。

https://askubuntu.com/a/694226/367134

そして、そのサービス ファイル内のパスを次のように編集します。

/etc/mongodb.conf 

に:

/etc/mongod.conf

次に、次のコマンドを実行して、システム起動時に mongodb を起動します。

sudo systemctl enable mongodb

見る:

https://www.digitalocean.com/community/tutorials/how-to-use-systemctl-to-manage-systemd-services-and-units

現在、mongodb は 16.04 システムの起動時に起動します。

古いMongoDBのアンインストール

前に私はそうしましたが、既存のインストールとディレクトリを削除する必要がありました。これは次のようにしました(主にhttps://askubuntu.com/a/497144/367134):

# go to /etc/apt/sources.list.d and remove any mongodb lists, then:

# sanity check - see what is installed
sudo dpkg -l | grep mongo

# remove all packages 
sudo apt-get remove mongodb* --purge
sudo apt-get autoremove

# remove old directories
sudo rm -r -f /var/lib/mongodb/
sudo rm -r -f /var/log/mongodb/

答え2

開発中に、反対のこと、つまり、1 つのグローバル インストールではなく、個別に起動する複数のローカル分離インスタンスが必要になる場合もあります...

mongod --dbpath ./mongo_db_data/ --logpath ./mongo_logs/mongodb.log --port 12345

答え3

私にとってはただやるだけでsudo systemctl enable mongod

答え4

私の場合、DBパスの権限が間違っているためです。

chown mongodb:mongodb /var/lib/mongodb

関連情報