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设置基本认证。
要完成本指南,请确保你有以下条件:
在写这篇文章的时候,Apache Solr的最新版本是v9.x,需要至少v11以上的Java JRE(Java Runtime Environment)。在这第一步,你将通过AlmaLinux的appstream资源库安装Java OpenJDK 11。
输入以下dnf命令,将Java OpenJDK 11安装到你的AlmaLinux服务器。当出现提示时,输入y来确认,然后按回车键。
sudo dnf install java-11-openjdk java-11-openjdk-devel
Java OpenJDK安装完毕后,运行以下命令来验证Java版本,并确保安装成功。
java --version
下面的输出确认了Java OpenJDK 11已经安装。
安装完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的最大堆内存为4GB,内部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配置成功,你应该看到最大堆内存已经改变。在这个例子中,它变成了4GB。
sudo service solr status
运行Apache Solr的另一个重要系统配置是配置最大进程和最大打开文件,这需要至少65.000。为了实现这一点,你需要修改文件"/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
保存该文件并关闭编辑器。
现在,运行下面的命令来检查你系统上的最大进程和最大打开文件。如果成功的话,你应该在这两个设置上看到一个65.000的值。
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的安装是没有认证的。为了保护它,你可以使用多种方法,如基本认证、Kerberos认证、JWT认证和基于规则的认证。在这个例子中,你将通过基本认证来保证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管理仪表板。或者你可以直接访问i.e: http://192.168.10.15:8983/。如果成功,你应该得到像这样的Apache Solr登录页面:
输入Apache Solr用户solr和密码SolrRocks,然后点击登录。如果认证成功,你应该得到Apache Solr的仪表板。
除此之外,点击安全菜单,你会发现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
接下来,使用下面的命令创建一个新的Solr索引,名为test_core。
su - solr -c "/opt/solr/bin/solr create -c test1_core -n Test1Core"
一旦创建,你应该得到一个输出 "Created new core test1_core"。
回到Apache网络管理仪表板,点击菜单Core Admin,你应该会得到test1_core的信息。
恭喜你!你现在已经成功地安装了Apache Solr!你现在已经在AlmaLinux 9服务器上成功安装了Apache Solr。你还配置了ulimit来优化Apache Solr,配置了firewalld来保护Apache Solr。最后,你还在Apache Solr上启用了基本认证,访问了Apache Solr网络管理仪表板,并创建了第一个Solr索引。
上一条: 如何在AlmaLinux 9上安装Etherpad
下一条: 注册.pl波兰域名的步骤