2015년 5월 1일 금요일

solr admin에 password 추가하기

https://wiki.apache.org/solr/SolrSecurity

여기서 

Common servlet container example

Jetty realm example

이 두개를 따라 하면 된다.

<jetty.xml>
    <Call name="addBean">
      <Arg>
        <New id="DeploymentManager" class="org.eclipse.jetty.deploy.DeploymentManager">
          <Set name="contexts">
            <Ref id="Contexts" />
          </Set>
          <Call name="setContextAttribute">
            <Arg>org.eclipse.jetty.server.webapp.ContainerIncludeJarPattern</Arg>
            <Arg>.*/servlet-api-[^/]*\.jar$</Arg>
          </Call>
          
          
          <!-- Add a customize step to the deployment lifecycle -->
          <!-- uncomment and replace DebugBinding with your extended AppLifeCycle.Binding class 
          <Call name="insertLifeCycleNode">
            <Arg>deployed</Arg>
            <Arg>starting</Arg>
            <Arg>customise</Arg>
          </Call>
          <Call name="addLifeCycleBinding">
            <Arg>
              <New class="org.eclipse.jetty.deploy.bindings.DebugBinding">
                <Arg>customise</Arg>
              </New>
            </Arg>
          </Call>
          -->
          
        </New>
      </Arg>
    </Call>
    <Call name="addBean">
      <Arg>
        <New class="org.eclipse.jetty.security.HashLoginService">
          <Set name="name">Test Realm</Set>
          <Set name="config"><SystemProperty name="jetty.home" default="."/>/etc/realm.properties</Set>
          <Set name="refreshInterval">0</Set>
        </New>
      </Arg>
    </Call>
    
    <Ref id="DeploymentManager">
      <Call name="addAppProvider">
        <Arg>
          <New class="org.eclipse.jetty.deploy.providers.ContextProvider">
            <Set name="monitoredDirName"><SystemProperty name="jetty.home" default="."/>/contexts</Set>
            <Set name="scanInterval">0</Set>
          </New>
        </Arg>
      </Call>

    </Ref>

<web.xml>
  <welcome-file-list>
    <welcome-file>admin.html</welcome-file>
  </welcome-file-list>

  <security-constraint>
    <web-resource-collection>
      <web-resource-name>Solr authenticated application</web-resource-name>
      <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>admin</role-name>
    </auth-constraint>
  </security-constraint>
  <login-config>
    <auth-method>BASIC</auth-method>
    <realm-name>Test Realm</realm-name>
  </login-config>
    
</web-app>

<realm.properties>
admin: 12345, admin

암호 부분을 강화하려면..
여기에 있는 방법대로..
$ cd ./lib
$ java -cp jetty-util-8.1.10.v20130312.jar org.eclipse.jetty.util.security.Password admin 12345
12345
OBF:19bv19bx19bz19c119c3
MD5:827ccb0eea8a706c4c34a16891f84e7b
CRYPT:adpliAB3dA.06

<realm.properties>
adminMD5:827ccb0eea8a706c4c34a16891f84e7b, admin


Solr ubuntu 설치

Solr를 ubuntu에 설치해보자. 형태소 분석기는 은전한닢을 사용한다. 요즘 핫한 건 elastic search이긴 하나 Solr를 선택한 이유는 admin이 보다 편리하게 되어 있고 예제도 아직은 elastic search보다 많기 때문이다. 결정적으로 분산 Indexing을 많이 안 하지 않을까? 해도 Solr에서 제안하는 Zookeeper를 사용한 분산 Indexing을 써도 돼지 않을까? 싶었고 Solr에서 elastic search로 옮기는 예제는 많은데 반대는 거이 찾아보기 힘들었다. 나중에 필요하면 elastic search로 옮겨가는 걸로...

즉, Solr를 선택한 이유는 초기 공부 및 도입 비용이 elastic search와 비교해 봤을 때 적어 보였기 때문이다.

형태소 분석기 은전한닢은 다음 URL를 보고 설치
http://eunjeon.blogspot.kr/

분석기
wget https://bitbucket.org/eunjeon/mecab-ko-lucene-analyzer/downloads/mecab-ko-lucene-analyzer-0.17.0.tar.gz
설치 URL
https://bitbucket.org/eunjeon/mecab-ko-lucene-analyzer/src/2397c65dccf333eec2613448c32c2694092f09b4/README.md?at=release-0.17.0

mecab-ko
wget https://bitbucket.org/eunjeon/mecab-ko/downloads/mecab-0.996-ko-0.9.2.tar.gz
설치 URL
https://bitbucket.org/eunjeon/mecab-ko

mecab-ko-dic
wget https://bitbucket.org/eunjeon/mecab-ko-dic/downloads/mecab-ko-dic-2.0.0-20150517.tar.gz
설치 URL
https://bitbucket.org/eunjeon/mecab-ko-dic

mecab-java
wget https://bitbucket.org/eunjeon/mecab-java/downloads/mecab-java-0.996.tar.gz

팁이라고 하면.. mecab-ko 는 최신거 사용
mecab-ko-dic은 알파 아닌 최신거 사용

설치할 때 에러나는 경우
1. mecab-0.996-ko-0.9.2에서 ./configure  할 때 에러난 경우
>> sudo apt-get install g++
2. he program 'make' is currently not installed.  To run 'make' please ask your administrator to install the package 'make'
라고 에러난 경우
>> sudo apt-get install build-essential
3. /usr/local/libexec/mecab/mecab-dict-index: error while loading shared libraries: libmecab.so.2: cannot open shared object file: No such file or directory
라고 에러난 경우
>> vi ~/.bashrc 혹은 vi ~/.bash_profile 에 아래 거 추가
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
4. mecab-java 컴파일 하다가
unmappable character for encoding ASCII
라고 에러나면
>> export JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF8



설치 시작하기 은전한닢이 solr 5 번전을 지원 못 하기 때문에 4.10.4로 설치

$ wget http://mirror.apache-kr.org/lucene/solr/4.10.4/solr-4.10.4.tgz
$ tar xvzf solr-4.10.4.tgz
$ cd solr-4.10.4
$ ./bin/solr start

이제부터는 설정 및 스키마 추가등은 메뉴얼대로~