1. 解压solr-5.2.1.tar.gz 到/usr/local/solr.5.2.1,进入安装目录,新建solr目录。
2. 将/usr/local/solr-5.2.1/server/solr/solr.xml拷贝到/usr/local/solr-5.2.1/solr目录中,将/usr/local/solr-5.2.1/server/webapps/solr.war拷贝到/usr/local/solr-5.2.1/solr目录中。
3. 解压tomcat-7.0.63.tar.gz到/usr/local/tomcat-7.0.63,在/usr/local/tomcat-7.0.63/conf/Catalina/localhost中新建solr.xml文件,目录没有则自己新建。
编辑solr.xml:
<?xml version="1.0" encoding="utf-8"?>
<Context docBase="/usr/local/solr-5.2.1/solr/solr.war" crossContext="true">
<Environment name="solr/home" type="java.lang.String" value="/usr/local/solr-5.2.1/solr" override="true"/>
</Context>
4. 启动tomcat, bin/startup.sh
出现的问题:
1. 浏览器访问http://ip:8080/solr时,访问失败。查看localhost.2015-08-20.log日志,发现:
Aug 20, 2015 5:06:45 PM org.apache.catalina.core.StandardContext filterStart
SEVERE: Exception starting filter SolrRequestFilter
java.lang.NoClassDefFoundError: Failed to initialize Apache Solr: Could not find necessary SLF4j logging jars. If using Jetty, the SLF4j logging jars need to go in the jetty lib/ext directory. For other containers, the corresponding directory should be used. For more information, see: http://wiki.apache.org/solr/SolrLogging
at org.apache.solr.servlet.CheckLoggingConfiguration.check(CheckLoggingConfiguration.java:28)
at org.apache.solr.servlet.BaseSolrFilter.<clinit>(BaseSolrFilter.java:31)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at java.lang.Class.newInstance(Class.java:374)
at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:116)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:258)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:105)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4855)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5549)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
原因:缺少日志包,将/usr/local/solr-5.2.1/server/lib/ext中所有包拷贝到/usr/local/tomcat-7.0.63/webapps/solr/WEB-INF/lib中,问题解决。
2. solr配置日志文件输出
将/usr/local/solr-5.2.1/example/resources/log4j.properties拷贝到/usr/local/tomcat-7.0.63/webapps/solr/WEB-INF/classes/目录中,没有该目录则自己创建。
修改/usr/local/tomcat-7.0.63/bin/catalina.sh文件,添加:
JAVA_OPTS="-Dsolr.solr.home=/usr/local/solr-5.2.1/solr -Dsolr.root.logger=INFO,file,DAILY"
重启tomcat即可在/usr/local/solr-5.2.1/logs目录中查看solr.log日志。
备注:
可以根据需求修改日志配置文件log4j.properties,如:
solr.root.logger=INFO,file,DAILY
solr.log.dir=${solr.solr.home}/../logs
solr.log.file=solr.log
log4j.rootLogger=${solr.root.logger}
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%-4r [%t] %-5p %c %x [%X{collection} %X{shard} %X{replica} %X{core}] \u2013 %m%n
#- size rotation with log cleanup.
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.MaxFileSize=100MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.File=${solr.log.dir}/${solr.log.file}
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p [%t] [%X{collection} %X{shard} %X{replica} %X{core}] (%C.%M:%L) - %m%n
#DAILY
log4j.appender.DAILY=org.apache.log4j.rolling.RollingFileAppender
log4j.appender.DAILY.rollingPolicy=org.apache.log4j.rolling.TimeBasedRollingPolicy
log4j.appender.DAILY.rollingPolicy.ActiveFileName=${solr.log.dir}/${solr.log.file}
log4j.appender.DAILY.rollingPolicy.FileNamePattern=${solr.log.dir}/${solr.log.file}.%d{yyyy-MM-dd}
log4j.appender.DAILY.layout=org.apache.log4j.PatternLayout
log4j.appender.DAILY.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p [%t] [%X{collection} %X{shard} %X{replica} %X{core}] (%C.%M:%L) - %m%n
log4j.logger.org.apache.zookeeper=WARN
log4j.logger.org.apache.hadoop=WARN
# set to INFO to enable infostream log messages
log4j.logger.org.apache.solr.update.LoggingInfoStream=OFF