使用Solr与TYPO3在Debian Squeeze上
TYPO3的默认搜索扩展名为“索引搜索”对于小型网站是适用的,但如果您的网站更大(> 500页),则变得非常慢。 幸运的是,您可以用使用超快速Apache Solr搜索服务器的搜索扩展名替换它。 本教程将介绍如何在Debian Squeeze上使用带有TYPO3的Apache Solr。
我不会保证这将为您工作!
1初步说明
在本教程中,我使用两个服务器:
-
server1.example.com
(IP:192.168.0.100
):安装了TYPO3 4.7简介包的Web服务器(在www.example.com
vhost中)。 -
server2.example.com
(IP:192.168.0.101
):单独的服务器,我将安装Apache Solr。
当然,可以在与Web服务器相同的系统上安装Solr; 不过,我想分开这两个服务,以免他们影响对方的表现。
2安装Solr
server2.example.com:
打开/etc/apt/sources.list
...
vi /etc/apt/sources.list
...并确保您启用了contrib
和非免费
存储库:
deb http://ftp.de.debian.org/debian/ squeeze main contrib non-free deb-src http://ftp.de.debian.org/debian/ squeeze main contrib non-free deb http://security.debian.org/ squeeze/updates main contrib non-free deb-src http://security.debian.org/ squeeze/updates main contrib non-free deb http://ftp.de.debian.org/debian/ squeeze-updates main contrib non-free deb-src http://ftp.de.debian.org/debian/ squeeze-updates main contrib non-free |
更新您的包数据库...
apt-get update
...并安装Java:
apt-get install sun-java6-bin sun-java6-jdk sun-java6-jre unzip
update-alternatives --config java
update-alternatives --config javac
TYPO3项目提供了一个Solr安装脚本,我们下载如下:
wget http://forge.typo3.org/projects/extension-solr/repository/revisions/master/raw/resources/shell/install-solr.sh
chmod 755 install-solr.sh
现在我们安装Solr。 默认情况下(如果您不提供任何语言作为参数),Solr仅安装了英文语言支持; 如果您需要更多语言的支持,只需将其附加到命令中,例如:
./install-solr.sh german english french
这将安装一个Tomcat服务器(其中运行Solr)和Solr。 默认情况下,Tomcat只监听127.0.0.1
; 因为我们要从远程主机访问Solr,所以我们必须配置Tomcat监听所有接口,因此我们将/ var / solc/conf/server.xml
中的0.0.0.0
替换为
127.0.0.1
:
vi /opt/solr-tomcat/tomcat/conf/server.xml
[...] <Connector port="8080" protocol="HTTP/1.1" maxHttpHeaderSize="65536" connectionTimeout="20000" redirectPort="8443" address="0.0.0.0" URIEncoding="UTF-8" /> [...] |
重新启动Tomcat:
/opt/solr-tomcat/tomcat/bin/shutdown.sh
/opt/solr-tomcat/tomcat/bin/startup.sh
接下来我们可以在Solr中配置内核。 默认情况下,英文核心已经配置好了; 如果您需要更多语言,可以将它们添加到/opt/solr-tomcat/solr/solr.xml中
,例如:
vi /opt/solr-tomcat/solr/solr.xml
<?xml version="1.0" encoding="UTF-8" ?> <solr persistent="true"> <cores adminPath="/admin/cores" shareSchema="true"> <core name="core_en" instanceDir="typo3cores" schema="english/schema.xml" dataDir="data/core_en" /> <core name="core_de" instanceDir="typo3cores" schema="german/schema.xml" dataDir="data/core_de" /> <core name="core_fr" instanceDir="typo3cores" schema="french/schema.xml" dataDir="data/core_fr" /> </cores> </solr> |
重新启动Solr之后:
/opt/solr-tomcat/tomcat/bin/shutdown.sh
/opt/solr-tomcat/tomcat/bin/startup.sh
因为我们不想在每次启动服务器时手动启动Tomcat,所以我们可以将Tomcat启动命令添加到/etc/rc.local中
:
vi /etc/rc.local
[...] /opt/solr-tomcat/tomcat/bin/startup.sh [...] |
2.1添加验证到Solr
因为Solr正在监听所有接口,所以添加身份验证是个好主意。 我现在将配置用户user1
与英文内核的密码密码。
打开/opt/solr-tomcat/tomcat/conf/web.xml
...
vi /opt/solr-tomcat/tomcat/conf/web.xml
...并在<web-app>
容器中的某个地方添加以下部分:
[...] <security-constraint> <web-resource-collection> <web-resource-name>Solr authenticated application</web-resource-name> <url-pattern>/core_en/*</url-pattern> </web-resource-collection> <auth-constraint> <role-name>role1</role-name> </auth-constraint> </security-constraint> <login-config> <auth-method>BASIC</auth-method> <realm-name>Admin and Update protection</realm-name> </login-config> [...] |
如您所见,这仅适用于英文核心( <url-pattern> / core_en / * </ url-pattern>
),并且我已将其配置为角色role1
,因此有效用户必须属于该角色。 要将用户user1
及其密码添加到该角色,请打开/opt/solr-tomcat/tomcat/conf/tomcat-users.xml
...
vi /opt/solr-tomcat/tomcat/conf/tomcat-users.xml
...并在<tomcat-users>
容器中添加以下部分:
[...] <role rolename="role1"/> <user username="user1" password="secret" roles="role1"/> [...] |
之后重启Tomcat:
/opt/solr-tomcat/tomcat/bin/shutdown.sh
/opt/solr-tomcat/tomcat/bin/startup.sh
您现在可以打开一个浏览器,并访问Solr http://192.168.0.101:8080/solr
,您应该看到所有配置的内核:
当您访问英文核心(我们刚刚配置身份验证)时,应询问用户名和密码:
验证成功后,您应该看到以下页面,这意味着Solr正在成功运行: