如何在 CentOS 7 上安装和运行 MongoDB?

如何在 CentOS 7 上安装和运行 MongoDB?

我正在尝试在 CentOS 7 机器上安装并运行 MongoDB 服务器。 CentOS 7 机器位于我的大学校园内,我通过 VPN 从家里通过 ssh 访问它。

我已关注每一个链接中给出的步骤:
https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/

这是输出sudo systemctl start mongod

Job for mongod.service failed because the control process exited with error code. See "systemctl status mongod.service" and "journalctl -xe" for details.  

这是输出systemctl status mongod.service

● mongod.service - MongoDB Database Server
   Loaded: loaded (/usr/lib/systemd/system/mongod.service; enabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since Wed 2020-12-30 00:23:07 IST; 1min 41s ago
     Docs: https://docs.mongodb.org/manual
  Process: 61587 ExecStart=/usr/bin/mongod $OPTIONS (code=exited, status=14)
  Process: 61584 ExecStartPre=/usr/bin/chmod 0755 /var/run/mongodb (code=exited, status=0/SUCCESS)
  Process: 61581 ExecStartPre=/usr/bin/chown mongod:mongod /var/run/mongodb (code=exited, status=0/SUCCESS)
  Process: 61578 ExecStartPre=/usr/bin/mkdir -p /var/run/mongodb (code=exited, status=0/SUCCESS)

Dec 30 00:23:07 smart systemd[1]: Starting MongoDB Database Server...
Dec 30 00:23:07 smart mongod[61587]: about to fork child process, waiting until server is ready for connections.
Dec 30 00:23:07 smart mongod[61587]: forked process: 61589
Dec 30 00:23:07 smart mongod[61587]: ERROR: child process failed, exited with 14
Dec 30 00:23:07 smart mongod[61587]: To see additional information in this output, start without the "--for...tion.
Dec 30 00:23:07 smart systemd[1]: mongod.service: control process exited, code=exited status=14
Dec 30 00:23:07 smart systemd[1]: Failed to start MongoDB Database Server.
Dec 30 00:23:07 smart systemd[1]: Unit mongod.service entered failed state.
Dec 30 00:23:07 smart systemd[1]: mongod.service failed.
Hint: Some lines were ellipsized, use -l to show in full.   

这是输出journalctl -xe

Dec 30 00:23:07 smart polkitd[1826]: Unregistered Authentication Agent for unix-process:61557:106467206 (system bus
Dec 30 00:23:08 smart dbus[1879]: [system] Successfully activated service 'org.fedoraproject.Setroubleshootd'
Dec 30 00:23:08 smart setroubleshoot[61594]: failed to retrieve rpm info for /proc/sys/net/ipv4/tcp_fastopen
Dec 30 00:23:08 smart setroubleshoot[61594]: SELinux is preventing /usr/bin/mongod from open access on the file /pr
Dec 30 00:23:08 smart python[61594]: SELinux is preventing /usr/bin/mongod from open access on the file /proc/sys/n

                                     *****  Plugin catchall (100. confidence) suggests   **************************

                                     If you believe that mongod should be allowed open access on the tcp_fastopen f
                                     Then you should report this as a bug.
                                     You can generate a local policy module to allow this access.
                                     Do
                                     allow this access for now by executing:
                                     # ausearch -c 'mongod' --raw | audit2allow -M my-mongod
                                     # semodule -i my-mongod.pp

Dec 30 00:23:11 smart setroubleshoot[61594]: SELinux is preventing /usr/bin/mongod from unlink access on the sock_f
Dec 30 00:23:11 smart python[61594]: SELinux is preventing /usr/bin/mongod from unlink access on the sock_file mong

                                     *****  Plugin catchall (100. confidence) suggests   **************************

                                     If you believe that mongod should be allowed unlink access on the mongodb-2701
                                     Then you should report this as a bug.
                                     You can generate a local policy module to allow this access.
                                     Do
                                     allow this access for now by executing:
                                     # ausearch -c 'mongod' --raw | audit2allow -M my-mongod
                                     # semodule -i my-mongod.pp

Dec 30 00:24:52 smart chronyd[2023]: Source 162.159.200.123 replaced with 5.189.141.35

我不知道我哪里出错了,或者我错过了一些基本的配置步骤。我尝试过很多在线博客/网站,例如:
https://unix.stackexchange.com/a/568238/372656
https://stackoverflow.com/a/64818226
但他们没有帮助。

谁能解释一下我该如何解决这个问题?提前致谢。

答案1

我想我应该把我的评论作为解决方案:

它在 Journalctl 输出中表示 SELinux 正在阻止 Mongod 对某些文件进行开放访问,这会阻止 mongodb 工作。你需要将 SELinux 置于宽容模式,或者告诉 SELinux 允许 mongodb 运行:

这个链接更多细节。这个链接对于更长的解释,或者只是按照链接 1 设置 enforcing=0,或者编辑 /etc/selinux/config 并将其设置为 permissive。

相关内容