在新装的CentOS7上,安装了MongoDB3.4

问题描述:

在新装的CentOS7上,安装了MongoDB3.4,挂载了一个大的数据盘后,修改/etc/mongo.conf,将配置文件中的log和data目录放在新的数据盘下,并修改文件的访问权限。改完后的mongo.conf:

# mongod.conf

# for documentation of all options, see:
# http://docs.mongodb.org/manual/reference/configuration-options/

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

# Where and how to store data.
storage:
dbPath: /data/mongodb/data
.....
文件权限:

# ls -alh
drwxr-xr-x. 5 mongod mongod 4.0K 11月 1 14:53 mongodb

# cd mongodb
# ls -alh
drwxr-xr-x. 3 mongod mongod 4.0K 11月 9 19:08 data
drwxr-xr-x. 2 mongod mongod 4.0K 11月 9 19:06 log
drwxr-xr-x. 2 mongod mongod 4.0K 11月 1 14:54 run
执行systemctl start mongod命令后,查看状态发现并没有启动,查看/var/log/message,发现以下错误

Nov 9 06:06:44 [localhost] setroubleshoot: failed to retrieve rpm info for /data/mongodb/run/mongod.pid
Nov 9 06:06:44 [localhost] setroubleshoot: SELinux is preventing /usr/bin/mongod from write access on the file /data/mongodb/run/mongod.pid. For complete SELinux messages run: sealert -l f7148e11-b126-401e-ba9f-a9a87c1e54ae
Nov 9 06:06:44 [localhost] python: SELinux is preventing /usr/bin/mongod from write access on the file /data/mongodb/run/mongod.pid.#012#012***** Plugin restorecon (94.8 confidence) suggests ************************#012#012If you want to fix the label. #012/data/mongodb/run/mongod.pid default label should be default_t.#012Then you can run restorecon.#012Do#012# /sbin/restorecon -v /data/mongodb/run/mongod.pid#012#012***** Plugin catchall_labels (5.21 confidence) suggests *******************#012#012If you want to allow mongod to have write access on the mongod.pid file#012Then you need to change the label on /data/mongodb/run/mongod.pid#012Do#012# semanage fcontext -a -t FILE_TYPE ‘/data/mongodb/run/mongod.pid‘#012where FILE_TYPE is one of the following: afs_cache_t, initrc_tmp_t, mongod_log_t, mongod_tmp_t, mongod_var_lib_t, mongod_var_run_t, puppet_tmp_t, user_cron_spool_t.#012Then execute:#012restorecon -v ‘/data/mongodb/run/mongod.pid‘#012#012#012***** Plugin catchall (1.44 confidence) suggests **************************#012#012If you believe that mongod should be allowed write access on the mongod.pid file by default.#012Then you should report this as a bug.#012You can generate a local policy module to allow this access.#012Do#012allow this access for now by executing:#012# ausearch -c ‘mongod‘ --raw | audit2allow -M my-mongod#012# semodule -i my-mongod.pp#012
从提示中可以看出是SELinux的防护功能,阻止了访问。

解决过程:

/var/log/message中的信息看起来比较费劲,里面有一句提示:

For complete SELinux messages run: sealert -l e73ba9e8-f74d-4835-9b53-85667546b28c
根据提示执行:

# sealert -l e73ba9e8-f74d-4835-9b53-85667546b28c
SELinux is preventing /usr/bin/mongod from write access on the directory /data/mongodb/log.

***** Plugin catchall_labels (83.8 confidence) suggests *******************

If you want to allow mongod to have write access on the log directory
Then 必须更改 /data/mongodb/log 中的标签
Do
# semanage fcontext -a -t FILE_TYPE ‘/data/mongodb/log‘
其中 FILE_TYPE 为以下内容之一:mongod_log_t, mongod_tmp_t, mongod_var_lib_t, mongod_var_run_t, tmp_t, var_lib_t, var_log_t, var_run_t。
然后执行:
restorecon -v ‘/data/mongodb/log‘

***** Plugin catchall (17.1 confidence) suggests **************************
......
上面提示输出中已经包含了,解决方法:

# semanage fcontext -a -t mongo_log_t ‘/data/mongodb/log‘
# restorecon -v ‘/data/mongodb/log‘
restorecon reset /data/mongodb/log context unconfined_u:object_r:unlabeled_t:s0->unconfined_u:object_r:mongod_log_t:s0
上面命令执行完毕后,就解决了/data/mongodb/log目录的文件权限问题。

同样的方法,再解决/data/mongodb/data和/data/mongodb/run目录的问题。

启动mongod,问题解决。

Nov 9 06:08:51 [localhost] systemd: Starting High-performance, schema-free document-oriented database...
Nov 9 06:08:51 [localhost] www.6788878.cn systemd: Started High-performance, schema-free document-oriented database.
Nov 9 06:08:51 [localhost] mongod: www.xucaizxyl.com about to fork child process, waiting until server is ready for connections.
Nov 9 06:08:51 [localhost] mongod: www.huanggua130.cn forked process: 18218
Nov 9 06:08:51 [localhost] mongod: www.wanhengyl157.com child process started successfully, parent exiting
P.S. 除了上面通过提示信息解决问题外,还有一个比较暴力的方法,直接关闭SELinux,但是不太建议。

