Solr and tomcat
Jump to navigation
Jump to search
Running a solr index server under a tomcat 8 server:
Directory structure
root@j:/opt# ls -la drwxr-xr-x 12 root root 4096 Mar 28 12:57 . drwxr-xr-x 22 root root 4096 Feb 5 12:35 .. drwxr-xr-x 9 root root 4096 Feb 24 20:51 apache-tomcat-8.0.20 drwxr-xr-x 9 root root 4096 Mar 28 12:57 apache-tomcat-8.0.21 lrwxrwxrwx 1 root root 11 Jan 12 21:00 java -> jdk1.8.0_25 drwxr-xr-x 8 root root 4096 Sep 18 2014 jdk1.8.0_25 lrwxrwxrwx 1 root root 11 Jan 12 21:01 solr -> solr-4.10.3 drwxr-xr-x 8 tomcat tomcat 4096 Jan 12 21:01 solr-4.10.3 drwxr-xr-x 6 tomcat tomcat 4096 Jan 13 09:12 solrhome lrwxrwxrwx 1 root root 20 Mar 28 12:57 tomcat -> apache-tomcat-8.0.21 drwxr-xr-x 11 tomcat tomcat 4096 Apr 3 17:15 tomcatbase
And define the tomcat/catalina base path within /etc/default/tomcat
JAVA_HOME=/opt/java
JAVA_OPTS="-Djava.awt.headless=true -Xmx1024M -XX:+CMSClassUnloadingEnabled -XX:+UseConcMarkSweepGC"
AUTHBIND=yes
CATALINA_BASE=/opt/tomcatbase
TOMCAT_SECURITY=no
Setting things up
Make a copy or a symlink of the solr war file solr-4.10.3.war to solr.war, because the webapps folder hase to be the base name of the war file.
Create the file /opt/tomcatbase/conf/Catalina/localhost/solr.xml
<Context docBase="/opt/solr/dist/solr.war" crossContext="true" >
<Environment name="solr/home" type="java.lang.String" value="/opt/solrhome" override="true" />
</Context>
After unpacking and deploying the war archive you have to add and change some parts within the webapps/solr path:
Copy the jar files for logging from /opt/solr/example/lib/ext/*.jar to the WEB-INF/lib/ folder including the log4j.properties file.
Add the security settings to the web.xml file:
...
<security-constraint>
<web-resource-collection>
<web-resource-name>Solr authenticated application</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>solr-gui</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>Test Realm</realm-name>
</login-config>
<security-role>
<role-name>solr-gui</role-name>
</security-role>
...
And create that role and some users for it within the global /opt/tomcatbase/conf/tomcat-users.xml file