Apache Solr是一个基于Apache Lucene构建的开源搜索平台,旨在创建强大的应用搜索和索引功能。它提供高级全文搜索、分面搜索、实时索引和分布式搜索,使其成为构建搜索引擎和数据检索系统的热门选择。

Solr具有高度可扩展性,并针对大量数据进行了优化,通常用于企业环境中的网站搜索、电子商务和大数据分析等任务。其类REST API允许与其他系统轻松集成,并支持查询建议高亮显示和地理空间搜索等功能。Solr的灵活性、性能和社区支持使其成为需要强大搜索功能的组织的领先解决方案。

在本指南中,您将学习如何在Ubuntu 24.04服务器上安装Apache Solr。此外,您还将学习如何使用BasicAuthentication保护Apache Solr,以及如何使用solr命令行创建第一个集合。

前提条件

在开始本指南之前,请确保您具备以下条件:

  • 一台Ubuntu 24.04服务器
  • 一个具有管理员权限的非root用户

准备Ubuntu服务器

在安装Apache Solr之前,让我们通过增加内核参数中的shmmaxnr_hugepages,然后增加默认的最大打开文件数和进程数来准备和配置Ubuntu系统。

执行以下命令以增加Ubuntu服务器上的shmmaxnr_hugepages

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

现在运行以下命令修改/etc/security/limits.conf文件。

sudo nano /etc/security/limits.conf

使用以下配置为用户solr增加最大打开文件数和进程数。

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

保存文件并退出编辑器。

安装Java OpenJDK

现在您已经配置了系统,让我们安装Java OpenJDK。Apache Solr要求系统上至少安装Java 11,在本指南中,我们将使用提供最新稳定版Java OpenJDK的default-jdk包。

首先,使用以下命令更新Ubuntu软件包索引。

sudo apt update

现在使用以下命令安装default-jdk包。输入Y确认安装。

sudo apt install default-jdk

安装JDK

安装完成后,使用以下命令检查Java版本。

java --version

您可以看到Java 21已安装。

检查Java版本

安装Apache Solr

现在Ubuntu系统已配置完毕且Java OpenJDK已安装,让我们开始Apache Solr的安装。在本指南中,您将使用Solr包提供的安装脚本安装Apache Solr。

首先,运行以下命令安装基本工具,如curllsofbc

sudo apt install curl lsof bc

安装基本包

现在使用以下wget命令下载Apache Solr二进制包。

wget https://www.apache.org/dyn/closer.lua/solr/solr/9.7.0/solr-9.7.0.tgz?action=download

重命名Apache Solr包并使用以下命令提取安装脚本install_solr_service.sh

mv solr-9.7.0.tgz?action=download solr-9.7.0.tgz
tar -xf tar xzf solr-9.7.0.tgz solr-9.7.0/bin/install_solr_service.sh --strip-components=2

现在执行install_solr_service.sh脚本安装Apache Solr。

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

以下是Apache Solr安装的详细说明:

  • 默认安装目录位于/opt/solr目录。
  • 新用户solr会自动创建。
  • 新的服务文件solr.service会被创建用于管理Apache Solr服务。

安装Solr

现在使用以下命令检查solr状态。您可以看到solr的状态为active(exited),这意味着服务正在运行,但systemd找不到任何文件来监控。

sudo systemctl status solr

检查Solr状态

您还可以使用以下ss命令检查系统上的开放端口。Apache Solr应该在端口8983上运行。

ss -tulpn

配置Apache Solr

现在Apache Solr已安装,让我们通过修改/etc/default/solr.in.sh脚本中的Apache Solr参数来进行配置。然后,增加默认的最大内存堆,以及用于运行Apache Solr的IP地址。

使用vim编辑器打开Solr配置文件/etc/default/solr.in.sh

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

更改默认的SOLR_HEAP选项,设置Apache Solr的最大内存分配。在本例中,我们将使用4GB的RAM。

SOLR_HEAP="4g"

SOLR_HOSTSOLR_JETTY_HOST选项中输入您的IP地址。在本例中,Apache Solr将在本地IP地址192.168.10.15上运行。

SOLR_HOST="192.168.10.15"
SOLR_JETTY_HOST="192.168.10.15"

现在运行以下systemctl命令重启Apache Solr服务并应用更改。

sudo systemctl restart solr

您可以使用以下ss命令检查开放端口以及Apache Solr使用的IP地址。

ss -tulpn

检查Solr端口

使用身份验证保护Apache Solr

配置Apache Solr之后,下一步是保护您的部署。在本例中,我们将使用基本身份验证来保护Apache Solr。这可以通过创建新文件/var/solr/data/security.json来完成。

使用vim编辑器创建新配置/var/solr/data/security.json

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

插入以下配置,为Apache Solr设置身份验证,并创建一个新用户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"}
 }
}

保存文件并退出编辑器。

现在运行以下systemctl命令重启solr服务并应用更改。

sudo systemctl restart solr

接下来,打开Web浏览器并访问您的Apache Solr安装地址 http://192.168.10.60:8983/。您将被重定向到Apache Solr登录页面。

Solr登录页面

输入用户solr和密码solrRocks,您将看到Apache Solr仪表板。

Solr仪表板

在Apache Solr中创建第一个集合

至此,您已经配置并保护了Apache Solr。现在您将从命令行在Apache Solr中创建第一个集合。

使用vim编辑器再次打开文件/etc/default/solr.in.sh

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

取消注释SOLR_AUTH_TYPESOLR_AUTHENTICATION_OPTS行,并保持两者为默认值。

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

保存文件并退出编辑器。

现在运行以下命令重启Apache Solr服务。

sudo systemctl restart solr

接下来,运行以下命令创建名为my_first_index的第一个集合。

su - solr -c "/opt/solr/bin/solr create -c my_first_index -n MyIndex"

创建索引

现在转到Apache Solr仪表板,您将看到新集合my_first_index已创建。

索引已创建

总结

恭喜!您已完成在Ubuntu 24.04服务器上安装Apache Solr。您使用Java OpenJDK 21进行了安装,将其配置为在本地IP地址上运行,并使用BasicAuthentication进行了保护。最后,您使用Solr命令行创建了第一个集合。