我尝试在 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"