我是靠谱客的博主 呆萌水蜜桃,最近开发中收集的这篇文章主要介绍bash 脚本编程二十一 MongoDB自动部署,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

这是单机版本的自动部署,手动部署可以参考我的另一篇文章:

http://blog.csdn.net/sheismylife/article/details/6737127

首先下载mongodb-linux-x86_64-2.2.0.tgz, 解压后放到工程目录mongodb下。

然后准备启动脚本mongodb:

#!/bin/sh
 
### BEGIN INIT INFO
# Provides:     mongodb
# Required-Start:
# Required-Stop:
# Default-Start:        2 3 4 5
# Default-Stop:         0 1 6
# Short-Description: mongodb
# Description: mongo db server
### END INIT INFO
 
. /lib/lsb/init-functions
 
PROGRAM=/usr/mongodb/bin/mongod
MONGOPID=`ps -ef | grep 'mongod' | grep -v grep | awk '{print $2}'`
 
test -x $PROGRAM || exit 0
 
case "$1" in
  start)
     ulimit -n 3000
     log_begin_msg "Starting MongoDB server" 
     $PROGRAM --fork --quiet -journal -maxConns=100 -rest --logpath /data/db/journal/mongdb.log
     log_end_msg 0
     ;;
  stop)
     log_begin_msg "Stopping MongoDB server" 
     if [ ! -z "$MONGOPID" ]; then 
        kill -15 $MONGOPID
     fi
     log_end_msg 0
     ;;
  status)
     ;;
  *)
     log_success_msg "Usage: /etc/init.d/mongodb {start|stop|status}" 
     exit 1
esac
 
exit 0

最后看一下install.sh

#!/bin/bash 

source ../common/tool.sh

copyFolder ./mongodb-linux-x86_64-2.2.0 /usr/mongodb-linux-x86_64-2.2.0
createLink "./mongodb-linux-x86_64-2.2.0" "/usr/mongodb"
createFolder "/data/db/journal"
chmod -R 777 /data/db/
copyFile mongodb $PWD /etc/init.d
chmod +x /etc/init.d/mongodb
update-rc.d mongodb defaults
service mongodb start

看一下目前经常用到的common/tool.sh脚本的全貌:

#!/bin/bash

function removeFolder {

    if [ -d "$1" ]
    then
	echo "$2 folder exists already, remove it..."
	rm -rf $1
    else
	echo "$2 folder doesn't exists"
    fi
}

#$1 src folder
#$2 dst folder
function copyFolder {

    if [ -d "$2" ]
    then
	echo "$2 folder exists already, remove it..."
	rm -rf $2
    else
	echo "$2 folder doesn't exists, start copying..."
    fi
    cp -r $1 $2
}


#remove the folder if exists already
#$1 folder path
function createFolder {

    if [ -d "$1" ]
    then
	echo "$1 folder exists already, remove it..."
	rm -rf $1
    else
	echo "$1 folder doesn't exists, create it..."
    fi
    mkdir -p $1
}

#remove the link if exists already
#create a link($2) to file($1)
function createLink {

    if [ -L "$2" ]
    then
	echo "$2 link exists already, removing it..."
	rm $2
    else
	echo "$2 link doesn't exists, creating it..."
    fi
    echo "creating link: $2 to $1"
    ln -s $1 $2
}

#$1 source file name
#$2 source folder
#$3 destion folder
#remove the file if exists already
#create a file
function copyFile {
    if [ -f "$3/$1" ]
    then
	echo "$3/$1 exists already, removing it..."
	rm $3/$1
    else
	echo "$3/$1 doesn't exists, copying it..."
    fi
    cp $2/$1 $3
}




# $1 variable name
# $2 expected value
# put this into /etc/environment if not found
function setEnv {
    source /etc/environment
    if [ "${!1}" = "$2" ]
    then
	echo "$1 is correct: $2"
    else
	echo "$1 is wrong: ${!1} != $2"

	h=`grep "$1="$2"" /etc/environment`
	if [ -n "$h" ]
	then
	    echo "/etc/environment has $1 already"
	else
	    echo "Adding $1 into /etc/environment..."
	    echo "$1="$2"" >> /etc/environment
	fi
	source /etc/environment
    fi
}

#$1 means the full name of dpkg
#return 1 if dpkg is installed (found 'ii dpkg-name' in the returned string)
#otherwise return 0
function hasDpkg {
    r=`dpkg -l | grep "$1"`
    if [ -n "$r" ]
    then
	h=`dpkg -l | grep "ii  $1"`
	if [ -n "$h" ]
	then
	    return 1
	else
	    return 0
	fi
    else
	return 0
    fi
}

#$1 search string
#$2 file path
#return 1 if found
#return 0 if not found
function findStringInFile {
    h=`grep "$1" $2`
    echo "h: $h"
    if [ -n "$h" ]
    then
	return 1
    else
	return 0
    fi
}


#$1 dpkg name
function installDpkg {
    hasDpkg $1
    r=$?
    
    if [ $r -eq 1 ]
    then
	echo "$1 was installed"
    else
	echo "$1 was not installed, installing..."
	apt-get install $1
    fi
}

#$1 user name
#return 1 if exists
#return 0 if doesn't exist
function hasUser {
    h=`grep "$1" /etc/passwd`
    echo "h: $h"
    if [ -n "$h" ]
    then
	return 1
    else
	return 0
    fi
}

#$1 user group name
#return 1 if exists
#return 0 if doesn't exist
function hasUserGroup {
    h=`grep "$1" /etc/group`
    echo "h: $h"
    if [ -n "$h" ]
    then
	return 1
    else
	return 0
    fi
}

#remove user and home folder
#then create then again
function recreateSystemUserAndFolder {
    hasUser $1
    r=$?
    
    if [ $r -eq 1 ]
    then
	echo "$1 exits already,remove it..."
	userdel -r $1
    else
	echo "$1 doesn't exist,create it..."
    fi
    adduser --home /home/$1 --system --shell /bin/bash $1  
}

#remove user group 
#then create it again
function recreateUserGroup {
    hasUserGroup $1
    r=$?
    if [ $r -eq 1 ]
    then
	echo "$1 exists already, remove it..."
	delgroup $1
    else
	echo "$1 doesn't exist, create it..."
    fi
    groupadd $1
}



最后

以上就是呆萌水蜜桃为你收集整理的bash 脚本编程二十一 MongoDB自动部署的全部内容,希望文章能够帮你解决bash 脚本编程二十一 MongoDB自动部署所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部