本页内容
- 前提条件
- 安装 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

安装 Java OpenJDK 之后,运行以下命令来验证 Java 版本,并确保安装成功。
java --version
以下输出确认 Java OpenJDK 11 已安装。

安装 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
当安装成功时,你收到的输出应当类似于以下内容:

Apache Solr 正在默认端口 8983 上运行,其 SOLR_HOME 目录为 /var/solr/data。此时,它正以 PID(进程 ID)12084 运行。
现在,运行以下命令停止当前在 PID 12084 上运行的 Apache Solr 进程。
kill -9 12084
然后,你可以使用以下命令启动 Apache Solr 服务。
sudo service solr start

最后,使用以下命令验证 Apache Solr 服务。
sudo service solr status
如果 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

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

配置 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"

现在运行以下命令,以确保 ulimit 配置生效。
sudo service solr restart
ulimit 的警告信息消失,这确认配置已成功。

接下来,使用以下命令在 firewalld 上开放端口 8983。
sudo firewall-cmd --add-port=8983/tcp --permanent
然后,重新加载 firewalld 以应用更改,并验证 firewalld 规则列表。
sudo firewall-cmd --reload
sudo firewall-cmd --list-all
如果 firewalld 配置成功,你应当在 firewalld 规则列表中看到端口 8983。

最后,打开你的网页浏览器,访问服务器的 IP 地址加上端口 8983(即:http://192.168.10.15:8983/)。你应当会看到如下所示的 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 登录页面:

输入 Apache Solr 用户 solr 和密码 SolrRocks,然后点击 Login(登录)。如果身份验证成功,你应当会看到 Apache Solr 仪表盘。
此外,点击 Security(安全)菜单,你将注意到 Apache Solr 正在运行且已启用 basic_auth 插件。

创建第一个索引
一切配置就绪后,你便可以创建第一个 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"。

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

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