本页内容

  • 前提条件
  • 安装 Java OpenJDK 11
  • 安装 Apache Solr
  • 优化 Apache Solr 安装
  • 配置 Ulimits 与 Firewalld
  • 使用基本身份验证保护 Apache Solr
  • 创建第一个索引
  • 结论

Apache Solr(简称 Solr)是一个基于 Apache Lucene 库的企业级搜索平台。Solr 全称 Searching On Lucene with Replication,是一个用 Java 编写的自由、开源搜索平台。Solr 是行业内最流行的搜索平台之一,并通过复制以及自动故障转移和恢复提供高可用性。

Solr 是一个高度可扩展且可靠的搜索平台,可用于构建企业级应用,并提供高性能。它支持分布式索引并具备容错能力。一些大型互联网公司,如 Adobe、Netflix、Instagram、Magento 和 Bloomberg,都将 Apache Solr 用作其产品的搜索引擎平台。

在本教程中,你将学习如何在 AlmaLinux 9 服务器上安装 Apache Solr。你还将为 Solr 设置 MaxHeapMemory(最大堆内存)、设置资源限制,并为 Solr 配置基本身份验证。

前提条件

要完成本指南,请确保你具备以下条件:

  • 一台至少具备 2/4 GB 内存的 AlmaLinux 9 服务器。本示例使用主机名为 almalinux9、内存为 8 GB 的 AlmaLinux。
  • 一个具有 sudo/root 管理员权限的非 root 用户。

安装 Java OpenJDK 11

在撰写本文时,Apache Solr 的最新版本为 v9.x,需要 Java JRE(Java 运行时环境)至少为 v11 或更高版本。在第一步中,你将通过 AlmaLinux 的 appstream 软件仓库安装 Java OpenJDK 11。

输入以下 dnf 命令,在你的 AlmaLinux 服务器上安装 Java OpenJDK 11。出现提示时,输入 y 确认并按 ENTER(回车键)。

sudo dnf install java-11-openjdk java-11-openjdk-devel

在 AlmaLinux 9 服务器上完整安装配置 Apache Solr 搜索平台

安装 Java OpenJDK 之后,运行以下命令来验证 Java 版本,并确保安装成功。

java --version

以下输出确认 Java OpenJDK 11 已安装。

在 AlmaLinux 9 服务器上完整安装配置 Apache Solr 搜索平台

安装 Apache Solr

在安装完 Java OpenJDK 11 之后,你将开始安装 Apache Solr。Apache Solr 提供了适用于多种操作系统的二进制包,包括 Linux、macOS 和 Windows。

在本节中,你将通过官方二进制包在你的 AlmaLinux 服务器上安装 Apache Solr。

在下载 Apache Solr 之前,请使用以下命令将下列软件包安装到你的 AlmaLinux 服务器。

sudo dnf install curl lsof chkconfig -y

接下来,使用以下 curl 命令下载 Apache Solr 9.2.1 的二进制包。

curl -qO https://downloads.apache.org/solr/solr/9.2.1/solr-9.2.1.tgz

运行以下命令,从 Apache Solr 二进制包 'solr-9.2.1.tgz' 中提取安装脚本。

tar xzf solr-9.2.1.tgz solr-9.2.1/bin/install_solr_service.sh --strip-components=2

你应当能在当前目录中看到 Apache Solr 的安装脚本 'install_solr_service.sh'。

图片

接下来,通过执行安装脚本 'install_solr_service.sh' 来安装 Apache Solr,如下所示:

sudo bash ./install_solr_service.sh solr-9.2.1.tgz

当安装成功时,你收到的输出应当类似于以下内容:

在 AlmaLinux 9 服务器上完整安装配置 Apache Solr 搜索平台

Apache Solr 正在默认端口 8983 上运行,其 SOLR_HOME 目录为 /var/solr/data。此时,它正以 PID(进程 ID)12084 运行。

现在,运行以下命令停止当前在 PID 12084 上运行的 Apache Solr 进程。

kill -9 12084

然后,你可以使用以下命令启动 Apache Solr 服务。

sudo service solr start

在 AlmaLinux 9 服务器上完整安装配置 Apache Solr 搜索平台

最后,使用以下命令验证 Apache Solr 服务。

sudo service solr status

如果 Apache Solr 正在运行,终端上会显示类似的输出。

在 AlmaLinux 9 服务器上完整安装配置 Apache Solr 搜索平台

优化 Apache Solr 安装

在本节中,你将配置并优化 Apache Solr 的运行方式。在本示例中,Apache Solr 将以 4 GB 的最大堆内存和内部 IP 地址 '192.168.10.15' 运行。

首先,通过运行以下命令增大 shmmax 和 nr_hugepages 的值。

sudo echo 4294967295 > /proc/sys/kernel/shmmax
sudo echo 1536 > /proc/sys/vm/nr_hugepages

使用 nano 编辑器命令打开文件 '/etc/default/solr.in.sh'。

sudo nano /etc/default/solr.in.sh

取消注释参数 SOLAR_HEAP,并将其值更改为你想要使用的最大堆内存。请务必根据你服务器的总内存来调整该值。

SOLR_HEAP="4g"

取消注释 SOLR_JETTY_HOST 和 SOLR_HOST 参数,并将其值更改为你的内部 IP 地址。在本示例中,Apache Solr 将运行在 '192.168.10.15' 上。

SOLR_HOST="192.168.10.15"
SOLR_JETTY_HOST="192.168.10.15"

完成后保存更改并关闭编辑器。

接下来,运行以下命令重启 Apache Solr 服务以使更改生效。

sudo service solr restart

在 AlmaLinux 9 服务器上完整安装配置 Apache Solr 搜索平台

