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。

相关推荐
BLUcoding18 分钟前
接口服务公网超时排查记录:SecureRandom 阻塞问题分析与解决
java·linux·springboot·aes·securerandom
AIgorithmGEEK21 分钟前
[Linux]从手写报头到内核套路:序列化、反序列化与自定义协议全链路
linux·运维·服务器·网络·序列化·反序列化
Nil20829 分钟前
leetcode 139单词拆分
linux·运维·服务器
Starry-sky(jing)33 分钟前
BUG: unable to handle kernel paging request 完整排查:dmesg 四要素与三路定罪
linux·运维·服务器·内核·排障
mounter62539 分钟前
从硬件互连到操作系统变革:CXL 技术演进与 Linux 内核工程挑战
linux·运维·服务器
xh didida2 小时前
Linux -- 基础IO
linux·服务器·开发语言·c++
zly35003 小时前
centos7 mount设备挂载 /dev/sda1/硬盘挂载
linux·运维·服务器
工业一体机老司机3 小时前
工业一体机选购后的系统部署:Ubuntu下Docker容器化运行与GPIO配置
linux·ubuntu·docker·人机交互
哎呦,帅小伙哦4 小时前
进程监控工具——htop
linux·运维·服务器
夏虫不可与之言冰4 小时前
Windows WSL2 (Ubuntu) 搭建 ESP‑IDF 6.1 开发环境全过程演示
linux·windows·ubuntu·esp32·乐鑫科技·乐鑫eim·乐鑫代理商