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

这是单机版本的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   }  

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/b4f82030a3957aa1eca6aaf3b22dd9c2.html