在ArchLinux中安装MongoDB6

1,798 阅读4分钟

前言

之前只在Windows和Mac之中使用过MongoDB,没有在Linux尤其是Arch Linux中安装过,由于习惯使用yay以及pacman所以一开始是用yay安装的mongodb-bin,但是一直无法启动一直报错,所以选择直接在官网找到社区版进行安装

最新的版本是MongoDB 6

区别于MongoDB 4版本,MongoDB 6安装文件不包含客户端shell 连接工具,以及相应的管理工具, 如mongoimport、mongoexport 等工具。如需安装mongodb服务器、shell客户端、 管理工具则需要分三个部分分别安装。

都在官网可以找到

一些简单的使用方法可以参考我的另一篇文章:MongoDB基本操作及整合SpringBoot使用

大晚上写的加上今天折磨了几个小时,如果有错误的地方非常抱歉,请指正我的错误,便于我把不对的地方进行修改

寻找安装包

platform 中选择你的平台,但是我并没有找到有关arch的选项,在官方文档中也没有找到,所以就选了 Ubuntu 22.04 这个平台的版本,理论来说大概都是通用的,通过我的尝试我的arch是可以使用的。

包的类型 package 就选 tgz 就行了

还需要一个MongoDB Shell 就在上诉的链接当中可以找到,平台我选择的是 Linux Tarball 64-bit 如何包选择的 tgz

安装

下载后打开终端,在终端中进入 Downloads 目录就可以看见刚刚下载好的文件

cd ~/Downloads

我下载的是目前最新的版本 包名是 mongodb-linux-x86_64-ubuntu2204-6.0.4.tgz

下载的shell也是最新版本 包名是 mongosh-1.7.1-linux-x64.tgz

解压并且移动到你需要安装的目录当中

## 解压
tar -xf mongodb-linux-x86_64-ubuntu2204-6.0.4.tgz
tar -xf mongosh-1.7.1-linux-x64.tgz
## 移动到目标文件夹并且改名 我一般自己安装软件都会放在 /opt 文件夹中
## 操作非用户目录时需要root权限 加sudo 输入密码回车即可
sudo mv mongodb-linux-x86_64-ubuntu2204-6.0.4 /opt/mongo
## 同时也把 mongosh 也放置进mongodb的bin目录
cd mongosh-1.7.1-linux-x64
cd bin
mv mongosh /opt/mongo/bin
## 移动这一个文件就行了 其它的可以删掉

创建一个给mongodb放数据和日志文件的地方,我的电脑时双系统的,所以我有一个盘是两个系统共用的,挂载在/data,你们安装的时候自己选择路径即可,无法创建就在命令前面加sudo

## 创建文件夹
mkdir /data/mongodb
mkdir /data/mongodb/db
mkdir /data/mongodb/logs

mongodb我记得好像并不提供默认的配置文件,我一般会在/etc目录中放着

## 编写配置文件
sudo vim ./etc/mongodb.conf

配置文件内容如下,网上到处都是,这里用的是官方推荐的yaml格式的

# 系统日志相关
systemLog:
  destination: file  # 使用文件存储日志
  path: "/data/mongodb/logs/mongodb.log"  # 日志位置
  logAppend: true    # 是否以追加的形式记录日志

# 数据相关
storage:
  journal:  # 回滚日志
    enabled: true
  dbPath: "/data/mongodb/db"  # 数据存储目录

# 进程相关
processManagement:
  fork: true  # 后台运行

# 网络配置相关
net:
  port: 27017 # 默认端口
  bindIp: 127.0.0.1  # 绑定ip, 多个ip以逗号分隔

加入环境变量方便以后直接使用,我一般都是直接在 /etc/profile 放置,更多配置可以参考这篇文章 Linux环境配置

sudo vim /etc/profile

## 在文件里面加入下面的内容 每次我都会加一个注释为了下次不忘记这是什么
## 这个目录是刚刚的安装目录

# MongoDB
export PATH=$PATH:/opt/mongo/bin

保存并退出后可以重启一个终端或者 **source /etc/profile **使其立即生效

到这一步为止,mongodb就已经在你的电脑上安装成功了,使用下面的命令可以直接启动

主要要搭配之前所编写的配置文件

sudo mongod --config /etc/mongodb.conf --fork

如果出现问题无法启动,如:

about to fork child process, waiting until server is ready for connections. forked process: 29042 ERROR: child process failed, exited with 48 To see additional information in this output, start without the "--fork" option.

那么只需在你指定的日志目录创建日志文件后再启动即可

touch /data/mongodb/logs/mongodb.log

启动成功后直接进入shell即可

mongosh

开机自启(可选)

如果不需要开机自启可以不需要这一步

/usr/lib/systemd/system/ 中创建 mongodb.service 文件并在文件中写入一下内容

还可以自定义部分内容,我这里是根据网络上找到的内容修改的

[Unit] 
   
Description=mongodb  
After=network.target remote-fs.target nss-lookup.target 
   
[Service] 
Type=forking 
# 启动的命令
ExecStart= /opt/mongo/bin/mongod --config /etc/mongodb.conf --fork
ExecReload=/bin/kill -s HUP $MAINPID 
ExecStop=/opt/mongo/bin/mongod --shutdown --config /etc/mongodb.conf
PrivateTmp=true 
     
[Install] 
WantedBy=multi-user.target

先使用命令启动一下看看能否启动成功,再进行开机自启的启动

## 查看服务状态
sudo systemctl status mongodb.service

**mongodb.service - mongodb Loaded: loaded (/usr/lib/systemd/system/mongodb.service; disabled; preset: disab> Active: inactive (dead) **

这是刚创建好的(应该,因为我是弄好了以后再关闭的)

可以看见Loaded后面是显示disabled的,就是没有设置关机自启的,Active也不是acing的状态

## 启动服务命令
sudo systemctl start mongodb.service

先启动再查看 Acting 不出意外的话现在显示的是 Active: active (running) 这就代表启动成功了

接下来就可以设置开机自启了

## 设置开机自启
sudo systemctl enable mongodb.service

这里我最开始一直出问题原因就是我没有加 sudo 所以注意了 这里一定要加这个

输出 Created symlink /etc/systemd/system/multi-user.target.wants/mongodb.service → /usr/lib /systemd/system/mongodb.service.

再查看状态时可以看见 Loaded 后面就显示enabled了,现在就大功告成了 设置好的输出

mongodb.service - mongodb Loaded: loaded (/usr/lib/systemd/system/mongodb.service; enabled; preset: disabl> Active: active (running) since Thu 2023-02-16 23:07:43 CST; 3min 40s ago

关闭/退出

因为一般后台运行所以不可以直接 Ctrl+C 只有前台可以这样退出

第一种方式:进入shell后,使用 db.shutdownServer(); 后就可以 exit;

## 进入shell环境
mongosh
## 退出
db.shutdownServer();
## 退出
exit;

第二种方式:使用服务的 stop

## 停止服务
sudo systemctl stop mongodb.service