当前位置: 首页 > news >正文

在麒麟 ARM (aarch64)安装OpenJDK11和elasticsearchkibana

前期准备

  1. 系统更新

    bash

    sudo apt update && sudo apt upgrade -y
    sudo apt install -y wget curl tar vim
  2. 创建安装目录

    bash

    sudo mkdir -p /usr/local/src/elasticstack
    sudo chown -R $USER:$USER /usr/local/src/elasticstack
    cd /usr/local/src/elasticstack

第一部分:安装并配置 OpenJDK 11

步骤 1: 下载并解压 JDK

bash

# 下载 OpenJDK 11 for ARM64
wget https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.20%2B8/OpenJDK11U-jdk_aarch64_linux_hotspot_11.0.20_8.tar.gz# 创建目标目录并解压
sudo mkdir -p /usr/lib/jvm
sudo tar -zxvf OpenJDK11U-jdk_aarch64_linux_hotspot_11.0.20_8.tar.gz -C /usr/lib/jvm/# 确认解压后的目录
JDK_DIR=$(ls /usr/lib/jvm/ | grep jdk-11)
echo "JDK安装目录: /usr/lib/jvm/$JDK_DIR"
步骤 2: 设置系统级环境变量

bash

# 创建全局Java环境配置文件
sudo vim /etc/profile.d/java.sh

添加以下内容(重要:请根据实际目录修改):

bash

# 设置JAVA_HOME环境变量
export JAVA_HOME=/usr/lib/jvm/jdk-11.0.20+8
export PATH=$JAVA_HOME/bin:$PATH

使配置生效:

bash

source /etc/profile
步骤 3: 验证JDK安装

bash

java -version
javac -version
echo $JAVA_HOME
# 应该显示:/usr/lib/jvm/jdk-11.0.20+8

第二部分:安装 Elasticsearch 7.17.21(重点:指定Java路径)

步骤 1: 下载并解压

bash

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.21-linux-aarch64.tar.gz
sudo tar -zxvf elasticsearch-7.17.21-linux-aarch64.tar.gz -C /usr/share/
sudo mv /usr/share/elasticsearch-7.17.21 /usr/share/elasticsearch
步骤 2: 创建专用用户

bash

sudo groupadd elasticsearch
sudo useradd -g elasticsearch -M -s /bin/bash elasticsearch
sudo chown -R elasticsearch:elasticsearch /usr/share/elasticsearch
步骤 3: 配置 Elasticsearch(关键步骤)

配置一:创建Java路径设置文件

这是确保Elasticsearch使用正确JDK的核心步骤:

bash

sudo vim /usr/share/elasticsearch/bin/elasticsearch-env

找到以下代码段(大约在文件开头):

bash

# now set the path to java
if [ ! -z "$JAVA_HOME" ]; thenJAVA="$JAVA_HOME/bin/java"
elseif [ "$(uname -s)" = "Darwin" ]; then# OSX has a different structureJAVA="/usr/bin/java"elseJAVA="/bin/java"fi
fi

在这段代码之前添加(强制指定JAVA路径):

bash

# Force specific JAVA_HOME for Kylin ARM64
export JAVA_HOME=/usr/lib/jvm/jdk-11.0.20+8
export PATH=$JAVA_HOME/bin:$PATH

配置二:主配置文件

bash

sudo -u elasticsearch vim /usr/share/elasticsearch/config/elasticsearch.yml

修改为:

yaml

cluster.name: kylin-arm-cluster
node.name: kylin-node-1
network.host: 0.0.0.0
http.port: 9200
discovery.type: single-node
xpack.security.enabled: false# 可选:自定义数据存储路径
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch

创建数据目录:

bash

sudo mkdir -p /var/lib/elasticsearch /var/log/elasticsearch
sudo chown -R elasticsearch:elasticsearch /var/lib/elasticsearch /var/log/elasticsearch
步骤 4: 配置系统服务(再次指定Java路径)

bash

sudo vim /etc/systemd/system/elasticsearch.service

添加以下内容(注意Environment行):

ini

[Unit]
Description=Elasticsearch
Documentation=https://www.elastic.co
After=network.target[Service]
Type=simple
User=elasticsearch
Group=elasticsearch# 关键:显式指定JAVA_HOME
Environment=JAVA_HOME=/usr/lib/jvm/jdk-11.0.20+8
Environment=ES_HOME=/usr/share/elasticsearch
Environment=ES_PATH_CONF=/usr/share/elasticsearch/configExecStart=/usr/share/elasticsearch/bin/elasticsearchLimitMEMLOCK=infinity
LimitNOFILE=65535
LimitNPROC=4096Restart=always
RestartSec=30s[Install]
WantedBy=multi-user.target
步骤 5: 系统优化和启动

bash

# 调整系统限制
sudo vim /etc/security/limits.conf

添加:

text

elasticsearch - nofile 65535
elasticsearch - memlock unlimited

调整虚拟内存:

bash

sudo sysctl -w vm.max_map_count=262144
echo "vm.max_map_count=262144" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

启动服务:

bash

sudo systemctl daemon-reload
sudo systemctl enable elasticsearch
sudo systemctl start elasticsearch# 验证
sudo systemctl status elasticsearch
curl -X GET "http://localhost:9200/"

第三部分:安装 Kibana 7.17.21(同样指定Java路径)

步骤 1: 下载并解压

bash

