Spring 启动应用程序在 systemd 单元中设置特定的 Java 版本



我已经将我的可运行jar安装为systemd服务,但它没有拾取我在.conf文件中设置的jvm选项。我的 jar 和 conf 文件位于同一个文件夹中。我必须使用 conf 文件来为不同的设置进行外部配置。我指定了 java 路径,因为我们在同一主机上运行 java 8 作为其他 Java 服务的默认值。

系统单元

[Unit]
Description="My service"
After=syslog.target
[Service]
WorkingDirectory=/opt/myfolder/my-app-folder
Environment="JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.7.10-4.el7_8.x86_64/bin"
User=my-user
ExecStart=/usr/lib/jvm/java-11-openjdk-11.0.7.10-4.el7_8.x86_64/bin/java -jar /opt/myfolder/my-app-folder/myapp.jar
SuccessExitStatus=143
[Install]
WantedBy=multi-user.target

会议文件

JAVA_OPTS="-XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=256m -XX:+UseG1GC -Djava.net.preferIPv4Stack=true -Xms512M -Xmx1024M -XX:+UseStringDeduplication -Djava.io.tmpdir=/tmp/my-app -Dspring.profiles.active=test -Duser.timezone=UTC -Dloader.path=lib"
RUN_ARGS="--management.endpoints.web.exposure.include=*"

您可能应该使用EnvironmentFile=并将其指向您的配置。从问题中,您似乎想要启动应用程序并读取配置,但这没有意义。

另外,不要使用 JDK 的完整路径,我认为在您的情况下,您最好使用/etc/alternatives/jre_11_openjdk- 它链接到同一个地方,但如果您更新包版本,您不会在服务启动/重新启动/等时收到错误。

最新更新