Solr 9 계열은 Java 11 이상을 요구하며 실무에서는 17 을 쓰는 경우가 많다[1]. RHEL 계열 기준으로 JDK 와 보조 도구를 먼저 설치한다.
dnf install -y java-17-openjdk-devel wget tar lsof
java -version
Java 표기는 9 이후로 1.x 형식을 쓰지 않는다. Java 8 은 1.8.0_xxx 로 찍히지만 Java 11 은 11.0.x, Java 17 은 17.0.x 다. 1.11 이라는 버전은 존재하지 않는다.
설치 스크립트는 lsof 를 쓰고, 서비스 기동 시 열린 파일 수와 프로세스 수 제한(각각 65000 권장)을 점검한다. 제한이 낮으면 경고가 뜨므로 미리 올려 둔다.
cat > /etc/security/limits.d/99-solr.conf <<'LIMITS'
solr soft nofile 65000
solr hard nofile 65000
solr soft nproc 65000
solr hard nproc 65000
LIMITS
배포본은 미러에서 받고 체크섬을 확인한다. 최신 계열은 https://dlcdn.apache.org/solr/solr/ 아래에, 지난 버전은 https://archive.apache.org/dist/solr/solr/ 아래에 있다.
cd /opt
VER=9.10.1
wget https://dlcdn.apache.org/solr/solr/${VER}/solr-${VER}.tgz
wget https://downloads.apache.org/solr/solr/${VER}/solr-${VER}.tgz.sha512
sha512sum -c solr-${VER}.tgz.sha512
배포본 안에 설치 스크립트가 들어 있다. 압축을 통째로 풀지 말고 스크립트만 꺼내서 tgz 를 인자로 넘기는 것이 정석이다.
tar xzf solr-${VER}.tgz solr-${VER}/bin/install_solr_service.sh --strip-components=2
./install_solr_service.sh solr-${VER}.tgz
스크립트가 하는 일은 다음과 같다.
solr 계정과 그룹 생성/opt/solr-<버전> 에 풀고 /opt/solr 심볼릭 링크 생성/var/solr 에 배치 (/var/solr/data, /var/solr/solr.in.sh, /var/solr/logs)디렉터리를 바꾸려면 -i(설치 경로) · -d(데이터 경로) · -u(계정) · -p(포트) 옵션을 준다.
./install_solr_service.sh solr-${VER}.tgz -i /opt -d /data/solr -u solr -p 8983
운영 설정은 /etc/default/solr.in.sh 또는 설치 시 지정한 <데이터경로>/solr.in.sh 에 둔다. 프로그램 디렉터리 안의 bin/solr.in.sh 를 고치면 업그레이드 때 날아간다.
# /etc/default/solr.in.sh
SOLR_HEAP="4g"
SOLR_JETTY_HOST="0.0.0.0"
SOLR_PORT=8983
SOLR_TIMEZONE="Asia/Seoul"
SOLR_JETTY_HOST 를 반드시 확인한다. Solr 9 는 기본값이 127.0.0.1 이라 설정하지 않으면 다른 호스트에서 접속되지 않는다. 8 계열에서 올라온 뒤 "포트는 열려 있는데 붙지 않는다"고 하는 사례의 대부분이 이것이다.
systemctl enable --now solr
systemctl status solr
firewall-cmd --permanent --add-port=8983/tcp
firewall-cmd --reload
curl -s http://localhost:8983/solr/admin/info/system | head -20
curl -s "http://localhost:8983/solr/admin/cores?action=STATUS&wt=json"
웹 UI 는 http://<호스트>:8983/solr 다.
코어를 하나 만들어 색인이 되는지 본다. standalone 모드에서는 create_core 를 쓰고, 설정 세트는 _default 가 기본이다. 예전 문서에 나오는 data_driven_schema_configs 는 Solr 7 이전의 이름이라 9 에서는 존재하지 않는다.
su - solr -c "/opt/solr/bin/solr create_core -c test_core -d _default"
인증을 켜지 않은 Solr 를 외부에 노출하면 안 된다. Solr 는 기본적으로 인증이 없고 /solr/admin/* 로 컬렉션 조작과 설정 변경이 가능하다. 외부에서 접근해야 한다면 security.json 으로 Basic 인증을 켜거나 리버스 프록시 뒤에 둔다.
ZooKeeper 를 붙이는 SolrCloud 모드는 설치 절차가 다르다. SOLR_MODE=solrcloud 와 ZK_HOST 를 solr.in.sh 에 지정하고, 코어 대신 컬렉션을 만든다.
제거는 서비스 중지 후 설치물과 계정을 지운다.
systemctl disable --now solr
rm -rf /opt/solr /opt/solr-* /var/solr /etc/default/solr.in.sh /etc/systemd/system/solr.service
userdel solr
최신 버전 10.0.0 · 유지보수 계열 9.10.1 — 2026-09-20 확인. https://dlcdn.apache.org/solr/solr/ ↩︎