1.腳本
#!/bin/bash
#chkconfig: 2345 80 90
#description:mqmweb backend administrator service
#processname:mqmweb
#Define variables
APP_HOME=$(cd $(dirname $0); pwd)
srcPath=$(readlink ${0})
if [ -f "$srcPath" ];then
APP_HOME=$(cd $(dirname $srcPath); pwd)
fi
APP_HOME=$(dirname $APP_HOME)
echo "APP_HOME: $APP_HOME"
APP_MAINCLASS=com.lenovo.mqm.server.Launcher
APP_JDK_PATH=$APP_HOME/jdk/jdk-8u92-linux-x64.tar.gz
APP_JAVA_HOME=/opt/jdk1.8.0_92
#Check APP_HOME
if [ ! -d "$APP_HOME" ];then
echo "ERROR:App not found at $APP_HOME"
exit 1
fi
#Check JAVA_HOME environment variable
JAVA_HOME=$JAVA_HOME
jdk_version=`$JAVA_HOME/bin/java -version 2>&1 | grep "java version" | awk '{print $3}' | tr -d \" | awk '{split($0, array, ".")} END{print array[1]"."array[2]}'`
if [ ! "$jdk_version" = "1.8" ];then
JAVA_HOME=$APP_JAVA_HOME
if [ ! -d "$JAVA_HOME" ];then
JAVA_HOME=`find / -maxdepth 3 -name "jdk1.8*"|awk 'NR==1{print $1}'`
if [ ! -d "$JAVA_HOME" ];then
JAVA_HOME=`find / -maxdepth 6 -name "jdk1.8*"|awk 'NR==1{print $1}'`
if [ ! -d "$JAVA_HOME" ];then
if [ ! -f "$APP_JDK_PATH" ];then
echo "ERROR:jdk1.8 is not found"
exit 1
fi
tar -zxvf $APP_JDK_PATH -C /opt/
JAVA_HOME=$APP_JAVA_HOME
fi
fi
fi
fi
export JAVA_HOME
echo $JAVA_HOME
#echo "JAVA_HOME=$JAVA_HOME"
#echo "APP_HOME=$APP_HOME"
#Set jvm start arguments
JAVA_OPS="-server -Xmx1024m -Xms1024m -Xss256k"
JAVA_OPS="$JAVA_OPS -XX:+UseG1GC"
JAVA_OPS="$JAVA_OPS -XX:MaxGCPauseMillis=200"
JAVA_OPS="$JAVA_OPS -XX:+HeapDumpOnOutOfMemoryError"
JAVA_OPS="$JAVA_OPS -XX:HeapDumpPath=$APP_HOME/logs"
JAVA_OPS="$JAVA_OPS -XX:ErrorFile=$APP_HOME/logs/jvm_error.log"
#Set class path
lib=$APP_HOME/lib
CLASSPATH=$APP_HOME/conf
for jar in $lib/*.jar
do
CLASSPATH=$CLASSPATH:$jar
done
#Set web resources path environment variable
WEB_RESOURCES_PATH=$APP_HOME/webapp
export WEB_RESOURCES_PATH
############################################
#Init mqmweb
init(){
RUN_CMD="\"$APP_HOME/bin/init.sh\" $@"
#echo $RUN_CMD
eval $RUN_CMD
}
############################################
#update mqmweb
update(){
RUN_CMD="\"$APP_HOME/bin/update.sh\" $@"
#echo $RUN_CMD
eval $RUN_CMD
}
############################################
#Start server
start(){
RUN_CMD="\"$JAVA_HOME/bin/java\""
RUN_CMD="$RUN_CMD -classpath \"$CLASSPATH\""
RUN_CMD="$RUN_CMD $JAVA_OPS"
RUN_CMD="$RUN_CMD -DlogDir=$APP_HOME/logs"
RUN_CMD="$RUN_CMD $APP_MAINCLASS $@ 2>&1 &"
#RUN_CMD="$RUN_CMD >> \"$APP_HOME/logs/console.log\" 2>&1 &"
#echo $RUN_CMD
eval $RUN_CMD
echo "pid: $!"
echo $! > $APP_HOME/logs/mqmweb.pid
echo "The mqmweb service has been started now."
}
############################################
#Stop server
stop(){
javaps=`$JAVA_HOME/bin/jps -l |grep $APP_MAINCLASS`
if [ -n "$javaps" ]; then
psid=`echo $javaps |awk '{print $1}'`
kill -9 $psid
echo "The mqmweb service has been stopped now."
else
echo "The mqmweb service is not started."
fi
}
############################################
#Check status
status(){
javaps=`$JAVA_HOME/bin/jps -l |grep $APP_MAINCLASS`
if [ -n "$javaps" ]; then
psid=`echo $javaps |awk '{print $1}'`
echo "The mqmweb service is running, pid=$psid"
else
echo "The mqmweb service is not started."
fi
}
############################################
# Service
case "$1" in
'start')
start
;;
'stop')
stop
;;
'restart')
stop
start
;;
'status')
status
;;
'init')
init $2 $3 $4
;;
'update')
update $2 $3 $4
;;
*)
echo "Usage: $0 {start|stop|restart|status|init|update}"
exit 1
esac
exit $?
2.部署流程
####部署方式
1. 打包後將target下面的mqmweb-3.5.0.tar.gz上傳服務器,並解壓
tar -zxvf mqmweb-3.5.0.tar.gz
2. 進入解壓後的文件中的腳本文件,替換windows換行符爲linux換行符
vi -b ./mqmqweb-3.5.0/bin/mqmtool
:%s/^M//g
注意:注意了"^M"不是直接輸入的,是用ctrl+v 和 ctrl+m 分別輸入的。
3. 啓動項目
sh ./mqmqweb-3.5.0/bin/mqmtool start
4. 其他操作
sh ~~mqmtool(start|stop|restart|status|init|update)