Tomcat9 在 server.xml 上使用环境变量

Tomcat9 在 server.xml 上使用环境变量

我尝试在 conf/server.xml 文件中插入环境变量

我遵循 tomcat 文档:https://tomcat.apache.org/tomcat-9.0-doc/api/org/apache/tomcat/util/digester/EnvironmentPropertySource.html

在conf/server.xml中

...
redirectPort="${tomcat_redir}"
...

在终端上

$ env | grep tomcat_redir
8443

echo "org.apache.tomcat.util.digester.PROPERTY_SOURCE=org.apache.tomcat.util.digester.EnvironmentPropertySource" >> conf/catalina.properties

配置完成后,我重启了 tomcat 服务。我尝试 curl

curl -Ik https://10.0.0.1:8443
curl (7) Failed to connect on 1.0.0.1 port 8443: Connection refused

curl -I http://10.0.0.1:8080
200

cat /etc/systemd/system/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

我期望 8443 上的响应代码为 200

但是当我使用 bin/shutdown.sh 和 bin/startup.sh 停止/启动服务时,它可以工作!

所以我不知道当我使用 systemctl restart tomcat.service 时它不起作用,但是当我使用脚本时它起作用。

即使我改变了

Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC -Dorg.apache.tomcat.util.digester.PROPERTY_SOURCE=org.apache.tomcat.util.digester.EnvironmentPropertySource"

在 systemctl tomcat.service 上,我执行 daemon-reload,但没有任何变化。

答案1

当你在终端上运行脚本时,/etc/profile 可以工作。但是,systemctl 必须在 tomcat.service 中设置环境,似乎无法从 /etc/profile 加载环境。因此,只需在 tomcat.service 上添加一行:Environment="tomcat_redir= 8443"

相关内容