mongodb安装脚本/启动脚本/配置文件

安装脚本

#!/bin/bash 
#author: QingFeng
#qq: 530035210
#blog: https://my.oschina.net/pwd/blog 
#自动安装mongodb和初始化配置
#缺省的配置如下
 
logdir=/data/log/shell          #日志路径
log=$logdir/shell.log            #日志文件 
is_font=1                #终端是否打印日志: 1打印 0不打印 
is_log=0                 #是否记录日志: 1记录 0不记录
random_time=$(date +%Y%m%d_%H%M%S)
PWD=`pwd`
mongodb_pakges="$PWD/mongodb-linux-x86_64-2.4.9.tgz" 
mongodb_conf=$PWD/mongodb.conf
mongodb_init=$PWD/mongodb
datef(){
date "+%Y-%m-%d %H:%M:%S"
}
 
print_log(){
if [[ $is_log -eq 1  ]];then
[[ -d $logdir ]] || mkdir -p $logdir
echo "[ $(datef) ] $1" >> $log
fi
if [[ $is_font -eq 1  ]];then
echo -e "[ $(datef) ] $1"
fi
}

if [[  ! -f $mongodb_conf ]];then
print_log "mongodb配置文件不存在,退出:$mongodb_conf"
exit
else
. $mongodb_conf
fi 

install(){
if [[  -d  /usr/local/mongodb  ]];then
print_log "mongodb已经安装,请不要再重复安装:/usr/local/mongodb"
exit
fi
print_log "解压文件中,请稍后..."
tar -zxf $mongodb_pakges  -C /usr/local/
mv /usr/local/$(echo $mongodb_pakges|awk -F'/' '{print $NF}'|sed "s/.tgz//g")   /usr/local/mongodb

if [[  -d  /usr/local/mongodb  ]];then
print_log "mongodb已经安装成功:/usr/local/mongodb"
else
print_log "mongodb已经安装失败:/usr/local/mongodb"
fi

if [[ -d $dbpath  ]];then
print_log "mongodb: 数据目录:$dbpath已经存在"
else
mkdir -p  $dbpath 
fi 

lastname=$(echo "$logpath" |awk -F'/' '{print $NF }')
mongodblog=$(echo $logpath | sed "s/$lastname//g")
if [[ -d $mongodblog  ]];then
print_log "mongodb: 日志目录:$mongodblog已经存在"
else
mkdir -p  $mongodblog
fi 

if [[ !  -d /usr/local/mongodb/conf ]];then
mkdir -p  /usr/local/mongodb/conf
cp $mongodb_conf  /usr/local/mongodb/conf
fi
profile_num=$(cat /etc/profile |grep mongodb |wc -l)
if [[ $profile_num -eq 0  ]];then
echo "MONGODBPATH=/usr/local/mongodb/bin:\$PATH"  >> /etc/profile
echo "export MONGODBPATH" >> /etc/profile
fi

if [[ ! -f $mongodb_init   ]];then
print_log "mongodb: 启动脚本已经存在."
else
cp $mongodb_init  /etc/init.d/
chmod a+x /etc/init.d/mongodb
chkconfig --add mongodb
chkconfig mongodb on
fi 

print_log "初始化配置完成."
print_log "数据目录为:$dbpath 日志文件为:$mongodblog"
print_log "配置目录为:/usr/local/mongodb/conf"
print_log "启动脚本为:/etc/init.d/$mongodb_init"

} 

install

启动脚本

#!/bin/sh  
# chkconfig: 2345 93 18  
# author:QingFeng 
# description:MongoDB(MongoDB-2.4.9)  

#默认参数设置
#mongodb 家目录  
MONGODB_HOME=/usr/local/mongodb

#mongodb 启动命令  
MONGODB_BIN=$MONGODB_HOME/bin/mongod

#mongodb 配置文件
MONGODB_CONF=$MONGODB_HOME/conf/mongodb.conf

#mongodb PID
MONGODB_PID=/var/run/mongo.pid

#最大文件打开数量限制
SYSTEM_MAXFD=65535

#mongodb 名字  
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"  
     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

mongodb配置文件

dbpath=/data/db #数据目录存在位置
logpath=/data/logs/mongodb/mongodb.log #日志文件存放目录
port=27017  #端口
fork=true  #以守护程序的方式启用,即在后台运行
#auth=true  #开始认证
verbose=true
vvvv=true #启动verbose冗长信息,它的级别有 vv~vvvvv,v越多级别越高,在日志文件中记录的信息越详细.
maxConns=20000 #默认值:取决于系统(即的ulimit和文件描述符)限制。MongoDB中不会限制其自身的连接。
logappend=true #写日志的模式:设置为true为追加。
pidfilepath=/var/run/mongo.pid
#cpu=true #设置为true会强制mongodb每4s报告cpu利用率和io等待,把日志信息写到标准输出或日志文件。
directoryperdb=ture #数据目录存储模式,如果直接修改原来的数据会不见了
#nohttpinterface=false #28017 端口开启的服务。默认false,支持
#notablescan=false#不禁止表扫描操作
profile=0 #数据库分析等级设置,0 关 2 开。包括所有操作。 1 开。仅包括慢操作.
slowms=200 #记录profile分析的慢查询的时间,默认是100毫秒.
quiet=true 
syncdelay=60 #刷写数据到日志的频率,通过fsync操作数据。默认60秒
文章作者 明哥
文章地址 https://www.pvcreate.com/index.php/archives/89/
创建时间 2015-04-10
关注订阅 微信订阅号
开源项目 https://gitee.com/lookingdreamer
工具市场 https://gitee.com/lookingdreamer/SPPPOTools
Shell相关