作 者:云白先生
公众号: 前端微服务
GitHub:github.com/yongbolu
概述
MongoDB 针对不同的操作系统有不同的安装包,我们这篇入门的文章就以 Windows和CentOS7 为例进行讲解。
目录
环境搭建
- 禁用 SELINUX=disabled
- 下载安装文件
- 解压下载的文件
- 复制解压文件到运行目录
- 设置环境变量
- 创建数据目录
启动方式
- 基于命令行方式启动MongoDB
- 基于配置文件的命令行启动
- 以守护进程方式启动MongoDB
- 使用系统服务的方式启动
停止
- 使用kill命令
- shutdown命令
测试
- 浏览器测试
- 3T
正文
一、环境搭建
1. 禁用 SELINUX=disabled
SELinux 的工作模式(Disabled、Permissive和Enforcing)设置为Disabled
输入指令
$ vi /etc/selinux/config
配置如下:
[root@iZwz99ftqv2b7ynaocfmlnZ mongoDB]# vi /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX=disabled
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three two values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
2. 下载安装文件
2.1 官网下载
下载地址: www.mongodb.org/downloads
2.2 命令下载
$ curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.6.tgz
3. 解压下载的文件
$ tar -xvf mongodb-linux-x86_64-3.0.6.tgz
4. 复制解压文件到运行目录
$ mkdir -p /usr/local/lib/mongodb
# 复制到指定目录
$ cp -R -n /usr/local/mongoDB/mongodb-linux-x86_64-3.6.13/. /usr/local/lib/mongodb/
5. 设置环境变量
$ vi /etc/profile
export PATH=$PATH:/usr/local/lib/mongodb/bin:$PATH
6. 创建数据目录
# mkdir -p /data/mongodata
# mkdir -pv /data/mongodata/{rs1,rs2,rs3}
# mkdir -pv /usr/local/lib/mongodb/conf
二、启动方式
2.1. 基于命令行方式启动MongoDB
执行mongod,启动MongoDB服务器,mongod有很多可配置的启动选项,可以使用mongod --help查看所有选项
- --dbpath:指定数据目录,默认是/data/db下,每个mongod进程都需要独立的数据目录,加入有3个mongod实例,就必须要有3个独立的数据目录。当mongod启动时,会在数据目录中创建mongod.lock文件。这个文件用于防止其他mongod进程使用该数据目录。若当有一个mongd启动后,再启动另一个mongod时,若再使用刚刚已经启动mongod的目录,那么会报错。
- --port:指定服务器监听的端口号。默认端口号为27017,要是运行多个mongod,必须指定不同的端口号 若有一个27017的端口已经使用了,那么如果启动第二个mongod的时候,若还指定27017的话,会报错。
- --fork:以守护进程的方式运行MongoDB,创建服务进程,相当于nohup ... &
nohup mongodb/bin/mongod --dbpath mongodb/0706 &与mongodb/bin/mongod --dbpath mongodb/0706 --fork效果一致 - --logpath:指定输出日志的路径,而不是输出到命令行。如果对文件夹有写权限的话,系统会在文件不存在时创建它。它将会已有文件覆盖掉,清除原来所有的日志记录。如果想保留原来的日志,还需要使用--logappend。
- --config:指定配置文件,加载命令行未指定的各种选项。
- --directoryperdb:使用该参数可以将每个数据库存放在单独的目录中 比如我新建两个数据库,那么在数据目录下会自动建立数据库名一样的文件夹。启动数据库时,MongoDB会将一个文件写入local数据库的startup_log集合中,该集合包含了MongoDB的版本,所基于的系统等。
注意:
默认情况下,启动mongod时还会启动一个基本的HTTP服务器,该服务器监听的端口号比主服务的端口号大1000。这个服务提供了HTTP接口,可以查看Mongodb的一些基本信息。这些信息也可以通过shell来查看。比如说你启动的是默认端口27017,那么在浏览器打开http://10.0.0.13:28017 但是你打开的时候可能没有,因为默认管理接口是关闭的,所以在启动的时候加上开启管理接口参数--httpinterface,也就是 mongodb/bin/mongod --dbpath mongodb/0706 --fork --logpath 0706.log --httpinterface
$ mongod --dbpath=/data/mongodata/rs1 --logpath=/data/mongodata/rs1/rs1.log &
2.2. 基于配置文件的命令行启动
$ vi /usr/local/lib/mongodb/conf/rs2.conf
port = 27000
dbpath = /data/mongodata/rs2
logpath = /data/mongodata/rs2/rs2.log
smallfiles = true
fork = true
pidfilepath = /var/run/mongo.pid
$ mongod --config /usr/local/lib/mongodb/conf/rs2.conf &
2.3. 以守护进程方式启动MongoDB
$ mongod --dbpath=/data/mongodata/rs3 --logpath=/data/mongodata/rs1/rs3.log --fork --port 28000
2.4. 使用系统服务的方式启动
2.4.1 新建配置文件
$ cd /usr/local/lib/mongodb/conf
# vi mongodb.conf
port = 27017
dbpath = /data/mongodata/rs1
logpath = /data/mongodata/rs1/rs1.log
smallfiles = true
fork = true
pidfilepath = /usr/local/run/mongo.pid
# mongo.conf 配置文件设置
[root@iZwz99ftqv2b7ynaocfmlnZ ~]# vim mongo.conf
dbpath=/usr/local/mongodb/data
logpath=/usr/local/mongodb/logs/mongo.log
logappend=true
journal=true
quiet=true
port=27017
fork=true
bind_ip=0.0.0.0
pathmunge () {
case ":${PATH}:" in
*:"$1":*)
;;
*)
if [ "$2" = "after" ] ; then
PATH=$PATH:$1
else
PATH=$1:$PATH
fi
esac
}
if [ -x /usr/bin/id ]; then
if [ -z "$EUID" ]; then
# ksh workaround
EUID=`/usr/bin/id -u`
UID=`/usr/bin/id -ru`
fi
USER="`/usr/bin/id -un`"
LOGNAME=$USER
MAIL="/var/spool/mail/$USER"
fi
# Path manipulation
if [ "$EUID" = "0" ]; then
pathmunge /usr/sbin
pathmunge /usr/local/sbin
else
pathmunge /usr/local/sbin after
pathmunge /usr/sbin after
fi
HOSTNAME=`/usr/bin/hostname 2>/dev/null`
HISTSIZE=1000
if [ "$HISTCONTROL" = "ignorespace" ] ; then
export HISTCONTROL=ignoreboth
else
export HISTCONTROL=ignoredups
"mongo.conf" 57L, 1310C
$ mongod --config mongo.conf
2.4.2 新建脚本
#!/bin/sh
# chkconfig:
#MogoDB home directory
MONGODB_HOME=/usr/local/lib/mongodb
#mongodb command
MONGODB_BIN=$MONGODB_HOME/bin/mongod
#mongodb config file
MONGODB_CONF=$MONGODB_HOME/conf/mongodb.conf
#mongodb PID
MONGODB_PID=/usr/local/run/mongo.pid
#set open file limit
SYSTEM_MAXFD=65535
MONGODB_NAME="mongodb"
. /etc/rc.d/init.d/functions
if [ ! -f $MONGODB_BIN ]
then
echo "$MONGODB_NAME startup: $MONGODB_BIN not exists! "
exit
fi
start(){
ulimit -HSn $SYSTEM_MAXFD
$MONGODB_BIN --config="$MONGODB_CONF" --fork ##added
ret=$?
if [ $ret -eq 0 ]; then
action $"Starting $MONGODB_NAME: " /bin/true
else
action $"Starting $MONGODB_NAME: " /bin/false
fi
}
stop(){
PID=$(ps aux |grep "$MONGODB_NAME" |grep "$MONGODB_CONF" |grep -v grep |wc -l)
if [[ $PID -eq 0 ]];then
action $"Stopping $MONGODB_NAME: " /bin/false
exit
fi
kill -HUP `cat $MONGODB_PID`
ret=$?
if [ $ret -eq 0 ]; then
action $"Stopping $MONGODB_NAME: " /bin/true
rm -f $MONGODB_PID
else
action $"Stopping $MONGODB_NAME: " /bin/false
fi
}
restart() {
stop
sleep 2
start
}
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status $prog
;;
restart)
restart
;;
*)
echo $"Usage: $0 {start|stop|status|restart}"
esac
$ service mongod start
三、停止
3.1 查看进程,使用kill命令
注意:不能使用kill -9
3.2 在客户端进去,使用shutdown命令
> use admin;
switched to db admin
> db.shutdownServer();
server should be down...
$ service mongod stop
四、测试
打开浏览器输入http://127.0.0.1:27017
关注我们
点击下方关注我👇👇👇