前言
之前只在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