Appearance
Tomcat部署WAR包
打war包
idea 生成项目web.xml文件
- 打开项目结构
- 生成web.xml文件
注意路径要一致
代码改造
- 启动项Application类
java
// 增加继承SpringBootServletInitializer
public class GisBootApplication extends SpringBootServletInitializer {
public static void main(String[] args) throws UnknownHostException {
//......
}
// 重载 configure
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(GisBootApplication.class);
}
}
- 启动项pom.xml
xml
设置打包为war
<packaging>war</packaging>
其它框架注意事项
新框架的pom.xml 需要注释掉layout,否则加密无效,且打包重复
xml
<!-- <layout>ZIP</layout>-->
文件日志地址,需要设置,否则多个服务会相互覆盖,且地址不是相对地址
xml
<configuration>
<!-- 生成到tomcat/bin 的 /logs/api1下-->
<property name="LOG_HOME" value="logs/api1" />
<!-- 生成到当前磁盘 的 logs/api1下-->
<property name="LOG_HOME" value="/logs/api1" />
<!-- 生成到tomcat 的 logs/api1下 -->
<property name="LOG_HOME" value="/testTomcat/apache-tomcat-9.0.91/logs/api1" />
<!-- 推荐这个,和现有的接近。生成到tomcat 下 项目路径 的logs目录下 -->
<property name="LOG_HOME" value="/testTomcat/apache-tomcat-9.0.91/webapps/api1/logs" />
</configuration>
其它工作目录
相对路径读取的是tomcat下的bin文件夹,相关资源要放到bin下
Tomcat 部署·war
安装部署tomcat
下载后解压即可,其它前置jdk环境需要先安装
war部署准备
将对应的war包放置到webapps下的项目路径
配置conf/server.xml
xml
<?xml version="1.0" encoding="UTF-8"?>
<Server port="8005" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.startup.VersionLoggerListener" />
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
<GlobalNamingResources>
<Resource name="UserDatabase" auth="Container" type="org.apache.catalina.UserDatabase" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" pathname="conf/tomcat-users.xml" />
</GlobalNamingResources>
<Service name="Catalina">
<Connector port="8088" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" maxParameterCount="1000" />
<Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
</Realm>
<Host name="localhost" appBase="webapps/api1" unpackWARs="true" autoDeploy="true">
<!-- 设置默认项目 -->
<Context path="" docBase="/ROOT.war" workDir="/webapps/api1/public" reloadable="true"/>
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs/api1" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t "%r" %s %b" />
</Host>
</Engine>
</Service>
<Service name="Catalina1">
<Connector port="8089" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" maxParameterCount="1000" />
<Engine name="Catalina1" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
</Realm>
<Host name="localhost" appBase="webapps/api2" unpackWARs="true" autoDeploy="true">
<!-- 设置默认项目 -->
<Context path="" docBase="/ROOT.war" workDir="/webapps/api2/public" reloadable="true"/>
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs/api2" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t "%r" %s %b" />
</Host>
</Engine>
</Service>
</Server>
运行/关闭
bin路径执行cmd
- window:
运行 startup.bat
关闭 shutdown.bat
- linux
运行 startup.sh
关闭 shutdown.sh
运行包加密
需要所有都加密 加密后无法注册到服务启动,只能通过startup启动
- 把classfinal-fatjar-1.2.1.jar包复制到tomcat/bin 路径下
- 修改catalina.bat 和catalina.sh
window 下修改catalina.bat,增加以下语句
xml
set JAVA_OPTS="-javaagent:classfinal-fatjar-1.2.1.jar='-nopwd'"
linux 下修改catalina.sh,增加以下语句
xml
CATALINA_OPTS="$CATALINA_OPTS -javaagent:classfinal-fatjar-1.2.1.jar='-nopwd'";
export CATALINA_OPTS;
执行窗口
注册到service
service.bat install xxxx(服务名)
风险点
- jar改war部署,程序的改造(微量)
- 路径问题(相对路径、日志路径等的改造),jar相对路径为jar路径,tomcat为bin文件夹;【使用文件服务器部分的没影响】
- 安全问题(传统tomcat部署的安全问题)
- 统一启停问题(慢)
- 服务卡死问题(并发量卡顿的问题)
- 一个服务的失败,会影响其它服务的启动
Jar 转 War(未用到)
1、maven 打包jar
2、在jar命令下cmd 执行 jar cvf xxx.war xxx.jar