Linux中安装es

好的,这是一个非常详细的、分步的教程,指导您在 Linux 系统上部署 Elasticsearch 7.13.4。

部署前准备

  1. 系统要求:

    ◦ 内存:建议至少 4GB RAM,生产环境推荐 8GB 或更多。Elasticsearch 默认使用 1GB 堆内存,这对于学习测试足够,但生产需要调整。

    ◦ 磁盘空间:根据您的数据量决定,建议至少 10GB 可用空间。

    ◦ 操作系统:大多数现代 Linux 发行版(如 Ubuntu, CentOS, Red Hat 等)均可。

  2. 软件依赖:

    ◦ Java JDK:Elasticsearch 7.13.4 需要 Java 11。请确保已安装并配置好正确的 Java 版本。OpenJDK 是官方推荐的选择。

  3. 下载安装包:

    ◦ 从官方镜像站或官网下载 elasticsearch-7.13.4-linux-x86_64.tar.gz。

    ◦ 您可以使用 wget 命令直接下载到服务器:

    wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.13.4-linux-x86_64.tar.gz

    ◦ 下载后,验证 SHA 校验码以确保文件完整(可选但推荐):

    shasum -a 512 elasticsearch-7.13.4-linux-x86_64.tar.gz

    将输出与从官网下载页获得的 SHA512 码进行对比

详细部署步骤

步骤 1:安装 Java JDK 11

如果您的系统没有安装 Java 11,请先安装。

• 对于 Ubuntu/Debian:

sudo apt update

sudo apt install openjdk-11-jdk

• 对于 CentOS/RHEL:

sudo yum install java-11-openjdk-devel

• 验证安装:

java -version

复制代码
输出应显示 openjdk version "11.0.x"。

步骤 2:创建专用用户

出于安全原因,Elasticsearch 不允许使用 root 用户运行。我们必须创建一个专用用户。

创建一个名为 elasticsearch 的用户组

sudo groupadd elasticsearch

创建一个名为 elasticsearch 的用户,并将其添加到该用户组,同时创建家目录

sudo useradd -m -g elasticsearch -s /bin/bash elasticsearch

为 elasticsearch 用户设置密码(可选,用于切换用户)

sudo passwd elasticsearch

步骤 3:解压安装包

假设您将安装包下载到了 /opt 目录,这是一个常见的软件安装位置。

切换到安装包所在目录

cd /opt

解压压缩包

sudo tar -xzf elasticsearch-7.13.4-linux-x86_64.tar.gz

将解压后的目录重命名为一个更简洁的名字(可选但推荐)

sudo mv elasticsearch-7.13.4 elasticsearch

将目录的所有权授予我们刚创建的 elasticsearch 用户

sudo chown -R elasticsearch:elasticsearch /opt/elasticsearch

步骤 4:修改系统配置(重要)

Elasticsearch 可能需要比默认限制更多的资源。

  1. 修改文件描述符和线程数限制:

    编辑 /etc/security/limits.conf 文件,在文件末尾添加:

    elasticsearch - nofile 65535

    elasticsearch - memlock unlimited

    • soft nproc 4096
    • hard nproc 4096

    ◦ nofile 65535:允许 Elasticsearch 同时打开大量文件(索引由文件组成)。

    ◦ memlock unlimited:允许锁定内存,防止交换(SWAP)影响性能。

  2. 修改虚拟内存映射限制:

    Elasticsearch 使用 mmap 来高效存储索引。编辑 /etc/sysctl.conf 文件,添加:

    vm.max_map_count=262144

    然后应用更改:

    sudo sysctl -p

步骤 5:配置 Elasticsearch

主要配置文件是 /opt/elasticsearch/config/elasticsearch.yml。使用 nano 或 vim 进行编辑。

sudo -u elasticsearch nano /opt/elasticsearch/config/elasticsearch.yml

找到并修改以下关键配置(取消注释并修改值):

---------------------------------- Cluster -----------------------------------

集群名称,默认是 elasticsearch。同一集群内的节点应使用相同的名称。

cluster.name: my-es-cluster

------------------------------------ Node ------------------------------------

节点名称,默认是随机生成的UUID。建议赋予一个有意义的名称。

node.name: node-1

该节点是否有资格成为主节点(Master-eligible node)

node.master: true

该节点是否存储数据(Data node)

node.data: true

----------------------------------- Paths ------------------------------------

数据目录路径。可以配置多个路径(用逗号分隔)。

path.data: /opt/elasticsearch/data

日志目录路径。

path.logs: /opt/elasticsearch/logs

----------------------------------- Memory -----------------------------------

启动时锁定内存,与之前在 limits.conf 中的配置对应。

bootstrap.memory_lock: true

---------------------------------- Network -----------------------------------

设置绑定的主机地址。0.0.0.0 表示绑定所有网络接口,允许外部访问。

警告:生产环境请结合防火墙设置,不要随意开放为 0.0.0.0。

network.host: 0.0.0.0

设置HTTP访问端口,默认是 9200。

http.port: 9200

--------------------------------- Discovery ----------------------------------

设置初始主节点的地址列表,用于节点发现和组建集群。

对于单节点部署,填写本机节点名称。

discovery.seed_hosts: ["localhost"]

cluster.initial_master_nodes: ["node-1"]

保存并退出编辑器。

步骤 6:启动 Elasticsearch

切换到 elasticsearch 用户,并启动服务。

切换到 elasticsearch 用户

sudo -u elasticsearch -s

如果提示符变了,说明切换成功。然后进入 Elasticsearch 的 bin 目录

cd /opt/elasticsearch/bin/

在后端启动 Elasticsearch (使用 -d 参数)

./elasticsearch -d

• -d 参数表示以守护进程(daemon)模式运行。

步骤 7:验证安装

等待十几秒后,通过 HTTP API 检查 Elasticsearch 是否运行正常。

curl -X GET "localhost:9200/"

或者,如果您的服务器有图形界面浏览器,也可以从另一台机器访问 http://<您的服务器IP>:9200/。

您应该会收到一个类似以下的 JSON 响应:

{

"name" : "node-1",

"cluster_name" : "my-es-cluster",

"cluster_uuid" : "abcd1234...",

"version" : {

"number" : "7.13.4",

"build_flavor" : "default",

"build_type" : "tar",

"build_hash" : "...",

"build_date" : "2021-07-14T...",

"build_snapshot" : false,

"lucene_version" : "8.8.2",

"minimum_wire_compatibility_version" : "6.8.0",

"minimum_index_compatibility_version" : "6.0.0-beta1"

},

"tagline" : "You Know, for Search"

}

步骤 8(可选):配置为系统服务

手动启动不方便管理,最好配置为 systemd 服务。

  1. 创建服务文件:

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

  2. 将以下内容写入文件:

    Unit

    Description=Elasticsearch

    Documentation=https://www.elastic.co

    After=network.target

    Service

    Type=simple

    User=elasticsearch

    Group=elasticsearch

    Environment="ES_JAVA_OPTS=-Xms1g -Xmx1g"

    Environment="ES_PATH_CONF=/opt/elasticsearch/config"

    ExecStart=/opt/elasticsearch/bin/elasticsearch

    Restart=always

    LimitNOFILE=65535

    LimitMEMLOCK=infinity

    Install

    WantedBy=multi-user.target

    ◦ User 和 Group:指定运行服务的用户和组。

    ◦ ES_JAVA_OPTS:设置 JVM 堆内存大小。-Xms1g -Xmx1g 表示初始和最大堆内存均为 1GB。生产环境请根据服务器内存调整(通常不超过物理内存的50%)。

    ◦ ES_PATH_CONF:指定配置目录路径。

  3. 重新加载 systemd 并启动服务:

    sudo systemctl daemon-reload

    sudo systemctl enable elasticsearch # 设置开机自启

    sudo systemctl start elasticsearch # 启动服务

    sudo systemctl status elasticsearch # 查看服务状态

现在,您可以使用 systemctl 命令来管理 Elasticsearch 了(start, stop, restart, status)。

故障排除

• 无法绑定到 9200 端口:检查是否有其他进程占用了该端口 (netstat -tulpn | grep :9200)。

• 内存锁定失败:确保已正确配置 /etc/security/limits.conf 并且用户是 elasticsearch。查看日志 /opt/elasticsearch/logs/my-es-cluster.log 获取详细信息。

• 无法用外网 IP 访问:

复制代码
1.  确认 network.host 设置为 0.0.0.0。
2.  检查服务器防火墙(如 ufw 或 firewalld)是否放行了 9200 端口。
    ▪   UFW (Ubuntu):sudo ufw allow 9200/tcp

    ▪   Firewalld (CentOS):sudo firewall-cmd --add-port=9200/tcp --permanent && sudo firewall-cmd --reload

• 查看日志:日志文件是解决问题的第一选择,路径在 /opt/elasticsearch/logs/。

恭喜您!现在您已经成功在 Linux 上部署并运行了 Elasticsearch 7.13.4。接下来您可以开始安装 Kibana 作为可视化界面,或者开始学习如何插入和查询数据。

相关推荐
HappyGame022 小时前
Linux多线程编程
linux
带土13 小时前
32位ubuntu14.0.4安装chrome
linux·chrome
欢鸽儿3 小时前
Vivado综合通关指南:从IP打包失败到工具崩溃的四重考验
linux·ubuntu·fpga
9毫米的幻想3 小时前
【Linux系统】—— 程序地址空间
java·linux·c语言·jvm·c++·学习
梦想blog5 小时前
漏洞修复 CentOS x86_64 OpenSSH 升级操作文档
linux·运维·centos·ssh·漏洞修复
林开落L9 小时前
Linux 进程信号:从进阶特性到实战应用(下)
linux·运维·服务器·进程信号
Elastic 中国社区官方博客10 小时前
AutoOps:简单的 Elasticsearch 集群监控与管理现已支持本地部署
大数据·人工智能·elasticsearch·搜索引擎·云计算·全文检索
Turboex邮件分享13 小时前
Syslog日志集成搭建
运维·elasticsearch·集成测试
口嗨农民工13 小时前
win10默认搜索APP和window设置控制命板
linux·服务器·c语言