How to set up Solr on Ubuntu 10.04 (or whatever)

Edit, June 17, 2011

  • Wrote a new post revisiting installing Solr on Ubuntu -- it is both simpler and lighter-weight than the approach described in this post.

Original post

Apache Solr is a fast, open-source search solution. People are doing some very cool things with Solr. I personally have only begun to scratch the surface of what is possible with Solr, but have seen amazing returns with a relatively small investment (thanks entirely to Daniel Lindsley's excellent search framework, django-haystack). There are instructions for getting up and running with Solr + Jetty -- the purpose of this blog entry is to walk through setting up multi-core Solr with Apache Tomcat.

Let's go

First step, install the server:

sudo apt-get install tomcat6

Next you'll want to get Solr and extract it to a temporary directory

mkdir -p ~/tmp/solr/
cd ~/tmp/solr/
wget http://apache.multihomed.net/lucene/solr/1.4.0/apache-solr-1.4.0.tgz
tar xzf apache-solr-1.4.0.tgz

All the solr cores and indexes will go in /var/solr:

sudo mkdir -p /var/solr

Copy the Solr webapp and the example multicore configuration files:

sudo cp apache-solr-1.4.0/dist/apache-solr-1.4.0.war /var/solr/solr.war
sudo cp -R apache-solr-1.4.0/example/multicore/* /var/solr/
sudo chown -R tomcat6 /var/solr/

OK, now just need to point Catalina at Solr:

echo -e '<Context docBase="/var/solr/solr.war" debug="0" privileged="true" allowLinking="true" '\
'crossContext="true">\n<Environment name="solr/home" type="java.lang.String" value="/var/solr" '\
'override="true" />\n</Context>' | sudo tee -a /etc/tomcat6/Catalina/localhost/solr.xml
echo 'TOMCAT6_SECURITY=no' | sudo tee -a /etc/default/tomcat6

I edited the init script (/etc/init.d/tomcat6) to set solr.home, pointing it at /var/solr. I made this change near the top of the file other environment vars are set up:

JAVA_OPTS="$JAVA_OPTS -Dsolr.home=/var/solr"

Restart Tomcat6 and luxuriate in your newfound power:

sudo /etc/init.d/tomcat6 restart

Navigate to http://localhost:8080/solr/ - you should get something like this:

Where to now?

The solrconfig.xml files provided for each core are pretty barebones, so you'll want to replace those with something more like the solrconfig.xml at

~/tmp/solr/apache-solr-1.4.0/example/solr/conf/solrconfig.xml

I personally copy all the stuff from the example conf directory into any new cores I create and use that as a starting place.

The Django Connection

Are you using Django? If so, get yourself a checkout of haystack and configure your project.

Comments (0)

Commenting has been disabled for this entry

If you'd like to discuss an aspect of this post, feel free to contact me via email.