Comment faire redémarrer sphinx lorsque je redémarre mon serveur Ubuntu?

12

J'ai construit et installé sphinx search sur mon serveur ubuntu 9.04.

Comment faire démarrer automatiquement le démon sphinx au redémarrage?

anon
la source

Réponses:

13

Je ne connais pas Sphinx, mais voici l'approche de base. Créez un fichier /etc/init.d/searchd avec le contenu suivant (il y a aussi ce script , mais vous devrez probablement l'ajuster un peu):

#!/bin/bash

case "${1:-''}" in
  'start')
        # put the command to start sphinx
        # i.e., /usr/bin/searchd start or /usr/bin/searchd --daemon or whatever the command is
        ;;
  'stop')
        # stop command here
        ;;
  'restart')
        # restart command here
        ;;
  *)
        echo "Usage: $SELF start|stop|restart"
        exit 1
        ;;
esac

Exécutez ensuite ce qui suit:

$ sudo update-rc.d searchd defaults

Pour contrôler le service manuellement:

$ sudo /etc/init.d/searchd <start|stop|restart>
Ivan
la source
Ce script a parfaitement fonctionné. Pour mémoire, voici les commandes start / stop / restart que j'ai utilisées. C'est sur un serveur Ubuntu Hardy, et j'ai installé la version sphinx 0.9.8.1 depuis la source. start / usr / local / bin / searchd stop / usr / local / bin / searchd --stop restart / usr / local / bin / searchd --stop && / usr / local / bin / searchd
Apreche
A fonctionné comme un charme. Un mot d'avertissement: assurez-vous que le fichier searchd dispose des autorisations appropriées.
David
1

Nous avons déployé Sphinx pour un client sur les systèmes Debian et utilisé Runit pour gérer les processus. Nous n'avons pas eu à écrire un script d'initialisation spécial, et puisque nous utilisions Runit sur d'autres plateformes (CentOS / RHEL principalement), il était parfaitement portable.

jtimberman
la source
1

La version de sphinx fournie pour Ubuntu au moment de la rédaction (0.99) possède le script de démarrage ci-dessous.

Je l'ai réutilisé pour la version bêta 2.0.1 que j'ai compilé à partir de la source, en changeant simplement la ligne DAEMON=/usr/local/..et cela fonctionne pour moi.

#! /bin/sh
#
#       Written by Miquel van Smoorenburg <[email protected]>.
#       Modified for Debian
#       by Ian Murdock <[email protected]>.
#               Further changes by Javier Fernandez-Sanguino <[email protected]>
#               Modified for sphinx by Radu Spineanu <[email protected]>
#
#

### BEGIN INIT INFO
# Provides:          sphinxsearch
# Required-Start:    $local_fs $remote_fs $syslog $network $time
# Required-Stop:     $local_fs $remote_fs $syslog $network
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Fast standalone full-text SQL search engine
### END INIT INFO


PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/local/sphinx/bin/searchd
NAME=sphinxsearch
DESC=sphinxsearch

test -x $DAEMON || exit 0

LOGDIR=/var/log/sphinxsearch
PIDFILE=/var/run/searchd.pid
DODTIME=1                   # Time to wait for the server to die, in seconds
                            # If this value is set too low you might not
                            # let some servers to die gracefully and
                            # 'restart' will not work

# Include sphinxsearch defaults if available
if [ -f /etc/default/sphinxsearch ] ; then
    . /etc/default/sphinxsearch
fi

if [ "$START" != "yes" ]; then
  echo "To enable $NAME, edit /etc/default/sphinxsearch and set START=yes"
  exit 0
fi


set -e

running_pid()
{
    # Check if a given process pid's cmdline matches a given name
    pid=$1
    name=$2
    [ -z "$pid" ] && return 1
    [ ! -d /proc/$pid ] &&  return 1
    cmd=`cat /proc/$pid/cmdline | tr "\000" "\n"|head -n 1 |cut -d : -f 1`
    # Is this the expected child?
    [ "$cmd" != "$name" ] &&  return 1
    return 0
}

running()
{
# Check if the process is running looking at /proc
# (works for all users)

    # No pidfile, probably no daemon present
    [ ! -f "$PIDFILE" ] && return 1
    # Obtain the pid and check it against the binary name
    pid=`cat $PIDFILE`
    running_pid $pid $DAEMON || return 1
    return 0
}

