Login
Newsletter
Do, 20. April 2017, 15:00

Nextcloud mit Solr-Volltextsuche ausstatten

Der folgende kurze Tipp zeigt auf, wie man eine Nextcloud-Installation mit einer Volltextsuche austattet. Als Suchmaschine wird hier Apache Solr verwendet.

Vorausgesetzt wird ein bereits installiertes Nextcloud 11.0.2, das unter dem Pfad /var/www/nextcloud zu finden ist.

Benötigt werden die Java-JRE 1.8, erhältlich bei Oracle oder der jeweiligen Linux-Distribution, und das Programm daemon, das über die Paketverwaltung installiert werden kann.

Alle nun folgenden Schritte werden als User root durchgeführt. Im Beispiel wird eine externe Festplatte, die unter /mnt/EXTUSB gemountet ist, zum Speichern von Solr verwendet. Wer Solr an einem anderen Ort installieren möchte, sollte /mnt/EXTUSB durch den tatsächlichen Pfad ersetzen.

1. Lokale Verzeichnisse vorbereiten, aktuelle Version von Solr herunterladen und entpacken:

$ mkdir -p /mnt/EXTUSB/solr
$ cd /mnt/EXTUSB/solr
$ wget http://mirrors.ircam.fr/pub/apache/lucene/solr/6.5.0/solr-6.5.0.tgz
$ tar -zxvf solr-6.5.0.tgz
$ cd solr-6.5.0/server
$ cd solr
$ cp -fr configsets/basic_configs nextant

2. Start der solr-Datenbank mit 128 MB RAM (oder mehr, je nach verfügbarem RAM des Rechners) und Ändern des Besitzers der Dateien:

$ cd ../..
$ ./bin/solr start -m 128M

$ ./bin/solr create -c nextant

$ chown www-data:www-data /var/solr -R

3. Erzeugen des Init-Skripts /etc/init.d/solr:

$ nano /etc/init.d/solr
#!/bin/sh

# Prerequisites:
# 1. Solr needs to be installed at /mnt/EXTUSB/solr/solr-6.5.0
# 2. daemon needs to be installed
# 3. Script needs to be executed by root

# This script will launch Solr in a mode that will automatically respawn
if it
# crashes. Output will be sent to /var/log/solr/solr.log. A PID file will be
# created in the standard location.

start () {
    echo -n "Starting solr..."

    # Start daemon
    daemon --chdir='/mnt/EXTUSB/solr/solr-6.5.0' --command "sudo -u
www-data /mnt/EXTUSB/solr/solr-6.5.0/bin/solr start -m 128m" --respawn
--output=/var/log/solr/solr.log --name=solr --verbose

    RETVAL=$?
    if [ $RETVAL = 0 ]
    then
        echo "done."
    else
        echo "failed. See error code for more information."
    fi
    return $RETVAL
}

stop () {
    # Stop daemon
    echo -n "Stopping solr..."

    daemon --chdir='/mnt/EXTUSB/solr/solr-6.5.0' --command "sudo -u
www-data /mnt/EXTUSB/solr/solr-6.5.0/bin/solr stop"

    RETVAL=$?

    if [ $RETVAL = 0 ]
    then
        echo "Done."
    else
        echo "Failed. See error code for more information."
    fi
    return $RETVAL
}


restart () {
    daemon --restart --name=solr  --verbose
}


status () {
    # Report on the status of the daemon
    daemon --running --verbose --name=solr
    return $?
}


case "$1" in
    start)
        start
    ;;
    status)
        status
    ;;
    stop)
        stop
    ;;
    restart)
        restart
    ;;
    *)
        echo $"Usage: solr {start|status|stop|restart}"
        exit 3
    ;;
esac

exit $RETVAL

4. Init-Skript ausführbar machen:

$ chmod 755 /etc/init.d/solr

5. Erzeugen des Cron-Jobs als User root. Folgende Zeilen hinzufügen:

$ crontab -e
#Update solr index to index every 3rd hour
00 */3 * * * sudo -u www-data php /var/www/nextcloud/occ nextant:index

6. In Nextcloud als Administrator die App nextant hinzufügen.

7. Erstmaliges Erzeugen des Index:

$ sudo -u www-data php /var/www/nextcloud/occ nextant:index

Fertig. In Nextcloud kann nun über die Suche nach Begriffen gesucht werden, und dabei werden auch Dateiinhalte berücksichtigt.

Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten