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 12更新软件包索引

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

sudo apt install default-jdk

输入y以继续安装。

Debian 12安装Java OpenJDK 17

安装完成后,执行以下命令验证Java版本。

java --version

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

验证Java版本

下载和安装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

下载并提取Apache Solr安装脚本

接下来,执行以下命令通过安装脚本install_solr_service.sh安装Apache Solr。

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

在安装过程中,你将看到以下输出:

安装Apache Solr

从截图中,你应该能看到Apache Solr安装的详细状态:

- Apache Solr的默认安装目录是/opt/solr,数据目录为/var/solr
- 新的系统用户solr将自动创建,用于运行Apache Solr进程。
- 新的服务脚本solr.service也将被创建,可以通过systemctl和service命令管理。

现在使用以下命令验证solr服务状态。

sudo service solr status

以下输出确认solr服务已在后台运行,并通过服务脚本启动。

检查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机器上的内核参数shmmaxnr_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系统参数

对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_HOSTSOLR_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仪表盘

从仪表盘中,你可以看到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登录。

Solr登录页面

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

安全认证后的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'”。

创建Solr索引成功

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

Core Selector选择

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

Solr索引详细信息

总结

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