如何在 Ubuntu 20.04 上安装 ElasticSearch 及 Kibana

卡拉先生
发布于 2020年12月12日 | 上次编辑:2020年12月12日

如何在 Ubuntu 20.04 上安装 ElasticSearch 及 Kibana
如何在 Ubuntu 20.04 上安装 ElasticSearch 及 Kibana

前言

ElasticSearch 及配套可视化 Web 界面 Kibana 是搭建站内搜索的基础配置,在本教程中,我们在 Ubuntu 20.04 服务器上安装 ElasticSearch 及 Kibana 。由于 Kibana 仅在 localhost 上可用,我们还会使用 Nginx 进行代理,以便可以通过 Web 浏览器远程访问。

Elastic 主要组件:

  • ElasticSearch:分布式 RESTful 搜索引擎,用于存储所有收集的数据。
  • Kibana:用于搜索和可视化日志的Web界面。

准备工作

要跟随本教程学习,首先我们要配置或安装好以下内容

ElasticSearch 所管理的数据非常敏感,因此我们可通过安装 TLS / SSL 证书来确保服务器访问安全。如果你只是在本地测试,可以忽略这一点。如果是生产环境,强烈建议按照《如何在 Ubuntu20.04 上使用 Let’s Encrypt 给 Nginx 加密(SSL)》这篇指南来进行安全加密。

第 1 步 - 安装和配置 ElasticSearch

方法一:使用 apt 安装

ElasticSearch 组件在Ubuntu的默认软件包存储库中不可用。但是,可以在添加Elastic的软件包源列表之后将它们与APT一起安装。

Ubuntu repositories 自身并没有 ElasticSearch 但我们可以添加 Elastic 官方软件源,以保证我们可以下载到来自官方的软件。

首先,使用 cURL 将 ElasticSearch 公共 GPG 密钥导入到本机。

curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

接下来,将 Elastic 软件源添加到 sources.list.d 目录中:

curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

更新软件源

sudo apt update

接着我们开始安装 ElasticSearch

sudo apt install elasticsearch

整个安装步骤非常流畅,全自动。

方法二:直接下载安装

我们可以在 Elastic 的官网找到最新版的下载地址。然后使用 wget 下载。

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.10.1-amd64.deb

使用 dpkg 进行本地安装

sudo dpkg -i elasticsearch-7.10.1-amd64.deb

安装完成后,我们对 ElasticSearch 进行配置。这里很关键,如果不配置,ES 运行时会报错。

大家可使用自己趁手的编辑器打开 elasticsearch.yml 文件。本教程使用 nano 编辑器:

sudo nano /etc/elasticsearch/elasticsearch.yml

注意: ElasticSearch 的配置文件为 YAML 格式,请注意缩进。

有关 ElasticSearch 群集,节点,路径,内存,网络,网关的配置选项都在这个配置文件中配置。大多数选项,我们可以直接使用默认选项,但有两个选项非常基础,必须配置 ES 才可以在我们的机器上跑起来。

elasticsearch.yml 基本配置
elasticsearch.yml 基本配置

这些选项大多数使用默认值即可,但是我们也可根据需要进行更改。为了演示单服务器配置,我们将仅调整网络主机的设置。CTRL+X 保存退出。

接下来,我们就可以启动 ElasticSearch 了。

sudo systemctl start elasticsearch

我们用 http 请求来测试一下 ES 服务是否启动。

curl -X GET "localhost:9200"

使用 http 请求测试 ES 是否已启动
使用 http 请求测试 ES 是否已启动

我们可以看到返回本地节点的一些基本信息,类似上图。

到这里,ElasticSearch 已经运行在你到服务器中了,先放在这里待用。接着我们来安装 Kibana ,Kibana 是 ES 的可视化分析平台,可以搜索 查询存储在 ES 中的数据。

第 2 步 - 安装和配置 Kibana

根据官方文档,我们应该在安装 ES 之后来安装 Kibana ,注意安装顺序,以避免不必要的麻烦。

我们在上一步已经添加了 Elastic 的软件源,所以这里我们直接用 apt 命令来安装 kibana 。

sudo apt install kibana

安装完成后,我们启动 kibana 服务:

sudo systemctl enable kibana
sudo systemctl start kibana

如果你是在本机跑 ES 和 kibana 的话,那么可以直接在,直接跳到下一章。如果你是在虚拟机或者远程服务器安装 ES 的话,那么接下来的步骤,关乎到我们是否可以远程登录 ES 和 Kibana 。

首先我们要现在本机安装和配置 Nginx ,关于如何配置请看《如何在 Ubuntu 20.04 中安装和配置 Nginx》这篇。请按照教材安装完成 Nginx 之后继续。

首先我们使用 openssl 命令创建一个管理 Kibana 的用户, 我们使用这个账户来访问 Kibana Web 。本教程使用 KalasearchAdmin 作为用户名。

我们使用以下命令来给 Kibana 创建管理用户名和密码,这些用户名和密码会存储在 htpasswd.users 文件中。

echo "KalasearchAdmin:`openssl passwd -apr1`" | sudo tee -a /etc/nginx/htpasswd.users

在提示符里输入并确认密码。请牢记此登录名及密码,我们接下来使用浏览器访问 Kibana Web 页面时会用到。

接着,我们来创建一个 Nignx Server block 文件。本教程的 Ubuntu 服务器跑在虚拟机上,所以我使用虚拟机的 IP 地址来创建,你们可以绑定自己的域名,如果使用虚拟机,也可以像我一样使用虚拟机的 IP 地址。如果使用域名,记得修改域名 DNS 记录指向自己的服务器。

通过 ifconfig 获得虚拟机服务器内网 IP
通过 ifconfig 获得虚拟机服务器内网 IP

本教程使用 nano 编辑器创建 Nignx Server block 文件:注意:192.168.180.134 是我虚拟机的内网 IP 地址,请将此地址替换为你服务器的 IP 或域名

sudo nano /etc/nginx/sites-available/192.168.180.134(替换成你的域名)

我已经帮大家写好了路由代码,直接复制粘贴即可。注意:请将 server_name 后面的 IP 地址 替换成你服务器的 IP 或域名。此代码中,Nginx 会把接入服务器的请求重新定向至 Kibana 即 localhost:5601 ,另外,这段代码也会读取 htpasswd.users 文件并进行身份验证。

server {
    listen 80;

    server_name 192.168.180.134(替换成你的域名);

    auth_basic "Restricted Access";
    auth_basic_user_file /etc/nginx/htpasswd.users;

    location / {
        proxy_pass http://localhost:5601;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

完成后,保存并关闭。

接着,我们来创建 sites-enabled 目录来启动新配置。

sudo ln -s /etc/nginx/sites-available/(替换成你的域名) /etc/nginx/sites-enabled/(替换成你的域名)

然后我们来检查一下配置的语法是否有错。

sudo nginx -t

检查 nginx 配置语法是否有错
检查 nginx 配置语法是否有错

如果报错,请返回并再次检查。如果正确会看到以上成功信息。

让我们来重启 Nginx 服务:

sudo systemctl reload nginx

接着我们让服务器防火墙允许我们的 Nginx 通过:

sudo ufw allow 'Nginx Full'

更多关于 UFW 防火墙的设置,可参考我们之前写的文章《UFW 通用防火墙规则和命令

激动人心的时刻即将到来,打开你的浏览器,访问刚刚设置的 IP 或域名:

http://(替换成你的域名)/status

使用浏览器打开 kibana 状态页
使用浏览器打开 kibana 状态页

我们也可以直接进入 Elastic Web 查看更多信息

Elastic Web
Elastic Web

至此,我们已经在服务器上成功安装和运行 ElasticSearch 及 Kibana ,下一章我们讲 Kibana 的使用。欢迎持续关注。

有任何问题,欢迎加我微信一起讨论。

我的微信
我的微信

同时顺便推荐一下,我们的「卡拉搜索」(Kalasearch.cn)一行代码即可快速部署站内搜索,毫秒级搜索体验,友好的可视化后台,拖拖鼠标即可实时设置搜索排序等。

少数派(sspai.com)正在使用我们的服务,欢迎前往少数派测试卡拉搜索实际效果。

附:少数派 CTO 李曦谈卡拉搜索 - 让「少数派」拥有接近谷歌级的站内搜索功能,付费文章购买量轻松提升16%

友情链接更新日志© 2021, 卡拉搜索, Built with ❤️ in San Francisco + Beijing

京ICP备15049164号-3