web-dev-qa-db-ja.com

Mongod Service Startはコード100で終了します

問題

私のmongoサービスはもう開始されません:

root@machine ~ # service mongod start
root@machine ~ # service mongod status
● mongod.service - High-performance, schema-free document-oriented database
   Loaded: loaded (/lib/systemd/system/mongod.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Tue 2017-08-15 12:03:51 CEST; 2s ago
     Docs: https://docs.mongodb.org/manual
  Process: 26942 ExecStart=/usr/bin/mongod --config /etc/mongod.conf (code=exited, status=100)
 Main PID: 26942 (code=exited, status=100)

Aug 15 12:03:50 machine systemd[1]: Started High-performance, schema-free document-oriented database.
Aug 15 12:03:51 machine systemd[1]: mongod.service: Main process exited, code=exited, status=100/n/a
Aug 15 12:03:51 machine systemd[1]: mongod.service: Unit entered failed state.
Aug 15 12:03:51 machine systemd[1]: mongod.service: Failed with result 'exit-code'.

終了コード100は次のようにぼやけて定義されます:

プロセスがキャッチされない例外をスローすると、mongodによって返されます。

私がしたこと

まず、 公式ガイド を使用して、mongodb(3.4.7)をUbuntu 16.04.2 LTSにインストールしました。

サービスの開始と停止は正常に機能しました。そのため、認証を引き続き有効にしました(再び 公式ガイド を使用)。

次に、サービスを追加して サーバーの起動時に実行する を有効にしました。

root@machine ~ # systemctl enable mongod.service

mongod.conf

また、yamlリンターに渡される構成ファイルを編集しました。

# Where and how to store data.
storage:
  dbPath: /var/lib/mongodb
  journal:
    enabled: true

#  engine: mmapv1
#  mmapv1:
#  wiredTiger:

# where to write logging data.
systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log

# network interfaces
net:
  port: 27017
  bindIp: 127.0.0.1


#processManagement:

security:
  authorization: enabled

ファイルの所有権は

root@machine ~ # ls -la /etc/ | grep mongo
-rw-r--r--   1 root  root     599 Aug 15 11:42 mongod.conf

DbPath

Dbpathに問題があることは知っているので、これは所有権に関して/var/lib/mongodbが持っているものです。

root@ machine ~ # ls -la /var/lib/ | grep mongo
drwxr-xr-x  4 mongodb      mongodb      4096 Aug 15 11:54 mongodb

サービスリスト

service --status-allを介してすべてのサービスをリストする場合、mongo関連のサービスのエントリはありません。

誰かが問題を引き起こす可能性のある手がかりを持っていますか?


[〜#〜] update [〜#〜]

提案されたように、次のコマンドを実行しました(わずかな変更を加えました):

root@machine ~ /usr/bin/mongod --verbose --config /etc/mongod.conf &
[1] 28495

正しく理解できれば、これはバイナリの直接実行です。これにより、少なくともmongo Shellにログインできるようになりました。

root@machine ~ # mongo
MongoDB Shell version v3.4.7
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.7
> 

ただし、サービスステータスは終了コード100で失敗したままです。


UPDATE UPDATE

root@machine ~ # /usr/bin/mongod --verboseと入力するとき

次のエラーが表示されます。

2017-08-15T13:45:40.973+0200 I CONTROL  [initandlisten] MongoDB starting : pid=28642 port=27017 dbpath=/data/db 64-bit Host=machine
2017-08-15T13:45:40.973+0200 I CONTROL  [initandlisten] db version v3.4.7
2017-08-15T13:45:40.973+0200 I CONTROL  [initandlisten] git version: cf38c1b8a0a8dca4a11737581beafef4fe120bcd
2017-08-15T13:45:40.973+0200 I CONTROL  [initandlisten] OpenSSL version: OpenSSL 1.0.2g  1 Mar 2016
2017-08-15T13:45:40.973+0200 I CONTROL  [initandlisten] allocator: tcmalloc
2017-08-15T13:45:40.973+0200 I CONTROL  [initandlisten] modules: none
2017-08-15T13:45:40.973+0200 I CONTROL  [initandlisten] build environment:
2017-08-15T13:45:40.973+0200 I CONTROL  [initandlisten]     distmod: ubuntu1604
2017-08-15T13:45:40.973+0200 I CONTROL  [initandlisten]     distarch: x86_64
2017-08-15T13:45:40.973+0200 I CONTROL  [initandlisten]     target_Arch: x86_64
2017-08-15T13:45:40.973+0200 I CONTROL  [initandlisten] options: { systemLog: { verbosity: 1 } }
2017-08-15T13:45:40.973+0200 D -        [initandlisten] User Assertion: 29:Data directory /data/db not found. src/mongo/db/service_context_d.cpp 98
2017-08-15T13:45:40.973+0200 I STORAGE  [initandlisten] exception in initAndListen: 29 Data directory /data/db not found., terminating
2017-08-15T13:45:40.973+0200 I NETWORK  [initandlisten] shutdown: going to close listening sockets...
2017-08-15T13:45:40.973+0200 I NETWORK  [initandlisten] shutdown: going to flush diaglog...
2017-08-15T13:45:40.973+0200 I CONTROL  [initandlisten] now exiting
2017-08-15T13:45:40.973+0200 I CONTROL  [initandlisten] shutting down with code:100
15
Jankapunkt

データディレクトリの権限にまだ問題がある可能性があります。特に、最初から端末からmongodを実行している場合。

ターミナルから実行すると、データファイルはmongodbユーザーではなくルートの下に作成されることがわかります。修正するには..

cd /var/lib/mongodb
Sudo chown -R mongodb:mongodb *
55
rockettc
rm /var/lib/mongodb/mongod.lock
systemctl restart mongod
systemctl status mongod

これを試して!

8
A. Pascual

mongod.lockの下の'dbath'ファイルを削除すると、問題なく起動するはずです。

0
Alex