Omeka에서 Solr 검색엔진 설치 및 사용 방법

edited May 2017 in OMEKA

Solr는 아파치 루썬 프로젝트를 통해 개발된 강력한 검색엔진으로 오픈소스로 개발되었습니다.
Solr 검색엔진은 ElasticSearch 검색엔진과 함께 오픈소스로 개발된 검색엔진 중  전세계적으로 많이 활용되고 있는 엔진 중의 하나입니다. 참고로 Dspace 시스템은 Solr, AtoM 시스템은 ElasticSearch 엔진을 사용하고 있습니다.
오메카 시스템에서 Solr 검색엔진을 사용하면 기존의 오메카 기본 검색도구 보다 강력하고 뛰어난 성능의 검색도구를 이용자에게 제공할 수 있고, 퍼싯메뉴 같은 검색옵션을 관리자가 직접 커스터마이징 설정해서 이용자들에게 자관 레코드에 대한 다양한 접근점을 제공할 수 있습니다.
Solr 검색엔진은 Omeka에 등록되는 레코드에 대해서 실시간으로 자동 색인하고 검색 결과를 바로 확인할 수 있습니다. 또한, 검색 서버가 오메카가 설치된 아파치 서버가 아닌 별도의 톰캣 서버를 사용하는 만큼 검색시 아파치 웹서버에 부하를 주지 않으므로 대량의 DB를 보유하고 검색 서비스에 중점을 둬야 하는 경우 Solr 검색엔진의 도입은 큰 장점이 될 수 있습니다.

오메카가 설치된 서버에서 Solr 검색엔진을 설치하고 설정하는 방법은 아래와 같습니다.
주의하실 점은 아래에 제시된 소프트웨어의 버젼과 다른 버젼을 설치시에는 에러나 충돌이 발생할 가능성이 높으므로 버젼에 유의해서 설치하시기 바랍니다.
테스트에 사용된 서버와 설치된 소프트웨어들의 버젼은 다음과 같습니다.

- Server OS : Linux Ubuntu Server v14.04
- DBMS : MySQL v5.5
- Web Server : Apache v2.4.25
- Programing Language : PHP v5.5.9
- JDK : Java-7-oracle
- Solr : Solr-4.10.4
- Omeka : Omeka v2.3
- Omeka plugin : Solr-Search v2.2.0


1. Amazon AWS EC2 1년 무료 계정 생성하고 서버 인스턴스 설치
- 설치 방법은 아래의 동영상강좌를 참고하세요.
http://osasf.net/discussion/548/%EB%8F%99%EC%98%81%EC%83%81-%EA%B0%95%EC%A2%8C-%EC%95%84%EB%A7%88%EC%A1%B4-%EC%9B%B9%EC%84%9C%EB%B9%84%EC%8A%A4-aws-ec2-%ED%94%84%EB%A6%AC%ED%8B%B0%EC%96%B4-1%EB%85%84-%EB%AC%B4%EB%A3%8C%EC%84%9C%EB%B2%84-%EC%8B%A0%EC%B2%AD-%EB%B0%8F-%EC%84%9C%EB%B2%84-%EC%85%8B%ED%8C%85%ED%95%98%EA%B8%B0-20170220#

Amazon AWS EC2 콘솔 모드 Security Groups에서 방화벽 포트 개방 설정
- 22, 80, 8080, 8983 포트를 개방하세요. 
  * 8080 및 8983 포트는 톰캣 서비스용 포트로 개방되어 있지 않으면 이후 Solr 관리자 페이지 접속 및 Solr 서비스 운용이 불가능합니다.

  
2. Omeka 설치
APM(Apache, PHP, MySQL) 및 Omeka 설치 방법은 아래의 매뉴얼을 참고하세요.
http://osasf.net/discussion/319/omeka-v2-3-%EC%84%A4%EC%B9%98-%EB%A7%A4%EB%89%B4%EC%96%BC-apache-php-mysql-%EC%B5%9C%EC%8B%A0%EB%B2%84%EC%A0%BC-%EC%84%A4%EC%B9%98%EB%82%B4%EC%9A%A9-%ED%8F%AC%ED%95%A8


