這是單機版本的MongoDB自動部署,手動部署可以參考我的另一篇文章:http://www.linuxidc.com/Linux/2012-09/71132.htm
首先下載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
- }