wget https://artifacts.elastic.co/downloads/kibana/kibana-7.17.21-linux-aarch64.tar.gz
sudo tar -zxvf kibana-7.17.21-linux-aarch64.tar.gz -C /usr/share/
sudo mv /usr/share/kibana-7.17.21-linux-aarch64 /usr/share/kibana
sudo chown -R elasticsearch:elasticsearch /usr/share/kibana
步骤 2: 配置 Kibana(强制Java路径)

方法一:修改启动脚本(推荐)

bash

sudo vim /usr/share/kibana/bin/kibana

在文件开头(#!/bin/bash之后)添加:

bash

# Force JAVA_HOME for Kylin ARM64
export JAVA_HOME=/usr/lib/jvm/jdk-11.0.20+8
export PATH=$JAVA_HOME/bin:$PATH

方法二:使用环境变量文件

bash

sudo vim /etc/default/kibana

添加:

bash

JAVA_HOME=/usr/lib/jvm/jdk-11.0.20+8
步骤 3: 主配置文件

bash

sudo -u elasticsearch vim /usr/share/kibana/config/kibana.yml

配置:

yaml

server.port: 5601
server.host: "0.0.0.0"
server.name: "kylin-kibana"
elasticsearch.hosts: ["http://localhost:9200"]
i18n.locale: "zh-CN"# 可选:自定义路径
path.data: /var/lib/kibana
logging.dest: /var/log/kibana/kibana.log

创建目录:

bash

sudo mkdir -p /var/lib/kibana /var/log/kibana
sudo chown -R elasticsearch:elasticsearch /var/lib/kibana /var/log/kibana
步骤 4: 配置系统服务

bash

sudo vim /etc/systemd/system/kibana.service

添加:

ini

[Unit]
Description=Kibana
Documentation=https://www.elastic.co
After=network.target elasticsearch.service[Service]
Type=simple
User=elasticsearch
Group=elasticsearch# 关键:显式指定JAVA_HOME
Environment=JAVA_HOME=/usr/lib/jvm/jdk-11.0.20+8
Environment=KIBANA_HOME=/usr/share/kibanaExecStart=/usr/share/kibana/bin/kibanaRestart=always
RestartSec=30s[Install]
WantedBy=multi-user.target
步骤 5: 启动并验证

bash

sudo systemctl daemon-reload
sudo systemctl enable kibana
sudo systemctl start kibana# 查看状态和日志
sudo systemctl status kibana
tail -f /var/log/kibana/kibana.log# 等待1-2分钟后访问
curl -I http://localhost:5601

最终验证

  1. 检查所有服务状态

    bash

    sudo systemctl status elasticsearch
    sudo systemctl status kibana
  2. 测试连通性

    bash

    # Elasticsearch
    curl -X GET "http://localhost:9200/"# Kibana 
    curl -I http://localhost:5601
  3. 确认Java路径

    bash

    # 检查Elasticsearch使用的Java
    ps aux | grep elasticsearch | grep java# 检查Kibana使用的Java  
    ps aux | grep kibana | grep node
  4. 访问服务

    • Elasticsearch: http://服务器IP:9200

    • Kibana: http://服务器IP:5601

http://www.xdnf.cn/news/1442683.html

相关文章:

  • 云手机中的三大核心技术主要是指什么?
  • Docker部署Lunalytics开源监控工具
  • 开源检索增强生成(UltraRAG)框架
  • Unity2018版本安卓打包环境配置问题
  • 搞定鸿蒙新手 3 大痛点:页面跳转实现、应用标识修改与 Hyper-V 启动故障排查
  • Elasticsearch(text和keyword)区别分析
  • 【教程】IDEA中导入springboot-maven工程
  • Git 别名:用简短命令大幅提升开发效率
  • 企业级AI应用,Dify集成RAGFlow知识库保姆教程
  • 少儿编程C++快速教程之——1. 基础语法和输入输出
  • 【STL源码剖析】从源码看 deque :拆解双端队列的底层实现与核心逻辑
  • 聚焦岗位能力提升:休闲服务与管理虚拟仿真实训室的实训设计与落地
  • 华为卫星对星引导技术深度解析:原理、实现与开源替代方案
  • 从 MMLU 到 HumanEval:为什么评估大型语言模型(LLM)的基准至关重要?
  • 计算机二级C语言操作题(填空、修改、设计题)——真题库(14)附解析答案
  • 医学图像配准的循环推理机|文献速递-深度学习人工智能医疗图像
  • Aerobits-用于 sUAS 和 UTM/U-Space 的微型 ADS-B 技术(收发器/接收器)和无人机跟踪应答器
  • 车载诊断架构 --- 从架构系统角度怎么确保整车DTC的完整性?
  • 蓝光三维扫描技术赋能内衣胸垫设计:从精准制造到个性化体验的革新之旅
  • 突破性能瓶颈:Scala爬虫的大规模数据处理方案
  • 【Lua】题目小练14
  • 为什么几行dropout就能显著提升稀疏3DGS渲染质量?
  • 深度学习篇---InceptionNet网络结构
  • 【串口助手】串口调试助手LTSerialTool v3.12.0发布
  • A股大盘数据-2025093分析
  • Java如何实现jar包方法覆盖
  • C语言字符函数和字符串函数(1)
  • TypeScript 与 Java 重载机制对比
  • 08、Linux 安全组开放端口
  • 数据结构:图的表示 (Representation of Graphs)