3. Omeka 사이트에 SolrSearch 플러그인 설치
$ cd /var/www/omeka/plugins
$ wget http://omeka.org/wordpress/wp-content/uploads/Solr-Search-2.2.0.zip
$ unzip Solr-Search-2.2.0.zip
$ rm Solr-Search-2.2.0.zip
오메카 관리자 페이지에서 플러그인 중 SolrSearch 플러그인 활성화


4. JAVA 구동 환경 설치
$ sudo add-apt-repository ppa:webupd8team/java
$ sudo apt-get update
$ sudo apt-get install oracle-java7-installer
$ sudo nano /etc/environment
다음의 라인을 마지막 라인에 추가
JAVA_HOME="/usr/lib/jvm/java-7-oracle"
$ source /etc/environment
설치된 자바 버젼 확인
$ echo $JAVA_HOME


5. Solr 검색 서비스용 톰캣 웹서버 설치
$ sudo apt-get install tomcat7 tomcat7-admin
$ sudo service tomcat7 restart


6. Solr 검색엔진 다운로드 및 설치
$ cd /tmp
$ sudo wget https://archive.apache.org/dist/lucene/solr/4.10.4/solr-4.10.4.tgz
$ tar zxvf solr-4.10.4.tgz
$ mkdir /opt/solr
$ sudo cp -r solr-4.10.4/* /opt/solr
$ sudo cp /opt/solr/example/webapps/solr.war /opt/solr/example/multicore/solr.war
$ sudo cp -r /opt/solr/example/lib/ext/* /usr/share/tomcat7/lib
$ sudo cp -r /opt/solr/example/resources/log4j.properties /usr/share/tomcat7/lib
$ sudo nano /usr/share/tomcat7/lib/log4j.properties
solr.log=logs/ 라인을 아래와 같이 수정하고 저장
   solr.log=/opt/solr
오메카 SolrSearch 플러그인 디렉토리 하위의 omeka 디렉토리를 solr 디렉토리로 복사
$ sudo cp -r /var/www/omeka/plugins/SolrSearch/solr-core/omeka /opt/solr/example/multicore/
omeka 코어용 data 디렉토리 생성
$ sudo mkdir /opt/solr/example/multicore/omeka/data 
multicore 디렉토리의 solr.xml 수정
$ sudo nano /opt/solr/example/multicore/solr.xml
core0, core1 다음 라인에 omeka용 core 추가하고 저장
 <core name="core0" instanceDir="core0" />
 <core name="core1" instanceDir="core1" /> 
 <core name="omeka" instanceDir="omeka" /> 
$ sudo chown -R tomcat7 /opt/solr/example/multicore
$ sudo nano /etc/tomcat7/Catalina/localhost/solr.xml
solr.xml을 생성하고 아래의 라인을 추가하고 저장
<?xml version="1.0" encoding="UTF-8"?>
<Context docBase="/opt/solr/example/multicore/solr.war" debug="0" crossContext="true" >
 <Environment name="solr/home" type="java.lang.String" value="/opt/solr/example/multicore/omeka" override="true" />
</Context>

톰캣 웹서버 재시작
$ sudo service tomcat7 restart
Solr 서비스 실행을 위한 디렉토리로 이동
$ cd /opt/solr/example
Solr 서비스 시작
$ java -Dsolr.solr.home=multicore -jar start.jar


7. 오메카 Solr Search 환경 설정
오메카 관리자 모드 페이지 좌측 메뉴 중 Solr Search로 이동한 후 다음과 같이 셋팅
Server Host* :    localhost
Server Port* :     8983
Core URL*   :     /solr/omeka

* Solr 서버가 정상 인식되면 "Solr connection is vailid"라고 나옵니다.


8. Solr Search 세부 설정
Fields 탭에서 인덱싱 또는 퍼싯메뉴로 설정할 메타 항목 선택.


9. 완료
오메카 이용자 서비스 페이지로 이동한 후 검색창에 검색할 키워드 입력 후 검색 실행.
Solr 서버의 검색 결과가 화면에 정상 출력되는지 확인.


Comments

  • edited May 2017

    Solr 서비스를 서버에서 항상 실행 상태로 만드려면 /etc/init.d 경로에 Solr 서비스 실행을 위한 Shell Script를 만들어서 구동시키는 방식을 사용해야 합니다.
    위에서 제시한 Solr 서비스 실행은 백그라운드 자동 실행 방식이 아니고 디버그를 위한 테스트용인 관계로 만약 우분투 서버에 관리자가 터미널로 원격으로 접속해서 서비스를 실행한 경우 터미널을 닫게 되면 Solr 서비스가 멈추게 됩니다.
    따라서, Solr 서비스를 서버에서 항상 구동되게 하려면 쉘스크립트를 만들어서 시스템에서 자동 실행되도록 설정을 해야만 합니다.
    쉘스크립트는 다음과 같은 방식으로 만들면 됩니다.

    1. 데몬(Daemon) 설치
    $ sudo apt-get install daemon


    2. /etc/init.d 경로에 solr 쉘스크립트 생성
    $ sudo nano /etc/init.d/solr

    아래의 코드 복사해서 붙여 넣은 후 파일 저장(Ctrl + O)

    #!/bin/sh

    ### BEGIN INIT INFO
    # Provides:          scriptname
    # Required-Start:    $remote_fs $syslog
    # Required-Stop:     $remote_fs $syslog
    # Default-Start:     2 3 4 5
    # Default-Stop:      0 1 6
    # Short-Description: Start daemon at boot time
    # Description:       Enable service provided by daemon.
    ### END INIT INFO

    start () {
        echo -n "Starting solr..."

        # Start daemon
        daemon --chdir='/opt/solr/example' --command "java -Dsolr.solr.home=multicore -jar start.jar" --respawn --output=/var/log/solr/solr.log --name=solr --verbose

        RETVAL=$?
        if [ $RETVAL = 0 ]
        then
            echo "done."
        else
            echo "failed. See error code for more information."
        fi
        return $RETVAL
    }

    stop () {
        # Stop daemon
        echo -n "Stopping solr..."

        daemon --stop --name=solr  --verbose
        RETVAL=$?

        if [ $RETVAL = 0 ]
        then
            echo "Done."
        else
            echo "Failed. See error code for more information."
        fi
        return $RETVAL
    }


    restart () {
        daemon --restart --name=solr  --verbose
    }


    status () {
        # Report on the status of the daemon
        daemon --running --verbose --name=solr
        return $?
    }


    case "$1" in
        start)
            start
        ;;
        status)
            status
        ;;
        stop)
            stop
        ;;
        restart)
            restart
        ;;
        *)
            echo $"Usage: solr {start|status|stop|restart}"
            exit 3
        ;;
    esac

    exit $RETVAL



    에디터 편집 모드 종료(Ctrl + X)
    solr 쉘스크립트의 퍼미션 변경
    $ chmod +x /etc/init.d/solr


    3. 생성한 solr 쉘스크립트 등록
    $ sudo update-rc.d solr defaults


    4. Solr 서비스 실행 테스트
    서비스 시작
    $ sudo /etc/init.d/solr start

    서비스 재시작
    $ sudo /etc/init.d/solr restart

    서비스 중지
    $ sudo /etc/init.d/solr stop

    서비스 상태 확인
    $ sudo service solr status


    만약 쉘스크립트 작성시 문제가 있는 경우엔 다음과 같이 따라해 보세요.

    update-rc.d에서 solr 삭제
    $ sudo update-rc.d -f solr remove

    나노 에디터로 다시 solr 스크립트 열고 수정 또는 새로 작성 후 저장
    $ sudo nano /etc/init.d/solr

    생성한 solr 쉘스크립트 등록
    $ sudo update-rc.d solr defaults

    Solr 서비스 실행 테스트
    서비스 시작
    $ sudo /etc/init.d/solr start

    서비스 재시작
    $ sudo /etc/init.d/solr restart

    서비스 중지
    $ sudo /etc/init.d/solr stop

    서비스 상태 확인
    $ sudo service solr status

Sign In or Register to comment.