Apache Solr是一个基于Apache Lucene构建的开源搜索平台,旨在创建强大的应用搜索和索引功能。它提供高级全文搜索、分面搜索、实时索引和分布式搜索,是构建搜索引擎和数据检索系统的热门选择。Solr具有高度可扩展性,针对大数据量进行了优化,常用于企业环境中的网站搜索、电子商务和大数据分析等任务。其REST风格的API允许与其他系统轻松集成,并支持高亮显示、查询建议和地理空间搜索等功能。
在本指南中,我们将逐步介绍如何在Debian 12服务器上安装Apache Solr。你将使用Java OpenJDK 17安装Apache Solr,通过BasicAuth插件进行安全配置,并学习如何通过命令行创建Solr索引。
在开始之前,请确保满足以下条件:
- 一台至少具有4GB内存的Debian 12服务器。
- 一个具有sudo管理员权限的非root用户。
安装Java OpenJDK
Apache Solr是基于Apache Lucene的企业级搜索平台,运行在Java JRE(Java运行环境)之上。目前Solr至少需要Java JRE 11版本,你将使用可以从Debian仓库安装的OpenJDK 17。
在开始之前,执行以下命令更新和刷新Debian软件包索引。
sudo apt update

现在运行以下命令在Debian机器上安装Java OpenJDK。在Debian 12中,default-jdk包指的是Java OpenJDK 17,Apache Solr可以使用它。
sudo apt install default-jdk
输入y以继续安装。

安装完成后,执行以下命令验证Java版本。
java --version
以下输出确认Java OpenJDK 17已安装。

下载和安装Apache Solr
安装Java OpenJDK后,你将通过安装脚本下载并安装Apache Solr。目前Apache Solr的最新版本是9.4。访问Apache Solr官方下载页面获取最新版本信息。
在下载Apache Solr之前,执行以下命令安装一些依赖项。
sudo apt install curl lsof bc
现在运行下面的curl命令下载Apache Solr的二进制包。本文撰写时Apache Solr的最新版本是v9.4.0。下载完成后,Apache Solr包将保存为solr-9.4.0.tgz。
curl -qO https://downloads.apache.org/solr/solr/9.4.0/solr-9.4.0.tgz
然后,运行以下命令从solr-9.4.0.tgz文件中提取Apache Solr安装脚本。安装脚本install_solr_service.sh将被提取到当前工作目录。
tar xzf solr-9.4.0.tgz solr-9.4.0/bin/install_solr_service.sh --strip-components=2

接下来,执行以下命令通过安装脚本install_solr_service.sh安装Apache Solr。
sudo bash ./install_solr_service.sh solr-9.4.0.tgz
在安装过程中,你将看到以下输出:

从截图中,你应该能看到Apache Solr安装的详细状态:
- Apache Solr的默认安装目录是/opt/solr,数据目录为/var/solr。
- 新的系统用户solr将自动创建,用于运行Apache Solr进程。
- 新的服务脚本solr.service也将被创建,可以通过systemctl和service命令管理。
现在使用以下命令验证solr服务状态。
sudo service solr status
以下输出确认solr服务已在后台运行,并通过服务脚本启动。

你还可以使用以下命令重启或停止Solr服务。
sudo service solr restart
sudo service solr stop
配置Apache Solr
现在你已经安装了Apache Solr。接下来你将进行以下操作:
- 配置Debian系统:通过增加shmmax、nr_hugepages以及系统最大进程数和打开文件数的限制来调整Debian机器。
- 配置Solr:增加Solr的最大堆内存,并配置特定的本地IP地址作为Apache Solr的主机。
执行以下命令增加Debian机器上的内核参数shmmax和nr_hugepages。
sudo echo 4294967295 > /proc/sys/kernel/shmmax
sudo echo 1536 > /proc/sys/vm/nr_hugepages
然后,使用nano编辑器打开文件/etc/security/limits.conf。
sudo nano /etc/security/limits.conf
在文件末尾追加以下配置。这将把用户solr的最大进程数和最大打开文件数设置为65000。
solr soft nofile 65000 solr hard nofile 65000 solr soft nproc 65000 solr hard nproc 65000
保存文件并退出编辑器。
最后,执行以下命令验证用户solr的ulimit(最大进程数和最大打开文件数)。
sudo -H -u solr bash -c "ulimit -aH"
如果成功,用户solr的ulimit最大进程数和最大打开文件数将被配置为65000。

