web-dev-qa-db-ja.com

初期セットアップ後にMongoDBサービスが開始されない

私はFedora 20を実行しており、公式ドキュメントの Red Hatインストールガイド に従ってMongoDBをインストールしています。最初にmongodデーモンをエラーなしでサービスとして実行できましたが、マシンをシャットダウンして戻ったときに、何らかの障害のためにサービスの開始が拒否されました。

正常に実行された後に表示されるログに、次のように表示されます。

***** SERVER RESTARTED *****
ERROR: Cannot write pid file to /var/run/mongodb/mongod.pid: No such file or directory

mongodを起動しようとしたり、mongod --repairを手動で実行しようとすると、起動エラーで次のメッセージが表示されます。

ERROR: dbpath (/data/db) does not exist.
Create this directory or give existing directory in --dbpath.

/etc/mongod.confの設定ファイルで、データベースパスの設定が次のようになっていることを考えると、これは奇妙です。

dbpath=/var/lib/mongo

最後に、このコマンドを実行すると:

mongod --dbpath /var/lib/mongo

デーモンは正​​常に起動します。ただし、サービスを開始するためのエラーのない動作を複製することはできません。

誰が正確に何が間違っているのか、mongodをサービスとして実行し始める方法を教えてもらえますか?

編集

mongod --config /etc/mongod.confを実行すると、このメッセージが表示されます。

about to fork child process, waiting until server is ready for connections. forked process: 2702 ERROR: child process failed, exited with error number 1

/var/run/mongodbディレクトリが存在しなかったため、作成してmongodユーザーに割り当てました。残念ながら、それは大きな違いを生みませんでした。

私の/var/log/mongodb/mongod.logはこのメッセージを表示します:

[initandlisten] exception in initAndListen: 10309 Unable to create/open lock file: /var/lib/mongo/mongod.lock errno:13 Permission denied Is a mongod instance already running?, terminating

14
Pori

Fedora 20でうまくいったのは、ブートごとに一時ディレクトリを作成する必要があり、それはsystemd-tmpfilesによって処理されることです。したがって、ファイル/lib/tmpfiles.d/mongodb.confを作成し、その中に1行を追加します。

d /var/run/mongodb 0755 mongod mongod

再起動時に処理するようです。すぐに再起動したくない場合は、次を使用して実行できます。

Sudo systemd-tmpfiles --create mongodb.conf

(systemd-tmpfilesのmanページを参照してください)

32
Wayne

私は同じ問題を抱えており、一時的に解決し、SELinuxを無効にし、マシンを再起動し、mongod.lockを削除しました。

#rm /var/lib/mongo/mongod.lock

ファイル/var/run/mongodb/mongo.pidを作成することにより(構成ファイル/etc/mongod.confに記載されているとおり):

#mkdir /var/run/mongodb
#touch /var/run/mongodb/mongod.pid

777の許可を与える:

#chmod 777 /var/run/mongodb/mongod.pid 

そしてmongoを起動します:

#service mongod start

ただし、マシンを再起動しても問題は解決しません。フォルダとファイルが消えます。

8
Deoxyseia

私はこれをしばらく調べましたが、あたかもpidフォルダーとファイルのアクセス許可がデフォルトのデーモンで機能していないように見えます。

私が遭遇した最も簡単な解決策は、設定ファイルの行の前に#を置くだけでpidファイルを無効にすることです。

vi /etc/mongod.conf

pidfilepath =/var/run/mongodb/mongod.pidと書かれている行を見つけて、それに応じて変更します。

# pidfilepath=/var/run/mongodb/mongod.pid

コメントアウトの内容については、こちらをご覧ください。 http://docs.mongodb.org/manual/reference/configuration-options/#processManagement.pidFilePath

7
vipero07

以下を使用してmongodをサービスとして開始する場合:

須藤サービスモンゴッドスタート

