原文:https://ithinkcry.cn/blog/view/detail/2c9ad8cc68efcae60168eff4527e0000
由于另一个服务需要挂上二级域名,所以使用了Nginx来做反向代理。
但是由于使用的是springboot+thymeleaf,后来的项目又是vue+springboot前后分离,造成使用jar非常麻烦。
最终采用的是全部部署war包到tomcat进行启动,nginx做代理。
那么首先就得把原来的springboot+thymeleaf工程改成war包发布。
常规操作是:
Springboot:
启动类新增继承,修改启动方法:
public class Starter extends SpringBootServletInitializer
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(Starter.class);
}
然后修改pom文件:
war
com.zzj.Starter
org.springframework.boot
spring-boot-starter-tomcat
provided
最后改下application.properties的端口号,并且把tomcat(我使用的是tomcat8)中的server.xml的端口号修改成一致的。
问题来了:centos启动startup.sh后,提示信息如下:
org.apache.jasper.compiler.TldLocationsCache tldScanJar At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
大意就是什么TLD文件扫描不通过。
后来处理过程中发现,这个提示并不影响服务正常启动,只是启动需要的时间非常长,大概6分钟左右。
查了网上的资料 最终适用我的方法是:
tomcat的配置文件conf/logging.properties
新增:
org.apache.jasper.servlet.TldScanner.level = FINE
然后启动服务:
egrep "No TLD files were found in \[file:[^\]+\]" /log/tomcat7/catalina.out -o | egrep "[^]/]+.jar" -o | sort | uniq | sed -e 's/.jar/.jar,\\/g' > skips.txt
然后再logs目录下,执行命令,把需要忽略的jar文件名 输入到skip.txt中
然后把skip.txt的内容追加到conf\catalina.properties中的tomcat.util.scan.StandardJarScanFilter.jarsToSkip=后面去
然后在conf\context.xml中添加
此时,搞定,清除webapps和work中的文件,重新放入war包,启动。
又报了另外一个问题:
15-Feb-2019 14:10:05.343 WARNING [localhost-startStop-1] org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [551,845] milliseconds.
2019-02-15 14:10:05.344 WARN 20014 --- [ost-startStop-1] o.a.c.util.SessionIdGeneratorBase : Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [551,845] milliseconds.
经查,是java的random函数的问题,有2中解决办法tomcat设置 和java环境设置,我采取的是java环境设置:
打开$JAVA_PATH/jre/lib/security/java.security这个文件,找到下面的内容:
securerandom.source=file:/dev/urandom
替换成
securerandom.source=file:/dev/./urandom
然后启动服务,一切正常。
最后遗留的问题是:
原有jar部署的方式中的https的证书现在无效了,导致一些文件、路径无法打开;
Nginx代理转发还没设置。
但是至少目前服务能正常启动了.