force_stop() {
# Forcefully kill the process
    [ ! -f "$PIDFILE" ] && return
    if running ; then
        kill -15 $pid
        # Is it really dead?
        [ -n "$DODTIME" ] && sleep "$DODTIME"s
        if running ; then
            kill -9 $pid
            [ -n "$DODTIME" ] && sleep "$DODTIME"s
            if running ; then
                echo "Cannot kill $LABEL (pid=$pid)!"
                exit 1
            fi
        fi
    fi
    rm -f $PIDFILE
    return 0
}

case "$1" in
  start)
        echo -n "Starting $DESC: "

        # Check if we have the configuration file
        if [ ! -f /etc/sphinxsearch/sphinx.conf ]; then
            echo "Please create an /etc/sphinxsearch/sphinx.conf configuration file."
            echo "Templates are in the /etc/sphinxsearch/ directory."
            exit 0
        fi

        start-stop-daemon --start --exec ${DAEMON}
        if running ; then
            echo "$NAME."
        else
            echo " ERROR."
        fi
        ;;
  stop)
        echo -n "Stopping $DESC: "
        start-stop-daemon --stop --quiet --oknodo --pidfile $PIDFILE \
            --exec $DAEMON
        echo "$NAME."
        ;;
  force-stop)
        echo -n "Forcefully stopping $DESC: "
        force_stop
        if ! running ; then
            echo "$NAME."
        else
            echo " ERROR."
        fi
        ;;
  restart)
    echo -n "Restarting $DESC: "
        start-stop-daemon --stop --quiet --oknodo --pidfile $PIDFILE \
            --exec $DAEMON
        [ -n "$DODTIME" ] && sleep $DODTIME
        start-stop-daemon --start --exec ${DAEMON}
        echo "$NAME."
        ;;

  status)
    echo -n "$LABEL is "
    if running ;  then
        echo "running"
    else
        echo " not running."
        exit 1
    fi
    ;;
  *)
    N=/etc/init.d/$NAME
    # echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
    echo "Usage: $N {start|stop|restart|force-reload|status|force-stop}" >&2
    exit 1
    ;;
esac

exit 0
Colin Pickard
la source
Cela a également fonctionné pour moi!
ChrisInCambo
0

Je ne connais pas vraiment sphinx, mais à en juger par le manuel en ligne, vous devez avoir un script de démarrage pour exécuter le démon. Généralement, cela se fait en créant une entrée dans /etc/init.d et en la liant au répertoire /etc/rcX.d approprié. Consultez le fichier README dans /etc/init.d pour plus de détails.

Si rien d'autre, quelque chose comme ça est la réponse rapide et sale:

$ cat > /etc/init.d/sphinx
cd /usr/local/sphinx/etc
/usr/local/sphinx/bin/searchd
^D
$ ln -s /etc/init.d/sphinx /etc/init.d/rc3.d/S99sphinx
Shannon Nelson
la source
0

Créez un court fichier de script (bash, peut-être) qui contient l'équivalent de la ligne suivante:

/ chemin / vers / sphinx / installation / searchd --config /path/to/sphinx/config/sphinx.conf &

Déplacez ensuite le script vers /etc/init.d en tant que root, et chmodez le script ("chmod + x myscript.sh")

Demi
la source
0

Ajoutez un script de redémarrage au répertoire /etc/init.d.

anon
la source
0

Je suggérerais une solution encore plus simple:

Ajoutez simplement / usr / bin / searchd à /etc/rc.local avant la ligne indiquant exit 0

Brent
la source
0

S'il vous arrive d'utiliser sphinx dans votre application de rails, c'est un moyen très simple de gérer cela avec la gemme à chaque fois .

Ryan Bates en a fait une très bonne capture d'écran. Ce site ne me laissera pas mettre plus d'un lien ici mais je le recommande.

allesklar
la source
0

Jetez un œil à cet article du forum: http://sphinxsearch.com/forum/view.html?id=3568#18044

Fondamentalement, vous pouvez ajouter un travail cron qui démarrera Sphinx au redémarrage en l'exécutant à partir de la ligne de commande:

crontab -e

Ajoutez ensuite ce qui suit:

@reboot searchd --config /path/to/config.conf

un ami
la source