#!/bin/sh RETVAL=$? SHELL_NAME="deploy" BASEDIR=$(dirname $0) BASEDIR=$( ( cd "$BASEDIR" pwd )) LOCK_FILE="/tmp/deploy.lock" # 时间变量 CDATE=$(date "+%Y-%m-%d") CTIME=$(date "+%H:%M:%S") SHELL_LOG="${BASEDIR}/${SHELL_NAME}.log" JAVA_HOME="/usr/local/java/jdk1.8" SERVICE_PATH="/usr/lib/systemd/system" PUBLISH_PATH="@profiles.publish.path@" PROJECT_NAME="@project.artifactId@" PROJECT_EXECPATH="${PUBLISH_PATH}/${PROJECT_NAME}" PROJECT_UI_EXECPATH="${PUBLISH_PATH}/${PROJECT_NAME}-ui/dist" PROJECT_FILENAME="${PROJECT_NAME}.tar.gz" PROJECT_UI_FILENAME="${PROJECT_NAME}-ui.tar.gz" PROJECT_SERVICE="${SERVICE_PATH}/${PROJECT_NAME}.service" #写日志 writelog() { LOGINFO=$1 echo "${CDATE} ${CTIME}: ${SHELL_NAME} : ${LOGINFO}" >>${SHELL_LOG} echo ${LOGINFO} } #清理目标 clear_deploy() { SERVICE=$1 EXECPATH=$2 #清理后台自启服务 rm -rf ${SERVICE} #清理执行文件目录 rm -rf ${EXECPATH} } #清理ui clear_ui_deploy() { EXEC_UI_PATH=$1 rm -rf ${EXEC_UI_PATH} mkdir -p ${EXEC_UI_PATH} } build_service() { SERVICE=$1 EXECPATH=$2 echo "" >${SERVICE} echo "[Unit]" >>${SERVICE} echo "Description=${PROJECT_NAME}" >>${SERVICE} echo "After=network.target" >>${SERVICE} echo "" >>${SERVICE} echo "[Service]" >>${SERVICE} echo "Environment=\"JAVA_HOME=$JAVA_HOME\"" >>${SERVICE} echo "Type=forking" >>${SERVICE} echo "ExecStart=${EXECPATH}/bin/start.sh" >>${SERVICE} echo "ExecStop=${EXECPATH}/bin/shutdown.sh" >>${SERVICE} echo "PrivateTmp=true" >>${SERVICE} echo "" >>${SERVICE} echo "[Install]" >>${SERVICE} echo "WantedBy=multi-user.target" >>${SERVICE} writelog "${PROJECT_NAME}服务创建完成!" } #启动服务与nginx start_service() { systemctl enable ${PROJECT_NAME} systemctl daemon-reload writelog "${PROJECT_NAME}服务启动..." systemctl stop ${PROJECT_NAME} && systemctl start ${PROJECT_NAME} project_status=$(systemctl status "${PROJECT_NAME}"|grep Active |awk '{print $2}') jcpid=$(ps -ef | grep -v "grep" | grep "${PROJECT_NAME} " | awk '{print $2}') writelog "${PROJECT_NAME}服务启动,PID is ${jcpid} ,status:${project_status}" } #部署后台服务 project_deploy() { writelog "${PROJECT_NAME}_deploy" systemctl stop ${PROJECT_NAME} clear_deploy ${PROJECT_SERVICE} ${PROJECT_EXECPATH} writelog "${PROJECT_NAME}_clear_finish" tar -zvxf ./${PROJECT_FILENAME} -C ${PUBLISH_PATH} build_service ${PROJECT_SERVICE} ${PROJECT_EXECPATH} start_service writelog "${PROJECT_NAME}_deploy_finish" } #部署前台服务 project_ui_deploy() { writelog "${PROJECT_NAME}_ui_deploy" clear_ui_deploy ${PROJECT_UI_EXECPATH} tar -zvxf ./${PROJECT_UI_FILENAME} -C ${PUBLISH_PATH} writelog "${PROJECT_NAME}_ui_deploy_finish" } #主函数 main() { echo "后台服务部署" project_deploy echo "前端服务部署" project_ui_deploy exit ${RETVAL} } main $1