Setup Solr as system service

SUBHAM MAJAVADIYA
2 min readFeb 27, 2020

--

Most Linux distributions use the systemd as a system and service manager. In this tutorial, I will show how to set up SOLR as a service.

Setup prerequisites

Zookeeper

Zookeeper is a configuration-management application that comes prepackaged with Solr. It works well in the local environment, but as you increase the traffic or number of nodes, the prepackaged Zookeeper falls short of delivering proper support to your Solr cluster.
So in the production environment Zookeeper should be installed separately.

Create user

sudo useradd -m -p $(perl -e 'print crypt($ARGV[0], "password")' solr solr

Download solr source code

sudo su - solr
wget https://archive.apache.org/dist/lucene/solr/7.3.0/solr-7.3.0.tgz
tar xzf solr-7.3.0.tgz

Add solr/zookeeper hosts

I am setting up zookeeper and solr both in the same machine.

vi /etc/hostszokeeper.app.local 127.0.0.1
solr.app.local 127.0.0.1

Create ZooKeeper chroot

If you’re using a ZooKeeper instance that is shared by other systems, it’s recommended to isolate the SolrCloud znode tree using ZooKeeper’s chroot support. For instance, to ensure all znodes created by SolrCloud are stored under /solr

/home/solr/solr-7.3.0/bin/solr zk mkroot /solr -z zookeeper.app.local:2181

Create Systemd Service File

Create a systemd service file usingvi /etc/systemd/system/solr.service

[Unit]
Description=Apache SOLR
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
User=solr
Type=forking
PIDFile=/home/solr/solr-7.3.0/bin/solr-8983.pid
ExecStart=/home/solr/solr-7.3.0/bin/solr start -c -h solr.app.local -p 8983 -z zookeeper.app.local:2181/solr -noprompt
ExecStop=/home/solr/solr-7.3.0/bin/solr stop
Restart=on-abnormal
[Install]
WantedBy=multi-user.target

Reload & test setup

sudo systemctl daemon-reload
sudo systemctl start solr
sudo systemctl status solr

Now go to the browser and hit http://solr.app.local:8983 to access admin UI.

Happy searching.!!

--

--

SUBHAM MAJAVADIYA

Senior Software Engineer at Gojek | Ex-Engati Chatbot Platform | NITD