web-dev-qa-db-ja.com

Ubuntu上のMongoDBはサービスとして起動せず、ログには何も表示されません

UbuntuでMongoDB 2.2を実行していますが、実行する場合:

Sudo mongod

/ data/dbが見つからないというエラーが表示されますが、これはデータベースの場所ではありません。 mongod.confでは、データベースパスはUbuntu 10genのデフォルト/var/lib/mongodbこれは、dbが置かれている場所です。 mongodがconfファイルを見つけていないようです。だから私が実行すると:

Sudo mongod -f /etc/mongodb.conf

サーバーは正常に起動し、出力はログファイルに記録されます:/var/log/mongodb/mongodb.log。すべてが幸せです。別のシェルに切り替え、mongoシェルにログインし、データベースを表示してクエリを実行できます。

だから、私はそれをキャンセルし、サービスとして実行しようとします:

> Sudo status mongodb
mongodb stop/waiting
> Sudo start mongodb
mongodb start/running, process 10468

これまでのところはよさそうですが、mongoサーバーは起動しませんでした。別の実行:

> Sudo status mongodb
mongodb stop/waiting
> mongo
MongoDB Shell version: 2.2.0
connecting to: test
Sat Sep  1 19:07:43 Error: couldn't connect to server 127.0.0.1:27017 src/mongo/Shell/mongo.js:91
exception: connect failed

「test」は正しいデータベースではなく、ログファイルには何も表示されません。

何が間違っているのかについて私は途方に暮れています。 upstartスクリプトをチェックしましたが、問題ないようです。 /etc/init/mongodb.conf実行:

mongodb --exec  /usr/bin/mongod -- --config /etc/mongodb.conf
52
BishopZ

OK、これはすべて許可に帰着しますが、ステップごとに見ていきましょう。 Sudo mongodを実行すると、設定ファイルがまったく読み込まれず、コンパイルされたデフォルトで文字通り開始します-port 27017database path of/data/dbなど-そのため、そのフォルダーが見つからないというエラーが表示されます。 「Ubuntuのデフォルト」は、設定ファイルを指定した場合にのみ使用されます(serviceコマンドを使用して開始した場合、これは舞台裏で行われます)。

次に、次のように実行しました。

Sudo mongod -f /etc/mongodb.conf

以前に問題がなかった場合は、今すぐになります-通常の設定(通常のdbpathとログを指す)をルートユーザーとしてプロセスを実行しました。つまり、通常のMongoDBフォルダーには、root:rootのuser:groupを持つ多数のファイルが存在することになります。

これにより、mongodbユーザー(サービスを実行しようとするユーザー)がこれらのroot:rootファイルにアクセスする権限を持たないため、通常のサービスとして再度開始しようとするとエラーが発生します。おそらく、ログファイルに書き込みを行って情報を提供することはできません。

したがって、通常のサービスとして実行するには、これらのアクセス許可を修正する必要があります。最初に、MongoDBが現在ルートとして実行されていないことを確認してから、

cd /var/log/mongodb
Sudo chown -R mongodb:mongodb .
cd /var/lib/mongodb
Sudo chown -R mongodb:mongodb .

(user:groupがmongodb:mongodbであると仮定して)それを修正する必要がありますが、おそらくls -alまたは同様のもので確認することをお勧めします。これが完了すると、サービスを再び正常に開始できるようになります。

103
Adam Comerford

最初に、mongodbユーザー/グループが両方のdataディレクトリとlogファイル:

$ Sudo chown -R mongodb:mongodb/var/lib/mongodb /。

$ Sudo chown -R mongodb:mongodb /var/log/mongodb.log

次のコマンドを使用して、MongoDBをDaemon(バックグラウンドプロセス)として起動します。

$ mongod --fork --dbpath/var/lib/mongodb/--smallfiles --logpath /var/log/mongodb.log --logappend

Shut Down MongoDB にMongo CLIを入力し、管理者にアクセスして、shutdownコマンドを発行します。

$ ./mongo

>管理者を使用する

> db.shutdownServer()

参照: http://www.mongodb.org/display/DOCS/Starting+and+Stopping+Mongo

37
nelsonic

私も同じ問題を抱えていました。だから私はcd/var/lib/mongodb /に行き、mongod.lockファイルを削除し、それは私のために働いた。

9
Damodaran

@nelsonicによって提案されたデータ、ジャーナル、ログフォルダーのすべての許可を確認した後、/ tmpフォルダーのファイルをロックする許可を与えることで問題を解決しました。

Sudo chown mongod:mongod mongodb-27017.sock  

AWS Amazon Linuxインスタンスとして実行していました。以下のようにmongodユーザーとして実行し、エラーコードを調査することでそれを理解しました。他のトラブルシューティングに役立つ場合があります。

Sudo -S -u mongod mongod -f /etc/mongod.conf
3
Pedro Israel

何もうまくいきませんでしたが、それは/tmpディレクトリ:

Sudo chmod 1777 /tmp
Sudo chown root:root /tmp
2
bekce

私のmongodbはmongodユーザーとしてコマンドラインから起動されたときに起動しましたが、User = mongodのサービスとしては起動しませんでした。 1時間後に権限、サービスの定義、ソケットをチェックしました... SElinuxでした!

/ etc/selinux/configでenforcingからpermissiveに切り替えて再起動しました。今は大丈夫です。

1

上記の答えはどれも私にとってはうまくいきませんでした。私は最終的にinitスクリプトを次のようにデバッグすることでそれを理解しました:

Sudo bash -x /etc/init.d/mongodb start

そして、それが間違った設定パスをmongodに渡すことを確認しました。 /etc/init.d/mongodbの行を「CONF =/etc/mongodb.conf」から「CONF =/etc/mongod.conf」に変更しただけです。バージョン2は前者を使用し、バージョン3をインストールすると/etc/mongod.confが新しい形式で追加されましたが、initスクリプトは更新されなかったようです。

更新:initスクリプトが機能するという奇妙な問題がありますが、「Sudo service mongodb start」ではなく「Sudo bash -x /etc/init.d/mongodb start」で実行した場合のみです。停止についても同じです。

1
Abram

このコマンドを試してください:

Sudo chown mongodb /tmp/mongodb-27017.sock
1
J.Jai

最近、mongodを更新し、古いデータベースを実行している場合、このエラーが発生する可能性があります。 MongodはデフォルトでwiredTigerエンジンを使用し、mmapv1データベースができます

/etc/mongod.confのエンジン設定を編集します

# engine: wiredTiger
engine: mmapv1

注意-YAMLは空白文字に敏感です

journalctl/systemdはこの問題を認識しません。 /var/log/mongodb/mongod.logのmongodログを確認します

ここで説明した手順のようなものでデータベースを変換できると思います

https://docs.mongodb.com/manual/tutorial/change-standalone-wiredtiger/

0
Mark

上記の回答がどれも役に立たなかった後、ログファイルを削除するとMongoが復活しました。

0
Dave

/ var/logがいっぱいの場合、サービスはログを追加できないため、HDDスペースも確認してください。

0
GPS