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设置基本认证。
sudo dnf install java-11-openjdk java-11-openjdk-devel
Java OpenJDK安装完毕后,运行以下命令来验证Java版本,并确保安装成功。
java --version
下面的输出确认了Java OpenJDK 11已经安装。
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运行,在你的终端上会显示类似的输出。
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
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仪表板:
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插件。
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的信息。