자바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 로 접속해보면 페이지가 뜨는 것을 확인 할 수 있다.