Enabling CORS in Solr in a Cloudera environment
This is a continuation of this post: Enable CORS in Apache Solr but this time for an instance that is running in cloudera.
No idea how it was installed since it was already there, but doing some investigation and avoiding reading the docs at all costs I arrived at this solution.
The idea of this post is to make you avoid reading the docs too!
First I will give names to some things that may be different for you:
CDH=/opt/cloudera/parcels/CDH-5.3.2-1.cdh5.3.2.p0.10/ CDH_USER=cloudera-scm CDH_GROUP=cloudera-scm
Now do:
cd $CDH/jars/ wget http://repo1.maven.org/maven2/org/eclipse/jetty/jetty-servlets/9.1.5.v20140505/jetty-servlets-9.1.5.v20140505.jar wget http://repo1.maven.org/maven2/org/eclipse/jetty/jetty-util/9.1.5.v20140505/jetty-util-9.1.5.v20140505.jar cd $CDH/lib/bigtop-tomcat/lib/ ln -s $CDH/jars/jetty-servlets-9.1.5.v20140505.jar ln -s $CDH/jars/jetty-util-9.1.5.v20140505.jar chown $CDH_USER.$CDH_GROUP jetty-servlets-9.1.5.v20140505.jar chown -h $CDH_USER.$CDH_GROUP jetty-servlets-9.1.5.v20140505.jar chown $CDH_USER.$CDH_GROUP jetty-util-9.1.5.v20140505.jar chown -h $CDH_USER.$CDH_GROUP jetty-util-9.1.5.v20140505.jar
Then create $CDH/lib/bigtop-tomcat/bin/setenv.sh with your favorite text editor and put in it the following:
CLASSPATH="$CATALINA_HOME"/lib/jetty-util-9.1.5.v20140505.jar:"$CATALINA_HOME"/lib/jetty-servlets-9.1.5.v20140505.jar:"$CATALINA_HOME"/lib/servlet-api.jar
Open $CDH/etc/solr/tomcat-conf.dist/WEB-INF/web.xml with your text editor and follow the instructions at Enable CORS in Apache Solr
The way to know if it worked is to open the Solr admin panel, if it loads it works, if it doesn't look at the logs, mine are at /var/log/solr/. To be sure that the classpath was set correctly from setenv.sh look in the solr admin page in the "Java Properties" section for the java.class.path variable, it should have the class path you set in setenv.hs plus some extra stuff (mainly bootstrap.jar).
If the admin page doesn't load (tomcat 404) look at the logs, some class loading error may be happening, comment the config you added in web.xml and restart.
The version I'm using of the jetty jars is because newer versions are compiled for java 1.8 and I have 1.7, use older/newer depending on your java version.