JAVA在Centos 6.6上没有被Elasticsearchfind,所有的pathvariables都被设置和工作

我最近打造了一个stream浪服务器,想让Elasticsearch继续下去。 因此,我在“厨师/ Centos-6.6”stream浪云VM上安装了Oracle Java和ES。 我在“etc / profile.d”中使用shell脚本来设置我的Javapath。

这是我的供应脚本:

#!/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服务elasticsearch启动”我得到:

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

但如果我“回声$ 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”它显示与手册页。

弹性search怎么不在我的Javapath中看? 为什么只在默认的Centospath中查看? 我在这里错过了什么?

Solutions Collecting From Web of "JAVA在Centos 6.6上没有被Elasticsearchfind,所有的pathvariables都被设置和工作"

问题的根源可能是初始化脚本(本例中为Elastic初始化脚本)看不到大多数环境变量(例如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脚本应该把它安装在/usr/lib/jvm/jdk-7-oracle-x64

更新

看一下init脚本,我注意到可以在/etc/default/elasticsearch设置JAVA_HOME来跳过上面提到的( 源代码 )预定义的JDK位置的循环。