diff --git a/deploy.sh b/deploy.sh new file mode 100644 index 0000000000000000000000000000000000000000..ebfa5b17a4d1a3c75ee03ea4dc4d108943c880ac --- /dev/null +++ b/deploy.sh @@ -0,0 +1,444 @@ +#!/bin/bash +#Shell 鐜 +SHELL_NAME="deploy.sh" +BASEDIR=$(dirname $0) +BASEDIR=$( ( + cd "$BASEDIR" + pwd +)) +SHELL_LOG="${BASEDIR}/${SHELL_NAME}.log" + +JAVA_HOME="/usr/local/java/jdk1.8" +OPT_PATH="/usr/local" +PUBLISH_PATH="/home/publish" +LOCK_FILE="/tmp/deploy.lock" + +PRO_NAME="smart-gov" #椤圭洰鍚嶇О +# 鏃堕棿鍙橀噺 +LOG_DATE='date "+%Y-%m-%d"' +LOG_TIME='date "+%H-%M-%S"' + +# nginx +NGINX_CONF_PATH="/etc/nginx/conf.d/" + +# mysql鍙橀噺 +MYSQL_HOST="127.0.0.1" +MYSQL_USER="root" +MYSQL_PASSWORD="xhx@2022" + +CDATE=$(date "+%Y-%m-%d") +CTIME=$(date "+%H-%M-%S") +#/usr/lib/systemd/system/nacos.service +SERVICE_PATH="/usr/lib/systemd/system" +NACOS="nacos" +NACOS_FILENAME="nacos-server-2.1.1.tar.gz" +NACOS_SERVICE="${SERVICE_PATH}/${NACOS}.service" +NACOS_EXECPATH="${OPT_PATH}/${NACOS}" + +# 缃戝叧宸ョ▼鍙橀噺 +SMART_GATEWAY="smart-gateway" +SMART_GATEWAY_FILENAME="${SMART_GATEWAY}.tar.gz" +SMART_GATEWAY_SERVICE="${SERVICE_PATH}/smart-gateway.service" +SMART_GATEWAY_EXECPATH="${PUBLISH_PATH}/smart-gateway" + +# 闂ㄦ埛宸ョ▼鍙橀噺 +SMART_PORTAL_PLATFORM="smart-portal-platform" +SMART_PORTAL_PLATFORM_FILENAME="${SMART_PORTAL_PLATFORM}.tar.gz" +SMART_PORTAL_PLATFORM_UI_FILENAME="${SMART_PORTAL_PLATFORM}-ui.tar.gz" +SMART_PORTAL_PLATFORM_SERVICE="${SERVICE_PATH}/${SMART_PORTAL_PLATFORM}.service" +SMART_PORTAL_PLATFORM_EXECPATH="${PUBLISH_PATH}/${SMART_PORTAL_PLATFORM}" + +# 鍩虹宸ョ▼鍙橀噺 +SMART_BASE_PLATFORM="smart-base-platform" +SMART_BASE_PLATFORM_FILENAME="${SMART_BASE_PLATFORM}.tar.gz" +SMART_BASE_PLATFORM_UI_FILENAME="${SMART_BASE_PLATFORM}-ui.tar.gz" +SMART_BASE_PLATFORM_SERVICE="${SERVICE_PATH}/${SMART_BASE_PLATFORM}.service" +SMART_BASE_PLATFORM_EXECPATH="${PUBLISH_PATH}/${SMART_BASE_PLATFORM}" + +# 璁惧宸ョ▼鍙橀噺 +DEVICE_PLATFORM="device-platform" +DEVICE_PLATFORM_FILENAME="${DEVICE_PLATFORM}.tar.gz" +DEVICE_PLATFORM_UI_FILENAME="${DEVICE_PLATFORM}-ui.tar.gz" +DEVICE_PLATFORM_SERVICE="${SERVICE_PATH}/${DEVICE_PLATFORM}.service" +DEVICE_PLATFORM_EXECPATH="${PUBLISH_PATH}/${DEVICE_PLATFORM}" + +# 鏃ュ織宸ョ▼鍙橀噺 +LOG_PLATFORM="log-platform" +LOG_PLATFORM_FILENAME="${LOG_PLATFORM}.tar.gz" +LOG_PLATFORM_UI_FILENAME="${LOG_PLATFORM}-ui.tar.gz" +LOG_PLATFORM_SERVICE="${SERVICE_PATH}/${LOG_PLATFORM}.service" +LOG_PLATFORM_EXECPATH="${PUBLISH_PATH}/${LOG_PLATFORM}" + +#鍔犻攣 +shell_lock() { + touch ${LOCK_FILE} +} +#鍒犻櫎閿� +shell_unlock() { + rm -f ${LOCK_FILE} +} +#鍐欐棩蹇� +writelog() { + LOGINFO=$1 + echo ${LOGINFO} + echo "${CDATE} ${CTIME}: ${SHELL_NAME} : ${LOGINFO}" >>${SHELL_LOG} +} + +setup_java() { + writelog "setup java" +} + +setup_redis() { + writelog "setup redis" +} + +setup_mysql() { + writelog "setup mysql" +} + +setup_rabbitmq() { + writelog "setup rabbitmq" +} + +setup_nginx() { + writelog "setup nginx" +} + +usage() { + echo $"Usage: $0 [ deploy | rollback ]" +} + +clear_deploy() { + PROJECT_NAME=$1 + SERVICE=$2 + EXECPATH=$3 + + rm -rf ${SERVICE} + rm -rf ${EXECPATH} + rm -f ${NGINX_CONF_PATH}/${PROJECT_NAME}.conf +} + +init_deploy() { + writelog "init_deploy" + mkdir -p ${PUBLISH_PATH} + chmod -R 755 $PUBLISH_PATH + + mkdir -p /mortals/app/data + mkdir -p /mortals/app/logs + chmod -R 755 /mortals + +} + +build_service() { + PROJECT_NAME=$1 + SERVICE=$2 + EXECPATH=$3 + 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}鏈嶅姟鍒涘缓瀹屾垚!" + +} + +start_service_and_nginx() { + PROJECT_NAME=$1 + systemctl enable ${PROJECT_NAME} + systemctl daemon-reload + systemctl start ${PROJECT_NAME} + cd ${NGINX_CONF_PATH} + cp -a ${BASEDIR}/release/conf/${PROJECT_NAME}.conf ${PROJECT_NAME}.conf + nginx -t + nginx -s reload + jcpid=$(ps -ef | grep -v "grep" | grep "${PROJECT_NAME} " | awk '{print $2}') + writelog "${PROJECT_NAME}鏈嶅姟鍚姩,PID is ${jcpid}" +} + +nacos_deploy() { + writelog "${NACOS}_deploy" + rm -rf ${NACOS_SERVICE} + rm -rf ${NACOS_EXECPATH} + cp -a $BASEDIR/release/nacos/${NACOS_FILENAME} $OPT_PATH + cd $OPT_PATH + tar -zvxf ${NACOS_FILENAME} + rm -f ${NACOS_FILENAME} + mysql -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASSWORD} <${NACOS_EXECPATH}/db/nacos.sql + if [ ! -f "$NACOS_SERVICE" ]; then + echo "" >$NACOS_SERVICE + echo "[Unit]" >>$NACOS_SERVICE + echo "Description=nacos" >>$NACOS_SERVICE + echo "After=network.target" >>$NACOS_SERVICE + echo "" >>$NACOS_SERVICE + echo "[Service]" >>$NACOS_SERVICE + echo "Environment=\"JAVA_HOME=$JAVA_HOME\"" >>$NACOS_SERVICE + echo "Type=forking" >>$NACOS_SERVICE + echo "ExecStart=${NACOS_EXECPATH}/bin/startup.sh -m standalone" >>$NACOS_SERVICE + echo "ExecStop=${NACOS_EXECPATH}/bin/shutdown.sh" >>$NACOS_SERVICE + echo "PrivateTmp=true" >>$NACOS_SERVICE + echo "" >>$NACOS_SERVICE + echo "[Install]" >>$NACOS_SERVICE + echo "WantedBy=multi-user.target" >>$NACOS_SERVICE + writelog "NACOS_SERVICE鍒涘缓瀹屾垚!" + else + writelog "NACOS_SERVICE鏂囦欢宸茬粡瀛樺湪" + fi + writelog "NACOS_SERVICE鏈嶅姟鍚姩!" + systemctl enable ${NACOS} + systemctl daemon-reload + systemctl start ${NACOS} + jcpid=$(ps -ef | grep -v "grep" | grep "${NACOS} " | awk '{print $2}') + writelog "${NACOS}鏈嶅姟鍚姩!pid=${jcpid}" +} + +smart_gateway_deploy() { + writelog "${SMART_GATEWAY}_deploy" + clear_deploy ${SMART_GATEWAY} ${SMART_GATEWAY_SERVICE} ${SMART_GATEWAY_EXECPATH} + cp -a ${BASEDIR}/release/${SMART_GATEWAY}/${SMART_GATEWAY_FILENAME} ${PUBLISH_PATH} + cd ${PUBLISH_PATH} + tar -zxvf ${SMART_GATEWAY_FILENAME} #瑙e帇tar.gz鍖� + rm -f ${SMART_GATEWAY_FILENAME} #鍒犻櫎tar.gz鍖� + if [ ! -f "${SMART_GATEWAY_SERVICE}" ]; then + build_service ${SMART_GATEWAY} ${SMART_GATEWAY_SERVICE} ${SMART_GATEWAY_EXECPATH} + else + writelog "${SMART_GATEWAY}鏈嶅姟鏂囦欢宸茬粡瀛樺湪锛�" + fi + start_service_and_nginx ${SMART_GATEWAY} +} + +smart_portal_platform_deploy() { + writelog "${SMART_PORTAL_PLATFORM}_deploy" + clear_deploy ${SMART_PORTAL_PLATFORM} ${SMART_PORTAL_PLATFORM_SERVICE} ${SMART_PORTAL_PLATFORM_EXECPATH} + writelog "${SMART_PORTAL_PLATFORM}_clear_finish" + cp -a ${BASEDIR}/release/${SMART_PORTAL_PLATFORM}/${SMART_PORTAL_PLATFORM_FILENAME} ${PUBLISH_PATH} + cp -a ${BASEDIR}/release/${SMART_PORTAL_PLATFORM}/${SMART_PORTAL_PLATFORM_UI_FILENAME} ${PUBLISH_PATH} + + cd ${PUBLISH_PATH} + if [ ! -f "${SMART_PORTAL_PLATFORM_FILENAME}" ]; then + writelog "${SMART_PORTAL_PLATFORM_FILENAME} 鏂囦欢涓嶅瓨鍦紝缁撴潫褰撳墠瀹夎閮ㄧ讲锛�" + return + fi + tar -zxvf ${SMART_PORTAL_PLATFORM_FILENAME} #瑙e帇tar.gz鍖� + rm -f ${SMART_PORTAL_PLATFORM_FILENAME} #鍒犻櫎tar.gz鍖� + tar -zxvf ${SMART_PORTAL_PLATFORM_UI_FILENAME} #瑙e帇tar.gz鍖� + rm -f ${SMART_PORTAL_PLATFORM_UI_FILENAME} #鍒犻櫎tar.gz鍖� + mysql -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASSWORD} <${SMART_PORTAL_PLATFORM_EXECPATH}/db/db.sql + mysql -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASSWORD} <${SMART_PORTAL_PLATFORM_EXECPATH}/db/menu.sql + if [ ! -f "${SMART_PORTAL_PLATFORM_SERVICE}" ]; then + build_service ${SMART_PORTAL_PLATFORM} ${SMART_PORTAL_PLATFORM_SERVICE} ${SMART_PORTAL_PLATFORM_EXECPATH} + else + writelog "${SMART_PORTAL_PLATFORM}鏈嶅姟鏂囦欢宸茬粡瀛樺湪锛�" + fi + start_service_and_nginx ${SMART_PORTAL_PLATFORM} +} + +smart_base_platform_deploy() { + writelog "${SMART_BASE_PLATFORM}_deploy" + clear_deploy ${SMART_BASE_PLATFORM} ${SMART_BASE_PLATFORM_SERVICE} ${SMART_BASE_PLATFORM_EXECPATH} + cp -a ${BASEDIR}/release/${SMART_BASE_PLATFORM}/${SMART_BASE_PLATFORM_FILENAME} ${PUBLISH_PATH} + cp -a ${BASEDIR}/release/${SMART_BASE_PLATFORM}/${SMART_BASE_PLATFORM_UI_FILENAME} ${PUBLISH_PATH} + cd ${PUBLISH_PATH} + if [ ! -f "${SMART_BASE_PLATFORM_FILENAME}" ]; then + writelog "${SMART_BASE_PLATFORM_FILENAME} 鏂囦欢涓嶅瓨鍦紝缁撴潫褰撳墠瀹夎閮ㄧ讲锛�" + return + fi + tar -zxvf ${SMART_BASE_PLATFORM_FILENAME} #瑙e帇tar.gz鍖� + rm -f ${SMART_BASE_PLATFORM_FILENAME} #鍒犻櫎tar.gz鍖� + tar -zxvf ${SMART_BASE_PLATFORM_UI_FILENAME} #瑙e帇tar.gz鍖� + rm -f ${SMART_BASE_PLATFORM_UI_FILENAME} #鍒犻櫎tar.gz鍖� + mysql -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASSWORD} <${SMART_BASE_PLATFORM_EXECPATH}/db/base.sql + mysql -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASSWORD} <${SMART_BASE_PLATFORM_EXECPATH}/db/base_modules.sql + mysql -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASSWORD} <${SMART_BASE_PLATFORM_EXECPATH}/db/menu.sql + mysql -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASSWORD} <${SMART_BASE_PLATFORM_EXECPATH}/db/params.sql + mysql -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASSWORD} <${SMART_BASE_PLATFORM_EXECPATH}/db/init_area_data.sql + mysql -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASSWORD} <${SMART_BASE_PLATFORM_EXECPATH}/db/init_matter_data.sql + if [ ! -f "${SMART_BASE_PLATFORM_SERVICE}" ]; then + build_service ${SMART_BASE_PLATFORM} ${SMART_BASE_PLATFORM_SERVICE} ${SMART_BASE_PLATFORM_EXECPATH} + else + writelog "${SMART_BASE_PLATFORM}鏈嶅姟鏂囦欢宸茬粡瀛樺湪锛�" + fi + start_service_and_nginx ${SMART_BASE_PLATFORM} +} + +device_platform_deploy() { + writelog "${DEVICE_PLATFORM}_deploy" + clear_deploy ${DEVICE_PLATFORM} ${DEVICE_PLATFORM_SERVICE} ${DEVICE_PLATFORM_EXECPATH} + cp -a ${BASEDIR}/release/${DEVICE_PLATFORM}/${DEVICE_PLATFORM_FILENAME} ${PUBLISH_PATH} + cp -a ${BASEDIR}/release/${DEVICE_PLATFORM}/${DEVICE_PLATFORM_UI_FILENAME} ${PUBLISH_PATH} + cd ${PUBLISH_PATH} + if [ ! -f "${DEVICE_PLATFORM_FILENAME}" ]; then + writelog "${DEVICE_PLATFORM_FILENAME} 鏂囦欢涓嶅瓨鍦紝缁撴潫褰撳墠瀹夎閮ㄧ讲锛�" + return + fi + tar -zxvf ${DEVICE_PLATFORM_FILENAME} #瑙e帇tar.gz鍖� + rm -f ${DEVICE_PLATFORM_FILENAME} #鍒犻櫎tar.gz鍖� + tar -zxvf ${DEVICE_PLATFORM_UI_FILENAME} #瑙e帇tar.gz ui鍖� + rm -f ${DEVICE_PLATFORM_UI_FILENAME} #鍒犻櫎tar.gz ui鍖� + + mysql -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASSWORD} <${DEVICE_PLATFORM_EXECPATH}/db/base.sql + mysql -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASSWORD} <${DEVICE_PLATFORM_EXECPATH}/db/module.sql + mysql -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASSWORD} <${DEVICE_PLATFORM_EXECPATH}/db/menu.sql + mysql -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASSWORD} <${DEVICE_PLATFORM_EXECPATH}/db/params.sql + mysql -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASSWORD} <${DEVICE_PLATFORM_EXECPATH}/db/init_area.sql + if [ ! -f "${DEVICE_PLATFORM_SERVICE}" ]; then + build_service ${DEVICE_PLATFORM} ${DEVICE_PLATFORM_SERVICE} ${DEVICE_PLATFORM_EXECPATH} + else + writelog "${DEVICE_PLATFORM}鏈嶅姟鏂囦欢宸茬粡瀛樺湪锛�" + fi + + cp -a /home/smart-gov/release/device-platform/device-platform-ui.tar.gz /home/publish/ + cd /home/publish/ #杩涘叆绉诲姩鏂囦欢鍚庣殑鐩綍 + tar -zxvf device-platform-ui.tar.gz #瑙e帇tar.gz鍖� + rm -f device-platform-ui.tar.gz #鍒犻櫎tar.gz鍖� + + start_service_and_nginx ${DEVICE_PLATFORM} +} + +log_platform_deploy() { + writelog "${LOG_PLATFORM}_deploy" + clear_deploy ${LOG_PLATFORM} ${LOG_PLATFORM_SERVICE} ${LOG_PLATFORM_EXECPATH} + cp -a ${BASEDIR}/release/${LOG_PLATFORM}/${LOG_PLATFORM_FILENAME} ${PUBLISH_PATH} + cp -a ${BASEDIR}/release/${LOG_PLATFORM}/${LOG_PLATFORM_UI_FILENAME} ${PUBLISH_PATH} + + cd ${PUBLISH_PATH} + if [ ! -f "${LOG_PLATFORM_FILENAME}" ]; then + writelog "${LOG_PLATFORM_FILENAME} 鏂囦欢涓嶅瓨鍦紝缁撴潫褰撳墠瀹夎閮ㄧ讲锛�" + return + fi + tar -zxvf ${LOG_PLATFORM_FILENAME} #瑙e帇tar.gz鍖� + rm -f ${LOG_PLATFORM_FILENAME} #鍒犻櫎tar.gz鍖� + tar -zxvf ${LOG_PLATFORM_UI_FILENAME} #瑙e帇tar.gz鍖� + rm -f ${LOG_PLATFORM_UI_FILENAME} #鍒犻櫎tar.gz鍖� + mysql -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASSWORD} <${LOG_PLATFORM_EXECPATH}/db/base.sql + mysql -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASSWORD} <${LOG_PLATFORM_EXECPATH}/db/module.sql + mysql -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASSWORD} <${LOG_PLATFORM_EXECPATH}/db/menu.sql + if [ ! -f "${LOG_PLATFORM_SERVICE}" ]; then + build_service ${LOG_PLATFORM} ${LOG_PLATFORM_SERVICE} ${LOG_PLATFORM_EXECPATH} + else + writelog "${LOG_PLATFORM}鏈嶅姟鏂囦欢宸茬粡瀛樺湪锛�" + fi + start_service_and_nginx ${LOG_PLATFORM} +} + +stopApps() { + echo "鍋滄鏈嶅姟寮€濮嬶紒" + echo "nacos stop..." + systemctl stop ${NACOS} + echo "nacos finish..." + echo "smart-gateway stop..." + systemctl stop ${SMART_GATEWAY} + echo "smart-gateway finish..." + echo "smart-portal-platform stop..." + systemctl stop ${SMART_PORTAL_PLATFORM} + echo "smart-portal-platform finish..." + echo "smart-base-platform stop..." + systemctl stop ${SMART_BASE_PLATFORM} + echo "smart-base-platform finish..." + echo "device-platform stop..." + systemctl stop ${DEVICE_PLATFORM} + echo "device-platform finish..." + echo "log-platform stop..." + systemctl stop ${LOG_PLATFORM} + echo "log-platform finish..." + echo "鍋滄鏈嶅姟瀹屾垚锛�" +} + +startApps() { + echo "鍚姩鏈嶅姟寮€濮嬶紒" + systemctl start ${NACOS} + systemctl start ${SMART_GATEWAY} + systemctl start ${SMART_PORTAL_PLATFORM} + systemctl start ${SMART_BASE_PLATFORM} + systemctl start ${DEVICE_PLATFORM} + systemctl start ${LOG_PLATFORM} + echo "鍚姩鏈嶅姟瀹屾垚锛�" +} + +rollback() { + echo "鍔熻兘鏈疄鐜帮紒" +} + +program_deploy() { + echo program_deploy +} + +project_deploy() { + shell_lock + init_deploy + nacos_deploy + smart_gateway_deploy + smart_portal_platform_deploy + smart_base_platform_deploy + device_platform_deploy + log_platform_deploy + shell_unlock +} + +function menu() { #鏄剧ず鑿滃崟 + cat <<eof + ************************************* + MENU + + 1.鐜杞欢閮ㄧ讲 + + 2.椤圭洰杞欢閮ㄧ讲 + + 3.鍋滄鏈嶅姟 + + 4.鍚姩鏈嶅姟 + + 0.閫€鍑� + + + *************************************" +eof +} + +function num() { #閫夐」 + read -p "璇疯緭鍏ユ偍闇€瑕佹搷浣滅殑椤圭洰: " number + case $number in + 1) + program_deploy + ;; + 2) + project_deploy + ;; + 3) + stopApps + ;; + 4) + startApps + ;; + 5) + rollback + ;; + 0) + cd ${BASEDIR} + exit 0 + ;; + + esac +} + +#涓诲嚱鏁� +main() { + if [ -f ${LOCK_FILE} ]; then + echo "Deploy is running" && exit + fi + + while true; do + menu + num + done + +} +main $1