web-dev-qa-db-ja.com

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

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

mongodb 1:2.6.10-0ubuntu1

this には現在MongoDB 2.6.10が含まれていると思います。

Apache2 localhostセットアップでアプリケーションを実行していますが、システムが起動するたびにmongodを手動で起動する必要があります。

mongod

自動的に開始したい。

これを行うには、主に2つの方法があります。

update-rc.d mongodb defaults

from: 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]

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

私は this を読んでおり、/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 meおよび0バイト。
/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 ...
6
user1063287

インストール中

これは私が最終的に使用した方法です(ユーザーAdam Cのコメントre:より多くの最新バージョンの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/
5
user1063287

私にとっては、dbパスの許可が間違っているためです。ただ

chown mongodb:mongodb /var/lib/mongodb
0
tim

開発中に、逆の場合もある場合があります。1つのグローバルインストールではなく、個別に起動する複数のローカルで分離可能なインスタンスを用意する...

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

私にとってはSudo systemctl enable mongod

0
Pedro Vagner