一尘不染

在Centos 6.6上Elasticsearch找不到Java,所有路径变量均已设置并正常工作

elasticsearch

我最近启动了一个无所事事的服务器,并希望让Elasticsearch继续运行。因此,我在“ chef /
Centos-6.6”无所事事的云VM上安装了Oracle Java和ES。我在“ etc / profile.d”中使用shell脚本设置了Java路径。

这是我的配置脚本:

#!/usr/bin/env bash
yum -y update

wget -O /opt/jdk-7u67-linux-x64.tar.gz --no-cookies --no-check-certificate --header   "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/7u67-b01/jdk-7u67-linux-x64.tar.gz"
tar xzf /opt/jdk-7u67-linux-x64.tar.gz -C /opt/
touch /etc/profile.d/java.sh
echo "export JAVA_HOME=/opt/jdk1.7.0_67" >> /etc/profile.d/java.sh
echo "export JRE_HOME=/opt/jdk1.7.0_67/jre" >> /etc/profile.d/java.sh
echo "export PATH=$PATH:/opt/jdk1.7.0_67/bin:/opt/jdk1.7.0_67/jre/bin" >> /etc/profile.d/java.sh

rpm --import http://packages.elasticsearch.org/GPG-KEY-elasticsearch
REPO="[elasticsearch-1.3]
name=Elasticsearch repository for 1.3.x packages
baseurl=http://packages.elasticsearch.org/elasticsearch/1.3/centos
gpgcheck=1
gpgkey=http://packages.elasticsearch.org/GPG-KEY-elasticsearch
enabled=1"
echo "$REPO" > /etc/yum.repos.d/elasticsearch.repo
yum install -y elasticsearch

安装一切正常。但是,当我运行“ sudo service elasticsearch start”时,我得到:

which: no java in (/sbin:/usr/sbin:/bin:/usr/bin)

但是,如果我为家庭用户“ echo $ PATH”,我得到:

/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/opt/jdk1.7.0_67/bin:/opt/jdk1.7.0_67/jre/bin:/home/vagrant/bin

对于root用户$ PATH我得到:

/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/opt/jdk1.7.0_67/bin:/opt/jdk1.7.0_67/jre/bin

和“ echo $ JAVA_HOME”我得到:

/opt/jdk1.7.0_67

如果我运行“哪个java”,我将得到:

/opt/jdk1.7.0_67/bin/java

如果我运行“ java”,它将显示在手册页中。

elasticsearch没有在我的Java路径中寻找它的感觉如何?为什么只在默认的Centos路径中查找?我在这里想念什么?


阅读 460

收藏
2020-06-22

共1个答案

一尘不染

你的问题的根源是可能是init脚本(弹性在这种情况下初始化脚本)没有看到大多数的环境变量(例如JAVA_HOMEJRE_HOME等)。

如果查看ElasticSearch初始化脚本,则会看到该PATH变量在该初始化脚本中进行了显式设置,并JAVA_HOME通过循环遍历预定义的可能位置来确定:

JDK_DIRS="/usr/lib/jvm/jdk-7-oracle-x64 /usr/lib/jvm/java-7-oracle /usr/lib/jvm/java-7-openjdk /usr/lib/jvm/java-7-openjdk-amd64/ /usr/lib/jvm/java-7-openjdk-armhf /usr/lib/jvm/java-7-openjdk-i386/ /usr/lib/jvm/default-java"

因此,您可以将Java安装程序放到/usr/lib/jvm/jdk-7-oracle-x64目录中,而init脚本应将其安装。

更新资料

望着初始化脚本我注意到,你可以设置JAVA_HOME/etc/default/elasticsearch跳过通过以上(如提到的预定义的JDK位置循环)。

2020-06-22