Tomcat9通过systemctl启动时server.xml环境变量替换失效,脚本启动正常的问题求助
Tomcat9通过systemctl启动时server.xml环境变量替换失效,脚本启动正常的问题求助
各位大佬好,我遇到一个Tomcat9的奇怪问题,折腾了好久没搞定,想请教下大家:
我正在尝试在conf/server.xml中使用环境变量来配置端口,按照Tomcat官方文档的指引做了以下配置:
- 在
conf/server.xml里配置了环境变量引用:
... redirectPort="${tomcat_redir}" ...
- 系统中已经设置了对应的环境变量,终端执行
env | grep tomcat_redir能看到输出:
8443
- 我把环境变量源的配置追加到了
conf/catalina.properties中:
echo "org.apache.tomcat.util.digester.PROPERTY_SOURCE=org.apache.tomcat.util.digester.EnvironmentPropertySource" >> conf/catalina.properties
做完这些后,我遇到了诡异的情况:
- 用Tomcat自带的
bin/shutdown.sh和bin/startup.sh脚本重启服务后,测试curl -Ik https://10.0.0.1:8443能正常返回200,符合预期 - 但用
systemctl restart tomcat.service重启服务后,curl -Ik https://10.0.0.1:8443返回curl (7) Failed to connect on 10.0.0.1 port 8443: Connection refused,只有curl -I http://10.0.0.1:8080能正常返回200
我还尝试修改了/etc/systemd/system/tomcat.service文件,把环境变量源的参数直接加到CATALINA_OPTS里:
Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC -Dorg.apache.tomcat.util.digester.PROPERTY_SOURCE=org.apache.tomcat.util.digester.EnvironmentPropertySource"
执行systemctl daemon-reload后重启服务,问题依然存在。
以下是我的tomcat.service完整配置:
[Unit] Description=Tomcat9 After=syslog.target network.target [Service] Type=forking User=tomcat Group=tomcat Environment="JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/" Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom" Environment="CATALINA_PID=/var/tomcat/%i/run/tomcat.pid" Environment="CATALINA_BASE=/var/tomcat/%i/" Environment="CATALINA_HOME=/opt/tomcat/" Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC" ExecStart=/opt/tomcat/bin/startup.sh ExecStop=/opt/tomcat/bin/shutdown.sh #RestartSec=10 #Restart=always [Install] WantedBy=multi-user.target
我实在搞不懂为什么两种启动方式会有差异,明明配置都做了,有没有大佬能指点下问题出在哪?
备注:内容来源于stack exchange,提问作者toto rrro
相关产品推荐
相关产品推荐

