CentOS 7 安装 MongoDB

CentOS 7 安装 MongoDB

在 CentOS 7 上通过 mongodb-linux-x86_64-rhel70-4.4.25.tgz 压缩包来安装 MongoDB,可按照以下步骤进行手动部署。这种方式可以避免使用 yum 包管理器,并允许将 MongoDB 安装在自定义的目录中。

一、准备工作

1. 软件版本

  • 操作系统 : CentOS 7.9 (本文基于 CentOS-7-x86_64-Minimal-2009.iso)
  • MongoDB 版本 : MongoDB 4.4.25 (本文以 mongodb-linux-x86_64-rhel70-4.4.25 版本为例进行安装示范)

2. 获取 MongoDB 安装包

首先,需要将指定的 MongoDB 压缩包下载到 CentOS 服务器上。

bash 复制代码
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.4.25.tgz

二、安装与配置

假设 MongoDB 安装包已位于服务器的用户主目录中。

1. 解压并移动 MongoDB 目录

下载完成后,将压缩包解压。解压后会得到一个名为 mongodb-linux-x86_64-rhel70-4.4.25 的目录。

bash 复制代码
tar -zxvf mongodb-linux-x86_64-rhel70-4.4.25.tgz

为了方便管理,建议将解压后的目录重命名并移动到一个统一的位置,例如 /usr/local/mongodb

bash 复制代码
mv mongodb-linux-x86_64-rhel70-4.4.25 /usr/local/mongodb

2. 创建 mongod 用户及所需目录

为了以专门的用户运行 MongoDB 服务,首先创建 mongod 用户和组。

bash 复制代码
sudo groupadd mongod
sudo useradd -r -g mongod -s /bin/false mongod

接着,创建 MongoDB 所需的数据、日志和进程 ID 文件目录。

bash 复制代码
sudo mkdir -p /var/lib/mongo
sudo mkdir -p /var/log/mongodb
sudo mkdir -p /var/run/mongodb

然后,将这些目录的所有权分配给 mongod 用户。

bash 复制代码
sudo chown -R mongod:mongod /var/lib/mongo
sudo chown -R mongod:mongod /var/log/mongodb
sudo chown -R mongod:mongod /var/run/mongodb

3. 配置环境变量

为了方便地在任何路径下执行 MongoDB 的命令,需要将其 bin 目录添加到系统的 PATH 环境变量中。

可以选择以下两种方式之一进行配置:

方式一:使用 echo 命令(快捷)

bash 复制代码
echo "export PATH=/usr/local/mongodb/bin:\$PATH" >> ~/.bash_profile
source ~/.bash_profile

方式二:使用 vi 编辑器

  1. 打开 .bash_profile 文件:

    bash 复制代码
    vi ~/.bash_profile
  2. 在文件末尾添加 export PATH=/usr/local/mongodb/bin:$PATH 并保存退出。

  3. 让配置立即生效:

    bash 复制代码
    source ~/.bash_profile

4. 创建 MongoDB 配置文件

创建一个配置文件来指定数据目录、日志路径、端口等信息。

bash 复制代码
sudo touch /etc/mongod.conf

然后使用 vi 编辑该文件,并添加以下内容:

bash 复制代码
sudo vi /etc/mongod.conf
yaml 复制代码
# 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: /var/log/mongodb/mongod.log

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

# how the process runs
processManagement:
  fork: true  # fork and run in background
  pidFilePath: /var/run/mongodb/mongod.pid  # location of pidfile

# network interfaces
net:
  port: 27017
  bindIp: 127.0.0.1  # Listen to local interface only. To allow remote connections, change this to 0.0.0.0

提示 :如果希望允许远程连接,可以将 net.bindIp 的值修改为 0.0.0.0

5. 创建 systemd 服务文件

为了能够使用 systemctl 来管理 MongoDB 服务(例如,开机自启、启动、停止),需要创建一个 systemd 服务文件。

bash 复制代码
sudo vi /etc/systemd/system/mongod.service

将以下内容粘贴到文件中:

ini 复制代码
[Unit]
Description=MongoDB Database Server
After=network.target

[Service]
User=mongod
Group=mongod
ExecStart=/usr/local/mongodb/bin/mongod --config /etc/mongod.conf
ExecStop=/usr/local/mongodb/bin/mongod --shutdown --config /etc/mongod.conf
Restart=always
LimitNOFILE=64000
LimitNPROC=64000
Type=forking
PIDFile=/var/run/mongodb/mongod.pid
RuntimeDirectory=mongodb

[Install]
WantedBy=multi-user.target

重要提示

  • [Service] 部分添加 RuntimeDirectory=mongodb 是一个关键步骤。
  • 作用 :CentOS 7 的 /var/run 目录在系统重启后会被清空。这会导致 mongod 因找不到 /var/run/mongodb 目录而无法创建 .pid 文件,从而启动失败。
  • RuntimeDirectory=mongodb 指令会告诉 systemd,在每次启动服务前,自动在 /run (即 /var/run) 目录下创建 mongodb 目录,并设置好正确的用户和组权限。这从根本上解决了因系统重启导致的启动失败问题。

6. 启动并验证 MongoDB 服务

现在可以启动 MongoDB 服务,并设置为开机自启。

  1. 重新加载 systemd 配置:

    bash 复制代码
    sudo systemctl daemon-reload
  2. 启动 MongoDB 服务:

    bash 复制代码
    sudo systemctl start mongod
  3. 验证服务状态:

    bash 复制代码
    sudo systemctl status mongod

    如果服务成功启动,应该能看到 "active (running)" 的状态信息。

  4. 设置开机自启:

    bash 复制代码
    sudo systemctl enable mongod

7. 连接到 MongoDB

服务启动后,可以通过执行 mongo (或新版本的 mongosh) shell 来连接到数据库并进行验证。

bash 复制代码
mongo

如果成功,将进入 MongoDB 的交互式 shell。

通过以上步骤,就成功地在 CentOS 7 上手动安装并配置了 MongoDB 4.4.25。

相关推荐
chenzhiyuan20182 小时前
钡铼技术ARMxy系列BL440究竟多适合作为具身机器人核心控制器?
linux
斯文by累2 小时前
Ubuntu系统上安装Kafka 8.0
linux·ubuntu·kafka
济6172 小时前
linux(第十五期)--蜂鸣器实验-- Ubuntu20.04
linux·运维·服务器
oMcLin2 小时前
如何在CentOS 7.9上配置并调优Docker Compose与Traefik,实现电商平台的自动化路由与高可用负载均衡?
docker·centos·自动化
方便面不加香菜2 小时前
Linux基本指令(2)
linux
Run_Teenage2 小时前
Linux:硬链接与软链接
linux·运维·服务器
pusheng20252 小时前
数据中心安全警报:为何“免维护”气体传感器可能正在制造危险盲区?
linux·网络·人工智能
DBA小马哥2 小时前
金仓数据库替代MongoDB:如何高效存储复杂数据类型并实现平滑迁移
数据库·mongodb·dba
wgl6665202 小时前
自主Shell命令行解释器
linux·运维·windows