작성일 댓글 남기기

solr 설치

자바SDK를 다운로드 후 /usr/local/java 에 설치하고 /etc/profile 에 java 경로를 추가한다.

export JAVA_HOME=/usr/local/java

 

solr 계정을 만든다.

adduser solr

 

이 후 작업은 solr 계정으로 전환해서 작업한다.

su - solr

 

 

tomcat과 solr데이터 디렉토리는 아래와 같이 진행한다.

– tomcat 디렉토리 : /home/solr/tomcat
– solr 디렉토리 : /search_data/solr (디렉토리권한은 solr로 변경되어 있다고 가정)

tomcat은 7.0.52 버전을 사용했고 solr는 4.7.0을 사용했다.

 

 

tomcat과 solr 를 solr 홈디렉토리에 다운로드 후 압축을 풀고 링크를 건다.

wget http://mirror.apache-kr.org/tomcat/tomcat-7/v7.0.52/bin/apache-tomcat-7.0.52.tar.gz
wget http://mirror.apache-kr.org/lucene/solr/4.7.0/solr-4.7.0.tgz
 
tar xzpvf apache-tomcat-.7.0.52
tar xzpvf solr-4.7.0.tgz
ln -sf apache-tomcat-7.0.52 tomcat

 

 

vi tomcat/conf/server.xml 파일을 열어서 Connector 부분에 URIEncoding=”UTF-8″ 옵션을 추가한다.

<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443"
           URIEncoding="UTF-8" ></Connector>

 

solr 웹앱 파일을 tomcat 앱디렉토리에 solr.war 이름으로 복사를 한다.

cp -av solr-4.7.0/dist/solr-4.7.0.war tomcat/webapps/solr.war

 

solr 폴더의 내용을 /search_data/solr 로 복사한다.

cp -av solr-4.7.0/* /search_data/solr/

이 부분에서 보통 다른 설치문서를 보면 example/solr 디렉토리를 복사하는 것으로 되어 있는데,
그렇게 설치하면 solr 설치디렉토리에 있는 contrib등의 디렉토리에 있는 라이브러리를 못 찾는다는 에러가 뜬다.

 

 

solr 웹앱 설정파일을 만든다.

mkdir -p tomcat/conf/Catalina/localhost
cd !$
vi solr.xml
 <?xml version='1.0' encoding='utf-8'?>
 
<Context crossContext="true" debug="0" docBase="/home/solr/tomcat/webapps/solr" priviledged="true">
    <Environment name="solr/home" override="true" type="java.lang.String" value="/search_data/solr" ></Environment>
</Context>

 

여기까지가 검색하면 나오는 설치방법인데, 여기까지 하면 catalina.out에 아래와 같은 에러가 발생한다.

SEVERE: Error filterStart
Mar 18, 2014 1:49:04 PM org.apache.catalina.core.StandardContext startInternal
SEVERE: Context [/solr] startup failed due to previous errors

 

 

왜 에러가 발생하는지 알수가 없는데 알려면

tomcat/webapps/solr/WEB-INF/classes/logging.properties 파일을 만들어서 아래 내용을 추가해준다.

org.apache.catalina.core.ContainerBase.[Catalina].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].handlers = java.util.logging.ConsoleHandler

 

tomcat을 재시작하면 자세한 로그가 나온다.

SEVERE: Exception starting filter SolrRequestFilter
java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
        at org.apache.solr.client.solrj.impl.HttpClientUtil.<clinit>(HttpClientUtil.java:78)
        at org.apache.solr.servlet.SolrDispatchFilter.<init>(SolrDispatchFilter.java:120)
        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:140)
        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:4809)
        at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5485)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:632)
        at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:670)
        at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1839)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
        at java.util.concurrent.FutureTask.run(FutureTask.java:262)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:744)
Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1718)
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1569)
        ... 23 more

 

 

slf4j 관련 에러가 나오는데 관련라이브러리와 설정파일을 tomcat에 복사해주면 된다.

cp -av solr-4.7.0/example/lib/ext/* tomcat/lib/
cp -av solr-4.7.0/example/resources/log4j.properties tomcat/lib

 

log4j.properties 파일을 열어서 solr.log 경로를 수정한다.

solr.log=/home/tomcat/logs/

 

다시 tomcat을 재시작 후 http://server:8080/solr 로 접속해보면 페이지가 뜨는 것을 확인 할 수 있다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다