最后,运行以下命令验证 Apache Solr 的状态。如果 Apache Solr 配置成功,你应当会看到最大堆内存已更改。在本示例中,它已更改为 4 GB。

sudo service solr status

在 AlmaLinux 9 服务器上完整安装配置 Apache Solr 搜索平台

配置 Ulimits 与 Firewalld

运行 Apache Solr 的另一项重要系统配置是设置最大进程数和最大打开文件数,这至少需要 65000。为此,你需要修改文件 '/etc/security/limits.conf'。之后,你还需要配置 firewalld 并为 Apache Solr 开放端口 8983。

使用以下 nano 编辑器命令打开文件 '/etc/security/limits.conf'。

sudo nano /etc/security/limits.conf

在文件末尾添加以下配置。

solr   soft   nofile   65000
solr   hard   nofile   65000
solr   soft   nproc    65000
solr   hard   nproc    65000

保存文件并关闭编辑器。

现在,运行以下命令检查系统的最大进程数和最大打开文件数。如果成功,你应当会在两项设置中都看到 65000 的值。

sudo -H -u solr bash -c "ulimit -aH"

在 AlmaLinux 9 服务器上完整安装配置 Apache Solr 搜索平台

现在运行以下命令,以确保 ulimit 配置生效。

sudo service solr restart

ulimit 的警告信息消失,这确认配置已成功。

在 AlmaLinux 9 服务器上完整安装配置 Apache Solr 搜索平台

接下来,使用以下命令在 firewalld 上开放端口 8983。

sudo firewall-cmd --add-port=8983/tcp --permanent

然后,重新加载 firewalld 以应用更改,并验证 firewalld 规则列表。

sudo firewall-cmd --reload
sudo firewall-cmd --list-all

如果 firewalld 配置成功,你应当在 firewalld 规则列表中看到端口 8983。

在 AlmaLinux 9 服务器上完整安装配置 Apache Solr 搜索平台

最后,打开你的网页浏览器,访问服务器的 IP 地址加上端口 8983(即:http://192.168.10.15:8983/)。你应当会看到如下所示的 Apache Solr 仪表盘:

在 AlmaLinux 9 服务器上完整安装配置 Apache Solr 搜索平台

使用基本身份验证保护 Apache Solr

默认情况下,Apache Solr 安装后不带身份验证。为了保护它,你可以使用多种方法,例如基本身份验证(Basic Authentication)、Kerberos 身份验证、JWT 身份验证和基于规则的身份验证(Rulebased Authentication)。在本示例中,你将通过基本身份验证来保护 Apache Solr。

使用以下 nano 编辑器在 Apache Solr 数据目录 /var/solr/data/ 下创建一个新文件 security.json。

sudo nano /var/solr/data/security.json

插入以下配置,以创建一个名为 solr、密码为 SolrRocks 的新用户。

{
  "authentication":{
    "blockUnknown": true,
    "class":"solr.BasicAuthPlugin",
    "credentials":{"solr":"IV0EHq1OnNrj6gvRCwvFwTrZ1+z1oBbnQdiVC3otuq0= Ndd7LKvVBAaZIF0QAVi1ekCfAJXr1GGfLtRUXhgrF8c="},
    "realm":"My Solr users",
    "forwardCredentials": false
  },
  "authorization":{
    "class":"solr.RuleBasedAuthorizationPlugin",
    "permissions":[{"name":"all", "role":"admin"}],
    "user-role":{"solr":"admin"}
  }
}

完成后保存并退出编辑器。

接下来,运行以下命令重启 Apache Solr 以使更改生效。

sudo service solr restart

至此,Apache Solr 已启动并运行,且已启用基本身份验证。

现在回到网页浏览器并刷新 Apache Solr 管理仪表盘。或者你也可以直接访问,例如:http://192.168.10.15:8983/。如果成功,你应当会看到如下所示的 Apache Solr 登录页面:

在 AlmaLinux 9 服务器上完整安装配置 Apache Solr 搜索平台

输入 Apache Solr 用户 solr 和密码 SolrRocks,然后点击 Login(登录)。如果身份验证成功,你应当会看到 Apache Solr 仪表盘。

此外,点击 Security(安全)菜单,你将注意到 Apache Solr 正在运行且已启用 basic_auth 插件。

在 AlmaLinux 9 服务器上完整安装配置 Apache Solr 搜索平台

创建第一个索引

一切配置就绪后,你便可以创建第一个 Solr 索引了。

首先,使用以下 nano 编辑器命令打开文件 /etc/default/solr.in.sh。

sudo nano /etc/default/solr.in.sh

取消注释参数 SOLR_AUTH_TYPE 和 SOLR_AUTHENTICATION_OPTS。

SOLR_AUTH_TYPE="basic"
SOLR_AUTHENTICATION_OPTS="-Dbasicauth=solr:SolrRocks"

完成后保存并退出文件。

现在运行以下命令重启 Apache Solr 以使更改生效。

sudo service restart solr

接下来,使用以下命令创建一个名为 test_core 的新 Solr 索引。

su - solr -c "/opt/solr/bin/solr create -c test1_core -n Test1Core"

创建完成后,你应当会收到输出 "Created new core test1_core"。

在 AlmaLinux 9 服务器上完整安装配置 Apache Solr 搜索平台

回到 Apache 网页管理仪表盘,点击 Core Admin(核心管理)菜单,你应当能看到可用的 test1_core。

在 AlmaLinux 9 服务器上完整安装配置 Apache Solr 搜索平台

结论

恭喜!你已成功在 AlmaLinux 9 服务器上安装了 Apache Solr。你还配置了 ulimit 以优化 Apache Solr,并配置了 firewalld 以保护 Apache Solr。最后,你还在 Apache Solr 上启用了基本身份验证,访问了 Apache Solr 网页管理仪表盘,并创建了第一个 Solr 索引。