这是单机版本的MongoDB自动部署,手动部署可以参考我的另一篇文章:
首先下载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 }