How-To installare Solr su Ubuntu 14.04

Solr logo

Questo How-To illustra il processo di installazione di Solr su Ubuntu server 14.04 LTS partendo dal pacchetto scaricabile direttamente dal sito del progetto (http://lucene.apache.org/solr), questa metodologia di installazione è più lunga di quella tramite pacchetti ma consente di installare un Solr in versione aggiornata contrariamente a quella resa disponibile per mezzo dei pacchetti.

Installiamo Java


sudo apt-get -y install openjdk-7-jdk
mkdir /usr/java
ln -s /usr/lib/jvm/java-7-openjdk-amd64 /usr/java/default

Installiamo Solr

Per iniziare preleviamo il paccheto con solr e lo posizioniamo in un posto opportuno (in questo momento Solr è arrivata alle release 4.7.2):

cd /opt
wget http://archive.apache.org/dist/lucene/solr/4.7.2/solr-4.7.2.tgz
tar -xvf solr-4.7.2.tgz
cp -R solr-4.7.2/example /opt/solr
cd /opt/solr
java -jar start.jar
/etc/default/jetty

Solr dovrebbe essere ora avviato quindi possiamo fare una verifica accedendo a http://TUOIP:8983/solr , se otteniamo una risposta significa che fin qui tutto ha funzionato e quindi possiamo tranquillamente interrompere l'esecuzione di Jetty con CTRL+C nella nosta console SSH.

Configuriamo Jetty

La nostra configurazione prevede che Solr sia eseguito grazie al web server/Application Container Jetty quindi ci tocca configurarlo!
Per iniziare creiamo la configurazione di Jetty

(nano /etc/default/jetty)

e riempiamo il file con il seguente file di configurazione

NO_START=0 # Start on boot
JAVA_OPTIONS="-Dsolr.solr.home=/opt/solr/solr $JAVA_OPTIONS"
JAVA_HOME=/usr/java/default
JETTY_HOME=/opt/solr
JETTY_USER=solr
JETTY_LOGS=/opt/solr/logs



ora che Jetty è configurato insegnamogli a fare i log:

nano /opt/solr/etc/jetty-logging.xml


e mettiamo nel file di configurazione:

<?xml version="1.0"?>
  <!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">
  <!-- =========================================== -->
  <!-- Configure stderr and stdout to a Jetty rollover log file -->
  <!-- this configuration file should be used in combination with -->
  <!-- other configuration files.  e.g. -->
  <!--    java -jar start.jar etc/jetty-logging.xml etc/jetty.xml -->
  <!-- =========================================== -->
  <Configure id="Server" class="org.mortbay.jetty.Server">

      <New id="ServerLog" class="java.io.PrintStream">
        <Arg>
          <New class="org.mortbay.util.RolloverFileOutputStream">
            <Arg><SystemProperty name="jetty.logs" default="."/>/yyyy_mm_dd.stderrout.log</Arg>
            <Arg type="boolean">false</Arg>
            <Arg type="int">90</Arg>
            <Arg><Call class="java.util.TimeZone" name="getTimeZone"><Arg>GMT</Arg></Call></Arg>
            <Get id="ServerLogName" name="datedFilename"/>
          </New>
        </Arg>
      </New>

      <Call class="org.mortbay.log.Log" name="info"><Arg>Redirecting stderr/stdout to <Ref id="ServerLogName"/></Arg></Call>
      <Call class="java.lang.System" name="setErr"><Arg><Ref id="ServerLog"/></Arg></Call>
      <Call class="java.lang.System" name="setOut"><Arg><Ref id="ServerLog"/></Arg></Call>
  </Configure>


Ora che le configurazioni sono ok procuriamoci uno script di avvio per jetty:

sudo wget -O /etc/init.d/jetty http://dev.eclipse.org/svnroot/rt/org.eclipse.jetty/jetty/trunk/jetty-distribution/src/main/resources/bin/jetty.sh
sudo chmod a+x /etc/init.d/jetty
sudo update-rc.d jetty defaults
/etc/init.d/jetty start

Configuriamo il Core di Solr

Solr ha la possibilità di gestire più di indice per le nostre ricerche ed arrivati a questo punto conviene configurare meglio il core di esempio fornitoci nel pacchetto.

Verifichiamo nuovamente che via web l'interfaccia di Solr http://TUOIP:8983/solr risponda altimenti qualcosa è andato storto e conviene verificare di aver seguito tutta la guida fin qui.
Se il server risponde ora ci tocchera risolvere gli imbarazzanti log che ci vengono segnalati dall'interfaccia di amministrazione nella sezione log, fortunamente sono solo problemi del Core di esempio (non si sa come ma l'esempio è sbagliato!)
Per prima cosa rendiamoci disponibili le librerie aggiuntive in una posizione raggiungibile dal nostro Solr quindi:

/etc/init.d/jetty stop
cd /opt/solr
ln -s /opt/solr-4.7.2/dist/ dist
ln -s /opt/solr-4.7.2/contrib/ contrib

Ora che le librerie sono all'interno della nostra installazione andiamo a correggere la configurazione presente in /opt/solr/solr/collection1/solrconfig.xml da cosi:

 
<lib dir="../../../contrib/extraction/lib" regex=".*\.jar" />
<lib dir="../../../dist/" regex="solr-cell-\d.*\.jar" />

<lib dir="../../../contrib/clustering/lib/" regex=".*\.jar" />
<lib dir="../../../dist/" regex="solr-clustering-\d.*\.jar" />

<lib dir="../../../contrib/langid/lib/" regex=".*\.jar" />
<lib dir="../../../dist/" regex="solr-langid-\d.*\.jar" />

<lib dir="../../../contrib/velocity/lib" regex=".*\.jar" />
<lib dir="../../../dist/" regex="solr-velocity-\d.*\.jar" />



a cosi:

 
<lib dir="../../contrib/extraction/lib" regex=".*\.jar" />
<lib dir="../../dist/" regex="solr-cell-\d.*\.jar" />

<lib dir="../../contrib/clustering/lib/" regex=".*\.jar" />
<lib dir="../../dist/" regex="solr-clustering-\d.*\.jar" />

<lib dir="../../contrib/langid/lib/" regex=".*\.jar" />
<lib dir="../../dist/" regex="solr-langid-\d.*\.jar" />

<lib dir="../../contrib/velocity/lib" regex=".*\.jar" />
<lib dir="../../dist/" regex="solr-velocity-\d.*\.jar" />

Ora che la configurazione dovrebbe essere facciamo una piccola verifica quindi:

/etc/init.d/jetty start


e verifichiamo che sia tutto su senza errori!

Rendiamo il primo Core un Template

A questo punto la configurazione del primo "core modello" è ok ma potrebbe essere per noi meglio
rinominarlo in qualcosa di pi "parlante" e quindi:

/etc/init.d/jetty stop
cd /opt/solr/solr
mv collection1 template_base
echo "name=template_base" > template_base/core.properties

Creiamo il primo Core!

Bene ora abbiamo un modello di core che è pronto per essere clonato per creare i core (repository/indici)
da utilizzare veramente quindi, per creare il primo core "da utilizzare" ci basta:

cd /opt/solr/solr
cp -R template_base paperino
echo "name=paperino" > template_base/core.properties
chown solr:solr paperino/ -R
/etc/init.d/jetty start


Il presente How-To nasce dall'unione di innumerevoli guide ed è stato provato con un Ubuntu 14.04 intonsa, volendo ringraziare l'how-to che di più mi ha aiutato ringrazio questo: https://www.digitalocean.com/community/articles/how-to-install-solr-on-ubuntu-14-04