-
Notifications
You must be signed in to change notification settings - Fork 0
Configure Solr on Ubuntu, the quickest way
Note: I used the wiki page Ubuntu-10.04-lts-server as basis of this tutorial.
More infos on the general installation at :http://wiki.apache.org/solr/SolrTomcat
One of the most efficient way to deploy a Solr server is to encapsulate it in a Java servlet, the Apache Foundation (the provider of Solr) brought to us Tomcat, a powerfull http server written in Java.
Because tomcat and solr are Java based softwares we need the Java environment (As it is advised in the Solr wiki : prefere a full JDK to a simple JRE.)
$ sudo apt-get install openjdk-6-jdk
Note : Working on Amazon EC2 instance, I had to upgrade temporarly my “micro” instance to “medium”, because of special memory needs during java’s installation.
For ubuntu (tested with 10.4 LTS), there is an unique package to install, it will take care of installing both Tomcat & Solr, plus the integration of Solr in Tomcat.
$ sudo apt-get install solr-tomcat
then let’s start the server
$ sudo service tomcat6 start
Ok it is done !
- Solr server responds at
http://localhost:8080/solr
- and the config & index will be stored at :
/usr/share/solr/
In order to use it with Sunspot you’ll have to copy conf/schema.xml
& conf/solrconfig.xml
from your application to /usr/share/solr/
or /usr/share/solr/conf
(Ubuntu 12.04).
But, indeed, you should read the tutorial further to understand why you shouldn’t use Solr directly.
For now your data are stored in a folder of your system not dedicated to a specific user or application.
It is quite common to read that a public server should use a dedicated user account with constraint privileges. (internet is full of it)
If like me your not totaly happy with it, follow the next steps to customize the whole thing. I won’t explain you how to start Tomcat as another user (Google it), but how to choose your Solr home directory
These utilities could be usefull later, it cost nothing to install them.
$ sudo apt-get install tomcat6-admin
Once installed, you’ll have to grant some user
$ sudo nano /etc/tomcat6/tomcat-users.xml
and paste these lines (change username and password as you whish)
<role rolename="manager"/>
<role rolename="admin"/>
<user username="tomcat" password="tomcat" roles="manager,admin"/>
At this point Solr should already be running smoothly. Try Starting tomcat server.
$ sudo service tomcat6 start
As it is installed as a service, it is quite cool to manage (you can use start|stop|restart verbs)
- Now, reach it with your web browser :
http://localhost:8080/
Tomcat should say : It works ! - And Solr should be accessible at :
http://localhost:8080/solr
if it is ok, take a look to the “Solr Admin” section.
- If you installed the management package, take a look at :
http://localhost:8080/manager/html
andhttp://localhost:8080/host-manager/html
Solr is a Java software, when the server starts it create an instance of Solr, which take place in a home directory and get an single uri to access it. let’s configure them.
In the Solr web admin interface you could check on the third line the default home directory SolrHome=/usr/share/solr/
let’s edit the config file :
$ sudo nano /var/lib/tomcat6/conf/Catalina/localhost/solr.xml
and change the fragment below :
<Environment name="solr/home" ..... value="/my-directory/solr" ....>
Tomcat use the filename (minus “.xml”) as URI to access the instance. If you want to change the uri of Solr just rename the previous file.
If you want several instances of Solr on the same server (several apps, or environments), create a new copy of the previous file
solr-dev.xml
can be reached at http://localhost:8080/solr-dev/
solr-prod.xml
can be reached at http://localhost:8080/solr-prod/
Will give you two Solr indexes (one index in each solr/home) at two differents uri.
This is cool !
We said to tomcat to point to an unexisting folder, let’s create it by copying the default solr folder.
$ sudo cp -prL /usr/share/solr/ /my-directory/
copy options are : r = recursive, p = preserve (ownership, timespamps…), L= copy symlink as real folders & files
If you have a specific user running tomcat :
sudo chown -R tomcat:tomcat /my-directory
The directory you just copied look a bit like our solr/ folder in our app. let’s copy our application configuration files (beware of preserving the R&W access, do a copy/paste of the content if you are not sure) conf/schema.xml
& conf/solrconfig.xml
in it.
Note : when I copy conf/solrconfig.xml
to the new Solr instance it fails to start. But I successfuly use the default file.
It could be something like :
production:
solr:
hostname: solrserver
port: 8080 #tomcat defaults to port 8080
path: '/solr-prod' # or '/solr' (ubuntu 12.04)
log_level: WARNING
development:
solr:
hostname: localhost
port: 8982
log_level: INFO
test:
solr:
hostname: localhost
port: 8981
log_level: WARNING
for now your index is empty, don’t forget to reindex everything.
After indexing, you’ll be able to see some infos and stats of your index at http://localhost:8080/solr/admin/schema.jsp