进入指定目录,获得压缩包,解压进入解压后的目录,查看有两个文件夹:bin文件夹和services文件夹Bin文件夹下放着全部服务总的启动,停 止等脚本Services文件夹下有两个子文件夹:business文件夹和common-services文件夹Business文件夹 下有多个服务子文件夹,打包时设置了该包有几个服务,就有几个服务文件夹。进入某个服务文件夹,查看,其下有bin文件夹,conf文件夹 ,lib文件夹,logs文件夹,logs文件夹下有back文件夹,服务日志,服务启动日志,lib文件夹下有服务启动jar包单个服务 打包1.IDEA中项目的结构POM文件配置alar m-serviceectory>src/main/resourcestrue bootstrap.ymlbootstrap-$ {profileActive}.ymlmapper//.xml static/templates/lude>.xml.properties.j ksin>org.apache.maven.pluginsmaven -jar-plugin3.1.0 com.cmbc.alarm.Al armApplicationcom/cmbc/alarm/ org.springframework. bootspring-boot-maven-plugin 1.5.4.RELEASEorg. apache.maven.pluginsmaven-resources-plugin 3.1.0d>org.apache.maven.pluginsmaven-compiler-p luginutf-8urce>${java.version}${java.version} configuration>org.a pache.maven.pluginsmaven-surefire-plugin artifactId>2.22.1 true< plugin>maven-assembly-plugin3 .1.0 falsetor>src/main/assembly/assembly.xml configuration>make-assemblyhase>packagesingletion> >devdev properties>true testofileActive>testveByDefault>falsefile>prodprodve>falsefault>assembly文件配置ion="1.0"encoding="UTF-8"?>${project.version}s>zipcludeBaseDirectory>true< fileSets>eSet>${basedir}/src/bin bin0755de>.sh${basedir}/target/classes conf06 44bootstrap.ymle>bootstrap-${profileActive}.ymlmapper//.x mlstatic/templates/ include>.xml.properties .jks${basedir}/targetutputDirectory>lib0755ncludes>${project.build.finalName}.jarudes>${basedi r}NOTICELICE NSE.mdleSets>4.bin目录下加入起停脚本startup.sh#项目名称APPLICATION="alar m-service"#项目启动jar包名称APPLICATION_JAR="${APPLICATION}.jar"运行maven 打包命令在要打包的项目的目录下运行:mvncleanpackage(-Ptest)解压后目录结构:运行mvndeplo y命令可将该版本的zip包发布到maven私服。服务平台自定义打包1.IDEA中项目的结构2.package-tool-platf orm下pom.xml文件配置pomhost1 -platformhost2-platformhost3- platforminstall-packages-platformules>host1-platform工程配置bin目录下加入服务初始化和起停脚本common-services目录下存放公共的服 务,比如api-gateway服务pom.xml文件配置 com.cmbc.nspasset-servicersion>${project.version}zip lusion>Name>host1-platformorg.a pache.maven.pluginsmaven-assembly-plugin artifactId>3.1.0ase>packagesingleration>false assembly.xmlion>asse mbly.xml文件配置${project.ver sion}zip format>falseory>${project.p arent.basedir}/host1-platform/binho st1-platform/bin.shude>${project.paren t.basedir}/host1-platform/services/common-servicesutputDirectory>host1-platform/services/common-servicesectory>host1-platform/servic es/businesscom.cmbc.nsp:as set-service0755ctoryMode>0755true install-package-pla tform工程配置pom.xml文件配置install-packages-platform< /finalName>org.apache.maven.plugins< /groupId>maven-assembly-plugin>3.1.0package singleblyId>falseassembly .xml${project.paren t.basedir}/../dist>assembly文件配置rsion="1.0"encoding="UTF-8"?> ${project.version}5.在package -tool-platform目录下执行打包命令mvncleanpackage根目录下dist文件夹下生成打包文件解压后目录结构 :自定义打包诸多模块可以单独打包,然后部署上线;现在比较常见的是几个模块打成一个包,部署到1台机器上,另外几个模块打成一个包,放到 1台机器上,也可能一台机器上放几个压缩包。一个服务既部署到服务器1上,也部署到2上,也部署到3上。一台机器不只部署一个功能,服务, 可以同时部署多个服务。具体怎么打包,看自己的规划。规划好了,要在pom和assembly里进行配置。可以测了,1.0版的,代码已提 交了好的,那我打包部署打包什么版本?打成几个包?package-tool-platform/pom.xml文件配置包打到哪个路径? install-package-platform/pom.xml配置各个包包源配置install-package-platform /assembly.xml配置每个包里打什么服务Host1-platform/assembly.xml配置多个服务打成一个包再进 行部署部署部署就是将打好的包发布到测试服务器或者生产服务器,并启动程序的过程。传统手工都是通过拷贝或者ftp传输实现包放到服务器上 ,然后手工执行启动文件的。自定义部署上线打好的包在哪取布到哪去?如何同时启动多个服务单个服务启动脚本#!/bin/bash#== ================================================================= ===#单独服务启动脚本:#================================================== ====================#项目1名称APPLICATION="sys-monitor8015"#项目启动jar 包名称APPLICATION_JAR="${APPLICATION}.jar"#当前时间NOW=`date+''%Y-%m-%d _%H-%M-%S''`NOW_PRETTY=`date+''%Y-%m-%d%H:%M:%S''`#=============== ======================================================#BIN目录绝对路径B IN_PATH=$(CD`dirname$0`;pwd)#服务根目录路径cd`dirname$0`cd..BASE _PATH=`pwd`#服务配置文件所在路径CONFIG_DIR=${BASE_PATH}"/services/business /${APPLICATION}/conf/"#日志文件所在路径LOG_DIR=${BASE_PATH}"/services/bu siness/${APPLICATION}/logs"#日志备份目录LOG_BACK_DIR="${LOG_DIR}/back/ "#项目日志:名称LOG_NAME="${APPLICATION}.log"#项目日志:路径及名称LOG_FILE="${LO G_DIR}/${LOG_NAME}"#项目启动日志:路径及名称LOG_STARTUP_FILE="${LOG_DIR}/${A PPLICATION}_startup.log"#如果logs文件夹不存在,则创建文件夹if[[!-d"${LOG_DI R}"]];thenmkdir"${LOG_DIR}"fi#如果logs/back文件夹不存在,则创建文件夹if[[ !-d"${LOG_BACK_DIR}"]];thenmkdir"${LOG_BACK_DIR}"fi#如果项目运行 日志存在,则重命名并备份if[[-f"${LOG_FILE}"]];thenmv${LOG_FILE}"${LOG_ BACK_DIR}/${APPLICATION}_back_${NOW}.log"fi#在日志路径下,创建一个新日志echo" ">${LOG_FILE}#如果项目启动日志不存在,则创建,否则追加echo${STARTUP_LOG}>>${LOG _STARTUP_FILE}#================================================== ========================================#JVMConfiguration#-Xmx 256m:设置JVM最大可用内存为256m,根据项目实际情况而定,建议最小和最大设置成一样。#-Xms256m:设置JVM初始内 存。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存#-Xmn512m:设置年轻代大小为512m。整个JV M内存大小=年轻代大小+年老代大小+持久代大小。#持久代一般固定大小为64m,所以增大年轻代,将会减小年老代大小。此值对系 统性能影响较大,Sun官方推荐配置为整个堆的3/8#-XX:MetaspaceSize=64m:存储class的内存大小,该值越 大触发MetaspaceGC的时机就越晚#-XX:MaxMetaspaceSize=320m:限制Metaspace增长的上限 ,防止因为某些情况导致Metaspace无限的使用本地内存,影响到其他程序#-XX:-OmitStackTraceInFastT hrow:解决重复异常不打印堆栈信息问题#============================================ ==============================================JAVA_OPT="-server- Xms256m-Xmx256m-Xmn512m-XX:MetaspaceSize=64m-XX:MaxMetaspaceS ize=256m"JAVA_OPT="${JAVA_OPT}-XX:-OmitStackTraceInFastThrow"#== ================================================================= ===#执行启动命令:后台启动项目,并将日志输出到项目根目录下的logs文件夹下#======================= ===============================================nohupjava${JAVA_ OPT}-jar${BASE_PATH}/lib/${APPLICATION_JAR}--spring.config.loc ation=${CONFIG_DIR}>${LOG_FILE}2>&1获取进程IDPID=$(ps-ef|gr ep"${APPLICATION_JAR}"|grep-vgrep|awk''{print$2}'')#==== ===================================================#将命令启动相关日志追加到 日志文件#=======================================================#启动日 志STARTUP_LOG="===========${NOW_PRETTY}===========\n"#输出项目名称STA RTUP_LOG="${STARTUP_LOG}applicationname:${APPLICATION}\n"#输出ja r包名称STARTUP_LOG="${STARTUP_LOG}applicationjarname:${APPLICATIO N_JAR}\n"#输出项目bin路径STARTUP_LOG="${STARTUP_LOG}applicationbinp ath:${BIN_PATH}\n"#输出项目根目录STARTUP_LOG="${STARTUP_LOG}applicatio nrootpath:${BASE_PATH}\n"#打印日志路径STARTUP_LOG="${STARTUP_LOG}ap plicationlogpath:${LOG_FILE}\n"#打印JVM配置STARTUP_LOG="${STARTU P_LOG}applicationJAVA_OPT:${JAVA_OPT}\n"#打印启动命令STARTUP_LOG="$ {STARTUP_LOG}applicationbackgroundstartupcommand:nohupjava$ {JAVA_OPT}-jar${BASE_PATH}/lib/${APPLICATION_JAR}--spring.conf ig.location=${CONFIG_DIR}>${LOG_FILE}2>&1&\n"STARTUP_LOG="${S TARTUP_LOG}applicationpid:${PID}\n"#打印启动日志echo-e${STARTUP_LO G}#启动日志追加到启动日志文件中echo-e${STARTUP_LOG}>>${LOG_STARTUP_FILE}# 打印项目日志#tail-f${LOG_FILE}多服务启动脚本#!/bin/bash#总启动脚本:startall.sh#创建 日期:2019-06#获取项目根目录路径,根目录下有:services和总的bin目录cd`dirname$0`cd..B ASE_PATH=`pwd`#各个服务所在路径SERVICE_PATH=$BASE_PATH"/services/busines s"echo$SERVICE_PATH#各个服务启动脚本及其路径service1=$SERVICE_PATH"/sys-mon itor/bin/startup.sh"service2=$SERVICE_PATH"/system-service/bin/st artup.sh"#查看待启动服务是否进程已存在,如果存在全部强行停掉(部署启动时如果没有先停止服务,直接删掉程序包,会存在查看到同一服务多进程存在的情况)`ps-ef|grepsys-monitor|grep-vgrep|awk''{print$2}''|xargs-ikill-9{}``ps-ef|grepsystem-service|grep-vgrep|awk''{print$2}''|xargs-ikill-9{}`#启动各个服务脚本start_service1=`sh$service1`echo"==============启动sys-monitor服务================"sleep2sproc1_pid=`ps-ef|grepsys-monitor|grep-vgrep|awk''{print$2}''`#获取PID#获取服务显示进程的行数,如果行数为1,表明服务启动成功numproc=`ps-ef|grepsys-monitor|grep-vgrep|wc-l`if[$numproc-eq1];thenecho"sys-monitor服务启动成功!!!!"echo"PID是:"$proc1_pid#启动各个服务脚本start_service1=`sh$service2`echo"==============启动system-service服务================"sleep2sproc2_pid=`ps-ef|grepsystem-service|grep-vgrep|awk''{print$2}''`#获取PID#获取服务显示进程的行数,如果行数为1,表明服务启动成功numproc=`ps-ef|grepsystem-service|grep-vgrep|wc-l`if[$numproc-eq1];thenecho"system-service服务启动成功!!!!"echo"PID是:"$proc2_pid |
|