Mongoサービス(systemctl start mongodb)を開始しようとすると、journalctlで次のエラーが発生します。
Mar 21 15:36:18 redhat7 systemd[1]: Started High-performance, schema-free document-oriented database.
Mar 21 15:36:18 redhat7 systemd[1]: Starting High-performance, schema-free document-oriented database...
Mar 21 15:36:18 redhat7 mongod[14333]: about to fork child process, waiting until server is ready for con
Mar 21 15:36:18 redhat7 mongod[14333]: forked process: 14335
Mar 21 15:36:18 redhat7 systemd[1]: mongod.service: main process exited, code=exited, status=1/FAILURE
Mar 21 15:36:18 redhat7 systemd[1]: Unit mongod.service entered failed state.
Mar 21 15:36:18 redhat7 systemd[1]: mongod.service failed.
しかし、次のコマンドをrootとして実行すると機能します!
Sudo -u mongod /usr/bin/mongod -f /etc/mongod1.conf
/lib/systemd/system/mongod.service
[Unit]
Description=High-performance, schema-free document-oriented database
After=network.target
[Service]
User=mongod
ExecStart=/usr/bin/mongod --quiet --config /etc/mongod1.conf
[Install]
WantedBy=multi-user.target
Systemdのデフォルトでは、サービスは単純です。つまり、フォアグラウンドで実行され、存在する場合、サービスは停止していると見なされます。
Mongod構成ファイルは次のようなものです:
processManagement: fork: true
その中でmongod
がバックグラウンドにフォークします。これを修正するには2つの方法があります。最善の方法は、/etc/mongod1.conf
のfork
をfalseに変更することです。もう1つは、Type=forking
ファイルの[Service]
セクションに.service
を設定することです。