Solr è una piattaforma di ricerca open source compilata in Java e sviluppata dal progetto Lucene di Apache. Una delle attività principali di Solr è la ricerca full text ottimizzata.
La presente guida descrive in che modo potete attivare Solr sul vostro Managed Flex Server.
Requisiti
Per il funzionamento di Solr devono essere soddisfatti i seguenti requisiti:
- Java Runtime Environment (JRE) è disponibile sul vostro Managed Flex Server e viene costantemente aggiornato da noi.
- Solr può essere attivato a partire da Managed Flex Server M.
Installazione e attivazione
Per poter eseguire i seguenti passaggi è necessario aver effettuato l’accesso al Managed Flex Server tramite SSH.
Al fine di avere una panoramica chiara delle applicazioni installate, si consiglia di installare le applicazioni in una cartella dell’app all’interno della home clienti. In questa guida all’installazione e alla configurazione salviamo l’applicazione su ~/app/solr. Questa struttura delle cartelle può essere creata come di seguito:
mkdir -p ~/app/solr
Download di Solr
Per il download di Solr passate all’application directory creata in precedenza:
cd ~/app/solr
Poi devi scaricare l'ultima versione dal sito web di Solr e decomprimerla:
wget https://downloads.apache.org/lucene/solr/x.x.x/solr-x.x.x.tgz -O /tmp/solr.tar.gz
tar -xzf /tmp/solr.tar.gz -C ~/app/solr
rm -rf /tmp/solr.tar.gz
Si consiglia di creare un collegamento simbolico di ~/app/solr/current sulla cartella scaricata per evitare di dover utilizzare i numeri di versione nei file di configurazione. Questo collegamento simbolico può essere creato come di seguito:
ln -s ~/app/solr/solr-x.x.x ~/app/solr/current
Configurazione di Solr
Affinché Solr sia in ascolto solo su 127.0.0.1, è necessario impostare la seguente opzione nel file di configurazione ~/app/solr/current/bin/solr.in.sh:
SOLR_OPTS="$SOLR_OPTS -Djetty.host=127.0.0.1"
In caso contrario, Solr è in ascolto su qualsiasi indirizzo IP del server ed è raggiungibile da Internet!
Testare Solr
La presente sezione descrive in che modo potete avviare Solr, salvare un documento al suo interno e interrogarlo nuovamente.
Dopo aver terminato correttamente l’installazione e la configurazione, potete avviare Solr per i primi test in primo piano (argomento -f) come di seguito:
~/app/solr/current/bin/solr start -f
Poiché ora Solr funziona, tramite SSH potete creare su una seconda shell un core Solr in cui è possibile salvare e interrogare nuovamente i documenti. Il seguente comando genera un core Solr con il nome example-core.
_JAVA_OPTIONS="-Xms32m -Xmx256m" ~/app/solr/current/bin/solr create_core -c example-core
Un core Solr fa riferimento a un indice con le relative configurazioni e i relativi file di log delle transazioni.
Salvare un documento in Solr
Con il seguente script PHP salvato su ~/app/solr/hello-world-insert.php è possibile salvare un documento in Solr mediante una libreria PHP Solr. Il documento viene creato con l’ID 1, la categoria example e il testo "Hello World!".
<?php
$options = array
(
'hostname' => '127.0.0.1',
'port' => 8983,
'path' => 'solr/example-core'
);
$client = new SolrClient($options);
$doc = new SolrInputDocument();
$doc->addField('id', 1);
$doc->addField('cat', 'example');
$doc->addField('text', 'Hello World!');
$updateResponse = $client->addDocument($doc);
$client->commit();
print_r($updateResponse->getResponse());
?>
Lo script PHP può essere eseguito come di seguito e il documento viene salvato in Solr:
php ~/app/solr/hello-world-insert.php
Cercare un documento in Solr
Per cercare documenti in Solr è possibile utilizzare lo script PHP sottostante, salvato su ~/app/solr/hello-world-search.php. In questo esempio vengono cercati tutti i documenti con la categoria example e per tutti i documenti trovati vengono visualizzati i campi id, cat e text.
<?php
$options = array
(
'hostname' => '127.0.0.1',
'port' => 8983,
'path' => 'solr/example-core'
);
$client = new SolrClient($options);
$query = new SolrQuery();
$query->setQuery('cat:example');
$query->setStart(0);
$query->setRows(50);
$query->addField('id')->addField('cat')->addField('text');
$query_response = $client->query($query);
$response = $query_response->getResponse();
print_r($response);
?>
Ora è possibile eseguire anche questo script al fine di testare la funzione:
php ~/app/solr/hello-world-search.php
Integrazione
Funzionamento con il Custom Service Control
Finora avete avviato le vostre applicazioni manualmente mediante la shell. Se questa operazione può rappresentare una semplice soluzione per i test e per lo sviluppo, non lo è per il funzionamento. Il Custom Service Control (CSC) si può occupare del funzionamento e della gestione automatica della propria applicazione, ad esempio dell’avvio e dell’arresto in caso di interventi di manutenzione sul server.
Nel caso in cui finora non abbiate ancora utilizzato il CSC, è necessario avviarlo al fine di creare i dati di configurazione necessari:
hpservices supervisord start
supervisord successfully started
La configurazione di Solr nel CSC è molto semplice. Create dunque un nuovo Custom Service per Solr:
hpservices supervisord add solr
successfully created dir for solr: /home/username/.services/supervisord/solr
successfully created dir for solr: /home/username/.services/supervisord/solr/log
supervisord service config file written: /home/username/.services/supervisord/solr/service.conf
Nel file ~/.services/supervisord/solr/service.conf viene creato uno schema di configurazione per il nuovo servizio. Per Solr è necessario adeguare solo il command, mentre tutti gli altri valori proposti possono essere adottati (rimuovere il punto e virgola all’inizio della riga).
[program:solr]
command=%(ENV_HOME)s/app/solr/current/bin/solr start -f
directory=%(ENV_HOME)s/app/solr/ ; directory to cwd to before exec (default no cwd)
autostart=true ; start application at supervisord start (default: true)
stopwaitsecs=10 ; max num secs to wait before SIGKILL (default 10)
stdout_logfile=%(ENV_HOME)s/.services/supervisord/solr/log/default.log
stdout_logfile_maxbytes=1MB ; filesize at which to rotate logfiles (default ist 50MB)
stdout_logfile_backups=10 ; number of stdout logfile backups (0 means none, default 10)
stderr_logfile=%(ENV_HOME)s/.services/supervisord/solr/log/default.err
stderr_logfile_maxbytes=1MB ; filesize at which to rotate logfiles (default is 50MB)
stderr_logfile_backups=10 ; number of stderr logfile backups (0 means none, default 10)
Affinché il Supervisord possa monitorare il processo di Solr, è assolutamente necessario far funzionare Solr in primo piano (opzione -f).
Qualora il processo di Solr continuasse ad essere eseguito per i test indicati precedentemente, interromperlo innanzitutto con Ctrl + C.
Con supervisorctl update è possibile attivare una nuova configurazione di Solr:
supervisorctl update
solr: added process group
Attenzione: se si riceve un errore, è necessario eseguire una volta “hpservices supervisord start”.
Per informazioni più dettagliate sull’uso e sulle possibilità disponibili con il CSC fate riferimento alla Custom Service Control.
Proxy web (Nginx) sull’interfaccia di amministrazione di Solr
Per rendere la vostra applicazione accessibile tramite HTTP(s), è necessario configurare il sito web nel pannello di controllo Hostpoint in modo che il server web inoltri tutte le richieste a Solr come proxy.
Nel vostro pannello di controllo Hostpoint create un sito web del tipo “Proxy Nginx su applicazione propria”:
Indirizzo del server e porta
La funzione proxy si aspetta che l’applicazione sia in ascolto all’indirizzo IPv4 di loopback 127.0.0.1 ed è quindi necessario indicare solo la porta: 8983.
Proteggere l’accesso con una password
Affinché l’accesso al sito web sia protetto dall’esterno con nome utente e password, è possibile creare un file htpasswd come di seguito:
htpasswd -c ~/app/solr/.htpasswd admin
Questo file deve essere memorizzato nel pannello di controllo di Hostpoint sotto «Siti Web» > «Impstazioni web» > «Protezione tramite password».
Una volta terminata correttamente la configurazione, potrete accedere al sito web solo inserendo nome utente e password.
Ulteriori informazioni
- Custom Service Control (CSC)
- Solr panoramica: http://lucene.apache.org/solr/guide/7_6/a-quick-overview.html
- Solr download: https://lucene.apache.org/solr/mirrors-solr-latest-redir.html
- Solr tutorials: http://lucene.apache.org/solr/guide/7_6/solr-tutorial.html#solr-tutorial
- PHP Solr Esempi: http://php.net/manual/de/solr.examples.php
- Reverse Proxy: https://it.wikipedia.org/wiki/Reverse_proxy
Per richieste di supporto la preghiamo di usare invece questo modulo.