前言:本期给大家分享一下目前最新Linux系统安装部署MongoDB完整教程,我的服务器采用的是Centos7,在部署之前我重装了我的服务器,目的是为了干净整洁的给大家演示我是如何一步步的操作的,整体部署还是挺简洁,这边做一个笔记分享!
博主的其他部署教程:
1、Jenkins部署前后端分离项目:Jenkins部署前后端分离项目最全图文教程(手把手教学)
2、Docker部署前后端分离项目:手把手通过Docker部署前后端分离项目(亲测可用)
3、Linux系统部署Tomcat:Linux系统部署Tomcat详细教程(图文讲解)
4、Linux系统部署Nginx:Linux系统部署Nginx详细教程(图文讲解)
5、Linux系统配置Maven:Linux系统配置Maven环境详细教程(图文讲解)
6、Linux系统配置Node.js:Linux系统配置Node.js环境详细教程(图文讲解)
7、Linux系统安装部署MySQL:Linux系统安装部署MySQL完整教程(图文详解)
8、Linux系统安装部署Redis:Linux系统安装部署Redis完整教程(图文详解)
9、Linux系统安装部署Jenkins:Linux系统安装部署Jenkins详细教程(图文讲解)
10、宝塔面板部署前后端分离项目:手把手教学使用宝塔面板部署前后端分离项目(全面详细)
目录
一、踩坑记录
启动MongoDB完整报错:
2023-08-02T19:30:47.752+0800 I CONTROL [main] Automatically disabling TLS 1.0, to force-enable TLS 1.0 specify --sslDisabledProtocols 'none'
2023-08-02T19:30:47.758+0800 W ASIO [main] No TransportLayer configured during NetworkInterface startup
2023-08-02T19:30:47.758+0800 I CONTROL [initandlisten] MongoDB starting : pid=32625 port=27017 dbpath=/usr/local/mongoDB/mongoDBServer/data 64-bit host=ecs-132947
2023-08-02T19:30:47.758+0800 I CONTROL [initandlisten] db version v4.2.24
2023-08-02T19:30:47.758+0800 I CONTROL [initandlisten] git version: 5e4ec1d24431fcdd28b579a024c5c801b8cde4e2
2023-08-02T19:30:47.758+0800 I CONTROL [initandlisten] OpenSSL version: OpenSSL 1.0.1e-fips 11 Feb 2013
2023-08-02T19:30:47.758+0800 I CONTROL [initandlisten] allocator: tcmalloc
2023-08-02T19:30:47.758+0800 I CONTROL [initandlisten] modules: none
2023-08-02T19:30:47.758+0800 I CONTROL [initandlisten] build environment:
2023-08-02T19:30:47.758+0800 I CONTROL [initandlisten] distmod: rhel70
2023-08-02T19:30:47.758+0800 I CONTROL [initandlisten] distarch: x86_64
2023-08-02T19:30:47.758+0800 I CONTROL [initandlisten] target_arch: x86_64
2023-08-02T19:30:47.758+0800 I CONTROL [initandlisten] options: { config: "/usr/local/mongoDB/mongoDBServer/etc/mongodb.conf", net: { bindIp: "0.0.0.0", port: 27017 }, processManagement: { fork: true }, security: { authorization: "disabled" }, storage: { dbPath: "/usr/local/mongoDB/mongoDBServer/data", engine: "mmapv1", journal: { enabled: true } }, systemLog: { destination: "file", logAppend: true, path: "/usr/local/mongoDB/mongoDBServer/log/mongodb.log", quiet: true } }
2023-08-02T19:30:47.759+0800 I STORAGE [initandlisten]
2023-08-02T19:30:47.759+0800 I STORAGE [initandlisten] ** WARNING: You have explicitly specified 'MMAPV1' storage engine in your
2023-08-02T19:30:47.759+0800 I STORAGE [initandlisten] ** config file or as a command line option. Support for the MMAPV1
2023-08-02T19:30:47.759+0800 I STORAGE [initandlisten] ** storage engine has been deprecated and will be removed in
2023-08-02T19:30:47.759+0800 I STORAGE [initandlisten] ** version 4.2. See Release Notes for MongoDB 4.0 --- MongoDB Manual
2023-08-02T19:30:47.759+0800 I STORAGE [initandlisten]
2023-08-02T19:30:47.759+0800 I STORAGE [initandlisten] exception in initAndListen: Location18656: Cannot start server with an unknown storage engine: mmapv1, terminating
2023-08-02T19:30:47.759+0800 I REPL [initandlisten] Stepping down the ReplicationCoordinator for shutdown, waitTime: 10000ms
2023-08-02T19:30:47.759+0800 I SHARDING [initandlisten] Shutting down the WaitForMajorityService
2023-08-02T19:30:47.759+0800 I NETWORK [initandlisten] shutdown: going to close listening sockets...
2023-08-02T19:30:47.759+0800 I NETWORK [initandlisten] Shutting down the global connection pool
2023-08-02T19:30:47.759+0800 I STORAGE [initandlisten] Shutting down the FlowControlTicketholder
2023-08-02T19:30:47.759+0800 I - [initandlisten] Stopping further Flow Control ticket acquisitions.
2023-08-02T19:30:47.759+0800 I INDEX [initandlisten] Shutting down the IndexBuildsCoordinator
2023-08-02T19:30:47.759+0800 I NETWORK [initandlisten] Shutting down the ReplicaSetMonitor
2023-08-02T19:30:47.759+0800 I CONTROL [initandlisten] Shutting down free monitoring
2023-08-02T19:30:47.759+0800 I FTDC [initandlisten] Shutting down full-time data capture
2023-08-02T19:30:47.759+0800 I STORAGE [initandlisten] Shutting down the HealthLog
2023-08-02T19:30:47.759+0800 I - [initandlisten] Dropping the scope cache for shutdown
2023-08-02T19:30:47.759+0800 I CONTROL [initandlisten] now exiting
2023-08-02T19:30:47.759+0800 I CONTROL [initandlisten] shutting down with code:100
这是因为MongoDB在3.2版本之前采用的是MMAPV1存储引擎
1、3.0版本(2015年)之前,MongoDB只支持MMAPv1存储引擎。
2、3.2版本(2016年)中,引入了新的WiredTiger存储引擎,但MMAPv1仍然是默认的存储引擎。
3、3.4版本(2017年)中,正式将WiredTiger作为默认的存储引擎。
4、4.0版本(2018年)中,已经完全删除了MMAPv1存储引擎的支持。
修改mongodb.conf文件中为如下代码即可
bash
storageEngine=wiredTiger
二、准备MongoDB安装包
这是官网下载地址:Download MongoDB Community Server | MongoDB
版本我这边选择的是4.2.24,平台选择CentOS7,压缩包格式选择tgz格式,最后点击下载 。
三、安装MongoDB
1、进入指定目录
cd /usr/local
2、创建一个新文件夹用于存放MongoDB安装包
mkdir mongoDB
3、将下载好的压缩包上传到此文件夹下(Xftp)
4、进入到新建好的目录
cd mongoDB
5、解压压缩包
tar -zxvf mongodb-linux-x86_64-rhel70-4.2.24.tgz
6、重命名文件夹
mv mongodb-linux-x86_64-rhel70-4.2.24 mongoDBServer
这样就算安装好了。
四、配置MongoDB
1、进入重命名后的文件夹
cd mongoDBServer
2、创建三个分别存放数据、日志和配置的文件夹
mkdir data
mkdir log
mkdir etc
3、进入etc文件夹
cd etc
4、创建mongodb.conf配置文件
bash
vim mongodb.conf
5、复制如下代码:
注:dbpath和logpath需要替换成自己的路径,复制的时候可能dbpath会突然变成th,记得检查一下有没有复制错了!
bash
dbpath=/usr/local/mongoDB/mongoDBServer/data
logpath=/usr/local/mongoDB/mongoDBServer/log/mongodb.log
logappend=true
quiet=true
port=27017
fork=true
auth=false
journal=true
bind_ip=0.0.0.0
storageEngine=wiredTiger
命令详解:
参数 | 解释 |
---|---|
dbpath=/usr/local/mongoDB/mongoDBServer/data | 这个指定了MongoDB的数据文件存放的路径,MongoDB把数据文件存储在dbpath目录下。 |
logpath=/usr/local/mongoDB/mongoDBServer/log/mongodb.log | 这个指定了MongoDB的日志文件路径。 |
logappend=true | 这个设置为true的话,日志会以追加的方式写入日志文件,默认就是true。 |
quiet=true | 这个设置为true的话,可以过滤一些无用的日志信息,比如每次连接的信息等。 |
port=27017 | 这个是指定MongoDB监听的端口,默认是27017。 |
fork=true | 这个设置为true的话,MongoDB会以守护进程的方式运行。 |
auth=false | 这个是是否需要认证,默认是不需要认证就可以访问的。 |
journal=true | 这个是设置是否开启日志功能,默认是true,开启jourmal可以提高数据安全性。 |
bind_ip=0.0.0.0 | 这个是设置可以监听和访问的IP,0.0.0.0表示可以监听所有网络接口的IP请求。 |
storageEngine=wiredTiger | 这个指定存储引擎,默认是wiredTiger。 |
6、按Esc键退出编辑模式,输入:wq保存并退出vim编辑器即可
五、启动MongoDB
1、进入MongoDB的bin目录下
2、启动MongoDB
注:路径需要替换成自己的!
bash
./mongod --config /usr/local/mongoDB/mongoDBServer/etc/mongodb.conf
启动成功!
六、配置管理员用户
1、进入MongoDB
bash
./mongo
2、使用管理员权限
bash
use admin
3、创建用户
用户名为:htt
密码为:123456
bash
db.createUser( {user: "htt",pwd: "123456",roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]});
4、查看已经存在的用户
bash
show users
5、关闭MongoDB服务
bash
db.shutdownServer()
6、不关闭服务直接退出(执行这个命令,因为下面还需要用到这个服务)
bash
exit
七、配置环境变量
1、编辑profile文件
bash
vim /etc/profile
2、按i进入编辑模式
3、改为自己的安装路径
bash
export PATH=$PATH:/usr/local/mongoDB/mongoDBServer/bin
4、按Esc键退出编辑模式,输入:wq保存并退出vim编辑器即可
5、让配置文件生效
bash
source /etc/profile
6、查看mongoDB基本信息
bash
mongo --version
这样就配置成功了!
八、配置软链
1、将mongo路径软链到/usr/bin路径下,方便随处执行mongo命令
bash
ln -s /usr/local/mongoDB/mongoDBServer/bin/mongo /usr/bin/mongo
2、进入MongoDB(前提是MongoDB服务必须开启,如果执行了db.shutdownServer()将无法进入)
bash
mongo
这样其实软链就算配置成功了,下面我们尝试使用刚才配置好的用户信息登录一下!
3、使用管理员权限
bash
use admin
4、使用刚才创建的用户名密码进行验证
bash
db.auth('htt','123456')
返回1则表示成功!
5、退出
bash
exit
九、设置开机自启动
1、创建mongodb.service服务文件
bash
vim /lib/systemd/system/mongodb.service
2、写入如下内容
注: ExecStart和ExecStop要替换成自己的安装路径,同样注意别复制错了,第一次复制可能[Unit]变成了t],自己仔细检查一下!
bash
[Unit]
Description=mongodb
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/usr/local/mongoDB/mongoDBServer/bin/mongod --config /usr/local/mongoDB/mongoDBServer/etc/mongodb.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/usr/local/mongoDB/mongoDBServer/bin/mongod --shutdown --config /usr/local/mongoDB/mongoDBServer/etc/mongodb.confPrivateTmp=true
[Install]
WantedBy=multi-user.target
命令详解:
参数 | 解释 |
---|---|
Description | 描述这个服务单元的名称和功能,用于系统管理。 |
After | 定义该服务在网络目标(network.target)启动后再启动。 |
Type=forking | 表明这个服务会fork进程,systemd需要监控其主进程。 |
ExecStart | 服务启动时执行的命令,这里为启动mongod。 |
ExecReload | 服务重载时发送信号的命令,这里发送HUP信号重载配置。 |
ExecStop | 服务停止时执行的命令,这里为正常关闭mongod。 |
PrivateTmp | 给服务分配独立的临时空间,可省略。 |
WantedBy | 指定这个服务属于哪个目标,这里是多用户目标。 |
3、按Esc键退出编辑模式,输入:wq保存并退出vim编辑器即可
4、重新加载配置
bash
systemctl daemon-reload
5、进入创建好的目录
bash
cd /lib/systemd/system/
6、赋予权限
bash
chmod 755 mongodb.service
7、设置开机自启动
bash
systemctl enable mongodb.service
到这一步就算是可以了,下面为补充的2个命令。
8、启动服务(这边我们服务已经启动过了,无需再启动)
bash
systemctl start mongodb.service
9、关闭服务
bash
systemctl stop mongodb.service
10、重启服务器以后,输入如下命令(上面配置的软链就是这个好处)
bash
mongo
大功告成!
十、总结
以上就是我使用Linux安装部署MongoDB数据库的完整教程,如有问题,欢迎评论区讨论!