加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – Tomcat服务没有看到$JAVA_HOME

发布时间:2020-12-14 02:50:53 所属栏目:Linux 来源:网络整理
导读:我正在尝试在CentOS 7上使用Systemd设置Tomcat服务. 我已经将Oracle Java 1.8u74安装到/usr/java/jdk1.8.0_74并在启动时设置环境变量$JAVA_HOME,如下所示: # echo "export JAVA_HOME=/usr/java/jdk1.8.0_74" /etc/profile.d/setenv.sh 当我登录系统时,我可
我正在尝试在CentOS 7上使用Systemd设置Tomcat服务.

我已经将Oracle Java 1.8u74安装到/usr/java/jdk1.8.0_74并在启动时设置环境变量$JAVA_HOME,如下所示:

# echo "export JAVA_HOME=/usr/java/jdk1.8.0_74" > /etc/profile.d/setenv.sh

当我登录系统时,我可以运行echo $JAVA_HOME并查看正确的路径.我已经安装了Tomcat,tomcat.service文件包含以下内容:

# Systemd unit file for Tomcat

[Unit]
Description=Apache Tomcat
After=syslog.target network.target

[Service]
Type=forking

Environment=JAVA_HOME=/usr/java/jdk1.8.0_74
Environment=CATALINA_PID=/opt/tomcat/temp/tomcat.pid
Environment=CATALINA_HOME=/opt/tomcat
Environment=CATALINA_BASE=/opt/tomcat
Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC'
Environment='JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom'

ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh

User=tomcat
Group=www

[Install]
WantedBy=multi-user.target

问题是,如果我省略了读取Environment = JAVA_HOME = /usr/java / jdk1.8.0_74的行,Tomcat找不到$JAVA_HOME,但我希望它找到$JAVA_HOME,因为它是在/ etc / profile中设置的. d / setenv.sh.

我的问题

>是否由于引导顺序而未找到(即在Systemd启动后运行setenv.sh)?
>我把setenv.sh放在错误的地方了吗?
>处理这个问题的最佳方法是什么?

解决方法

这是systemd的预期行为.

要了解systemd服务所运行的环境,可以参考man systemd.exec,特别是“SPAWNED PROCESSES中的环境变量”部分.正如它所说,只设置了很少的变量,你必须自己设置其他任何东西.

只是碰巧/etc/profile.d中的文件是由交互式shell提供的,这就是你登录时可以看到变量的原因.你所做的正是教程推荐的,所以你可以坚持下去.如果您担心Java升级会破坏您的单元文件,您可以为您的Java安装创建符号链接,甚至在启动时获取文件:

ExecStart=/bin/sh -c '. /etc/profile.d/setenv.sh; /opt/tomcat/bin/startup.sh'
ExecStop=/bin/sh -c '. /etc/profile.d/setenv.sh; /opt/tomcat/bin/shutdown.sh'

我个人会坚持你已经拥有的东西.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读