对Debian机器进行更改后,现在你将修改Apache Solr配置,将最大堆内存设置为4 GB,并在本地IP地址192.168.10.15上运行Solr。
使用nano编辑器打开默认的Apache Solr配置文件/etc/default/solr.in.sh。
sudo nano /etc/default/solr.in.sh
调整默认的SOLR_HEAP选项为你允许的最大内存。在本例中,你将允许Apache Solr使用最大4GB内存。
SOLR_HEAP="4g"
然后,取消注释SOLR_HOST和SOLR_JETTY_HOST选项,输入你的服务器IP地址。在本例中,你将在本地IP地址192.168.10.15上运行Apache Solr。
SOLR_HOST="192.168.10.15" SOLR_JETTY_HOST="192.168.10.15"
保存并关闭文件。
接下来,运行以下命令重启solr服务并应用所做的更改。
sudo service solr restart
执行命令后,你的Apache Solr将在服务器IP地址192.168.10.15上运行,最大堆内存为4 GB。
打开网络浏览器,访问服务器IP地址加上端口8983,例如http://192.168.10.15:8983/。如果一切正确,你应该看到以下Apache Solr仪表盘页面。

从仪表盘中,你可以看到Apache Solr的安装目录/opt/solr正在使用Java OpenJDK 17运行。
使用BasicAuth插件保护Apache Solr
在本节中,你将通过BasicAuth插件添加认证来保护Apache Solr,并创建新的Solr用户。为此,你必须创建特定的配置,然后定义Solr用户的认证模块和授权模块。
使用nano编辑器创建新文件/var/solr/data/security.json。在本例中,Apache Solr的默认数据目录是/var/solr/data/。
sudo nano /var/solr/data/security.json
将以下配置插入文件。
{
"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:
- BasicAuthPlugin用于用户认证,创建一个用户名solr、密码为solrRocks的新用户。
- RuleBasedAuthorizationPlugin用于授权,将用户solr配置为管理员,可以访问Apache Solr安装中的任何索引。
接下来,运行以下命令重启solr服务并应用更改。
sudo service solr restart
现在返回网络浏览器,重新加载Apache Solr页面。如果一切成功,你将被重定向到Solr登录页面。
使用用户名solr和密码SolrRocks登录。

如果登录成功,你应该能看到Apache Solr仪表盘。

创建第一个Apache Solr索引
到此为止,你已经完成了Apache Solr的安装,现在可以通过命令行创建你的第一个Solr索引。但在此之前,你必须确保已配置了Solr的默认认证。
使用nano编辑器打开Solr配置文件/etc/default/solr.in.sh。
sudo nano /etc/default/solr.in.sh
取消以下行的注释,通过基本认证设置默认的Solr认证,输入你创建的solr用户和密码SolrRocks。
SOLR_AUTH_TYPE="basic" SOLR_AUTHENTICATION_OPTS="-Dbasicauth=solr:SolrRocks"
保存文件并退出编辑器。
现在运行以下命令重启solr服务并应用更改。
sudo service solr restart
接下来,执行以下命令创建你的第一个Solr索引test_core。
su - solr -c "/opt/solr/bin/solr create -c test_core -n TestCore"
索引创建成功后,你将看到预期的输出“Created new core 'test_core'”。

最后,返回Apache Solr仪表盘,在Core Selector下拉菜单中选择test_core。

完成后,你应该能看到索引test_core的详细信息。

总结
总结来说,你已经逐步完成了在Debian 12服务器上安装Apache Solr。你使用Java OpenJDK 17安装了Apache Solr,并通过BasicAuth插件添加认证来保护Apache Solr安装。此外,你还学习了如何通过命令行创建Solr索引。从现在开始,你可以通过创建Solr集群来充分利用你的Solr安装。