您的位置:首页 > 数据库 > Mongodb

bash 脚本编程二十一 MongoDB自动部署

2012-09-23 11:52 197 查看
这是单机版本的自动部署,手动部署可以参考我的另一篇文章:
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
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息