Mongod.confのlogpath、dbpath、およびpidfilepathに定義されているディレクトリが存在し、mongod:mongodによって所有されていることを確認してください。

5
thearrow

OpenSuse 13.2でmongodb 3.0.4を実行すると同じ問題が発生し、/ var/runの下のmongodディレクトリが見つからないことがわかりました。ディレクトリを手動で作成した場合、再起動後に消えます。

/etc/init.d/mongod起動スクリプトに次の行を追加して解決しました。

mkdir -p /var/run/mongod  
chown $MONGO_USER:$MONGO_GROUP /var/run/mongod
1
Tony Cihak

「mongo.conf」ファイルの行の下にコメントします。

pidfilepath =/var/run/mongodb/mongod.pid

これはUbuntuでうまくいきました:

Sudo kill $(Sudo lsof -t -i:27017) 
Sudo rm -rf /tmp/mongodb-27017.sock
Sudo rm -f /var/lib/mongo/mongod.lock
Sudo rm -f /var/run/mongodb/mongod.pid
Sudo mkdir -p  /var/run/mongodb/
Sudo touch /var/run/mongodb/mongod.pid
Sudo chown -R  mongodb:mongodb /var/run/mongodb/
Sudo chown mongodb:mongodb /var/run/mongodb/mongod.pid
Sudo service mongod start
0
victortv

セントOS用に解決された以下のコマンド

[〜#〜] error [〜#〜]

 service mongod status
 Error starting mongod. /var/run/mongodb/mongod.pid exists

FIXED BY:

   rm /var/lib/mongo/mongod.lock
   chown -R mongod:mongod /var/log/mongodb/
   chown -R mongod:mongod /var/run/mongodb/
   chown -R mongod:mongod /var/lib/mongo/
   chmod 777 /var/run/mongodb/mongod.pid

   mongod --dbpath /var/lib/mongo
0

Systemd-tmpfilesによって処理されるpidfile /var/run/mongodbtemp dirの場所を作成する必要があります。そのため、ルートとして/lib/tmpfiles.d/mongodb.confファイルを作成します。

lnx#>須藤su
lnx#> cd /lib/tmpfiles.d
lnx#> echo“ d/var/run/mongodb 0755 mongod mongod”> mongodb.conf

次に、再起動するか、次のコマンドを実行して、その一時ディレクトリをアクティブにします。

lnx#> Sudo systemd-tmpfiles --create mongodb.conf

Mongodサービスを開始します。

lnx#> Sudo systemctl start mongod.service

書誌:Fedora And Mongodb・l33tsource

0
user1630938

Ubuntuで同様の問題が発生しました。ほぼすべてのERRORヒントに遭遇しました。

_child process failed, exited with error number 1
_

or _child process failed, exited with error number 100_

または[signalProcessingThread] got signal 2 (Interrupt: 2), will terminate after current cmd ends

何回もMongodbを削除して、再度インストールを試みますが、問題は残ります。..

最後に私はこの方法に来ました:最初にデータをバックアップし、次にMongodbを削除します

_#Sudo apk-get autoremove mongodb-org
_

Mongodbに関連するすべてのファイルを見つけます。

_/#find -name mongo*
_

/ var/cache/...およびその他すべてのパッケージを含め、「rm」または「rmdir」でそれらをすべて削除します。

その後、最初に行ったようにインストールを繰り返します。

_#echo "deb http://repo.mongodb.org/apt/ubuntu "$(lsb_release -sc)"/mongodb-org/3.0 multiverse" | Sudo tee /etc/apt/sources.list.d/mongodb-org-3.0.list
#Sudo apt-get update
#Sudo apt-get install -y mongodb-org
_

再び実行されます。

0
caoyou

私はmongod.confを次のように変更して問題を解決したときに同じ問題に遭遇しました〜

port=27017
dbpath=/usr/local/mongodb/data/db/
logpath=/usr/local/mongodb/logs
fork = true

ヒント:logpathはフォルダーではなくログファイルです。

0
haihu