# setenforce 0
# getenforce
Permissive
上面是临时关闭,如果是永久关闭,就需要编辑/etc/selinux/config文件,将SELINUX=enforcing改为SELINUX=disabled,但是只有重启后才会发挥作用。

时间: 2024-10-14 07:23:09

在新装的CentOS7上,安装了MongoDB3.4的相关文章

(转)在 CentOS7 上安装 MongoDB

在 CentOS7 上安装 MongoDB 1 通过 SecureCRT 连接至 CentOS7 服务器: 2 进入到 /usr/local/ 目录: cd /usr/local 3 在当前目录下创建 tools 目录: mkdir -p tools 4 进入到 tools 目录中: cd tools 5 下载与 CentOS 系统匹配的 mongodb-linux-x86_64-rhel70-3.2.4.tgz 文件: wget https://fastdl.mongodb.org/linux

在 CentOS7 上安装 MySQL5.7

在 CentOS7 上安装 MySQL5.7 1 通过 SecureCRT 连接到阿里云 CentOS7 服务器: 2 进入到目录 /usr/local/ 中:cd /usr/local/ 3 创建目录 /usr/local/tools,如果有则忽略: mkdir -p tools 4 创建 /usr/local/mysql 目录,如果已存在则忽略:mkdir -p mysql 5 进入到目录 /usr/local/tools 中:cd tools/ 6 查看系统中是否已安装 MySQL 服务:

在 CentOS7 上安装 zookeeper-3.4.9 服务

在 CentOS7 上安装 zookeeper-3.4.9 服务 1.创建 /usr/local/services/zookeeper 文件夹: mkdir -p /usr/local/services/zookeeper 2.进入到 /usr/local/services/zookeeper 目录中: cd /usr/local/services/zookeeper 3.下载 zookeeper-3.4.9.tar.gz: wget https://mirrors.tuna.tsinghua.

CentOS7上安装稻壳CMS

CentOS7上安装稻壳CMS 1, 安装用途 为了给某公司建设一个小型网站,租用了一个阿里云ECS服务器,最基础的硬件配置,因此选择了CentOS7操作系统. 稻壳CMS(docCMS)源于深喉咙CMS,使用广泛,配置简单,因此采用其作为建站模板. 2,CentOS7环境安装 阿里云ECS中的CentOS7操作系统属于“裸”操作系统,没有配置基础的Web应用环境.为和稻壳CMS匹配,需安装配置的软件有: ²        Apache服务器Httpd ²        防火墙IPTables

CentOS7 上安装 Zookeeper-3.4.9 服务

在 CentOS7 上安装 zookeeper-3.4.9 服务 1.创建 /usr/local/services/zookeeper 文件夹:    mkdir -p /usr/local/services/zookeeper 2.进入到 /usr/local/services/zookeeper 目录中:    cd /usr/local/services/zookeeper 3.下载 zookeeper-3.4.9.tar.gz:    wget https://mirrors.tuna.

CentOS7上安装、配置、监控RabbitMQ

CentOS7上安装.配置.监控RabbitMQ RabbitMQ是流行的开源消息队列系统,是AMQP(Advanced Message Queuing Protocol高级消息队列协议)的标准实现,用erlang语言开发.RabbitMQ据说具有良好的性能和时效性,同时还能够非常好的支持集群和负 载部署,非常适合在较大规模的分布式系统中使用,具体特性还在验证中,待检验.由于项目需要,安装并配置了RabbitMQ,服务器操作系统是CentOS7. 环境:CentOS7.2 步骤 一.安装Erla

CentOS7上安装POCO

POCO是什么? 看官网说明: Modern, powerful open source C++ class libraries and frameworks for building network- and internet-based applications that run on desktop, server, mobile and embedded systems. 下载地址 强烈建议,唯一下载地址就是官方网站,不要图省事在某些国内站点下载.地址是:(很可惜,这个残疾的网站上发博客

一次在CentOS7上安装部署Zabbix3.0版本及快速进行基本配置的实例

Zabbix3.0的安装.部署.配置,必须基于LAMP环境或是是LNMP环境. 关于LAMP环境的简单快速搭建,见博客:http://afterdawn.blog.51cto.com/7503144/1923139 注意:以下步骤都是在LAMP配置之后进行的. 本文不会再对zabbix-server和zabbix-agent理论知识再进行介绍,建议看完http://afterdawn.blog.51cto.com/7503144/1922502再进行zabbix实战. Zabbix3.0对软硬件

CentOS7上安装并配置KVM,以及通过KVM安装CentOS系统

笔记内容:CentOS7上安装并配置KVM,以及通过KVM安装CentOS系统笔记日期:2018-03-07 28.5 Centos7上安装KVM 28.6 配置网卡 28.7 创建虚拟机安装CentOS7 28.8 虚拟机管理 Centos7上安装KVM 首先我们需要一台配置较高的CentOS7虚拟机,当然用物理机也可以,我这里用的是虚拟机,配置如下: 硬盘需要新增一个,其中的新硬盘用于在KVM里安装操作系统时需要用到,内存的大小最好有4个G,最低2个G,因为我这里物理机的内存有16G所以就给