Linux服务器同时运行两个项目
- 需求:测试服务器需要同时运行两个测试项目,然后本人想到安装两个tomcat,同时跑2个项目,复制一份tomcat,将端口号改成80,其它端口分别加一,并在阿里云服务器上开放相关端口并且下载好ssl证书配置到tomcat的server.xml中。
- 配置2个tomcat参考博客:https://blog.csdn.net/justinqin/article/details/78563113
- 配置环境变量
#vi /etc/profile 中加入如下内容: #tomcat1 CATALINA_HOME=/home/commodity CATALINA_BASE=/home/commodity TOMCAT_HOME=/home/commodity export CATALINA_BASE CATALINA_HOME TOMCAT_HOME #tomcat2 CATALINA_HOME2=/home/mall CATALINA_BASE2=/home/mall TOMCAT_HOME2=/home/mall export CATALINA_BASE2 CATALINA_HOME2 TOMCAT_HOME2 然后保存退出使生效 #:wq #source /etc/profile
-
- 在第二个tomcat中的catalina.sh中添加
export CATALINA_BASE=$CATALINA_BASE2
export CATALINA_HOME=$CATALINA_HOME2
-
- 同时启动2个tomcat,出现问题:第二个tomcat启动时卡在“INFO: Deploying web application directory ......”
- 解决办法参考博客:https://www.cnblogs.com/mycifeng/p/6972446.html。操作:找到jdk1.x.x_xx/jre/lib/security/Java.security文件,在文件中找到securerandom.source这个设置项,将其改为:securerandom.source=file:/dev/./urandom,处理完后两个tomcat都能同时启动了
- 出现问题:两项目中端口修改为80的项目可以通过ssl配置的https访问,另外一个没改端口的项目不可以通过https+8080端口访问(可以通过http+8080访问)(两tomcat用的ssl证书相同)不可通过https访问的项目报错如下:
18-Oct-2018 13:54:27.298 INFO [http-nio-8080-exec-2] org.apache.coyote.http11.AbstractHttp11Processor.process Error parsing HTTP request header Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level. java.lang.IllegalArgumentException: Invalid character found in method name. HTTP method names must be tokens at org.apache.coyote.http11.AbstractNioInputBuffer.parseRequestLine(AbstractNioInputBuffer.java:233) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1045) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:684) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1533) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1489) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:745)
- 需求解决办法:一个tomcat下放2个war包,启动tomcat,通过项目名不同访问不同项目。
- 或将ssl证书配置到nginx,通过nginx代理转发访问不同的tomcat。