#title Solr installation
*** Prerequisites
Install java and some utilities.
apt-get install default-jre-headless unzip lsof curl
*** Installation
Download the tarball from [[http://lucene.apache.org/solr/]] and unpack it
in =/opt/=, symlinking it to =/opt/solr=.
lrwxrwxrwx 1 root root 11 Oct 1 08:23 solr -> solr-5.3.1/
drwxr-xr-x 9 root root 4.0K Oct 1 08:23 solr-5.3.1
-rw-r--r-- 1 root root 129M Oct 1 08:23 solr-5.3.1.tgz
-rw-r--r-- 1 root root 57 Oct 1 08:24 solr-5.3.1.tgz.sha1
Then symlink =/opt/solr/bin/solr= to =/usr/local/bin/solr=.
*** Configuration
If you now try to start it as a normal user who wants its own
instance, it will die, because it will try to write files (log, pids,
indexes) in directories which belong to root.
So create a dedicated directory under =$HOME= and do:
mkdir -p $HOME/solr/{solr,pids,logs}
cp /opt/solr/server/solr/solr.xml $HOME/solr/solr
export SOLR_LOGS_DIR=$HOME/solr/logs
export SOLR_PID_DIR=$HOME/solr/pids
export SOLR_HOME=$HOME/solr/solr
export SOLR_PORT=9213
solr start
solr status
You can also pack the setting in a file and export
SOLR_INCLUDE=/path/to/setting/file instead.
This way you can set the log dir, the pid dir, the data directory and
the port.
*** Create a core
Let's assume you want a core named =mysite=.
solr create_core -c mysite -d sample_techproducts_configs -p 9213
Then update the =schema.xml= found in
=$HOME/solr/solr/mysite/conf/schema.xml= with your definitions.
You can also provide to the =-d= switch a directory with your
configuration.
Pass the -p option if you have more solr instance, for some reason
create_core seems to ignore the SOLR_PORT environment variable.
The =solr_url= to pass to modules like =WebService::Solr= will become:
[[http://localhost:9213/solr/mysite]]
*** Delete a core
solr delete -c mysite
*** Firewall the ports
By default, solr listen to all the interfaces, so be sure to firewall
them once finished.